home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / standards / posix / 1003.2 / all < prev    next >
Text File  |  1993-07-15  |  3MB  |  78,013 lines

  1.          IEEE P1003.2 Draft 11.2 - September 1991
  2.  
  3.  
  4.             Copyright (c) 1991 by the
  5.      Institute of Electrical and Electronics Engineers, Inc.
  6.                345 East 47th Street
  7.              New York, NY 10017, USA
  8.            All rights reserved as an unpublished work.
  9.  
  10.        This is an unapproved and unpublished IEEE Standards Draft,
  11.        subject to change.  The publication, distribution, or
  12.        copying of this draft, as well as all derivative    works based
  13.        on this draft, is expressly prohibited except as    set forth
  14.        below.
  15.  
  16.        Permission is hereby granted for    IEEE Standards Committee
  17.        participants to reproduce this document for purposes of IEEE
  18.        standardization activities only,    and subject to the
  19.        restrictions contained herein.
  20.  
  21.        Permission is hereby also granted for member bodies and
  22.        technical committees of ISO and IEC to reproduce    this
  23.        document    for purposes of    developing a national position,
  24.        subject to the restrictions contained herein.
  25.  
  26.        Permission is hereby also granted to the    preceding entities
  27.        to make limited copies of this document in an electronic
  28.        form only for the stated    activities.
  29.  
  30.        The following restrictions apply    to reproducing or
  31.        transmitting the    document in any    form:  1) all copies or
  32.        portions    thereof    must identify the document's IEEE project
  33.        number and draft    number,    and must be accompanied    by this
  34.        entire notice in    a prominent location; 2) no portion of this
  35.        document    may be redistributed in    any modified or    abridged
  36.        form without the    prior approval of the IEEE Standards
  37.        Department.
  38.  
  39.        Other entities seeking permission to reproduce this
  40.        document, or any    portion    thereof, for standardization or
  41.        other activities, must contact the IEEE Standards Department
  42.        for the appropriate license.
  43.  
  44.        Use of information contained in this unapproved draft is    at
  45.        your own    risk.
  46.  
  47.         IEEE Standards Department
  48.         Copyright and Permissions
  49.         445    Hoes Lane, P.O.    Box 1331
  50.         Piscataway,    NJ 08855-1331, USA
  51.         +1 (908) 562-3800
  52.         +1 (908) 562-1571 [FAX]
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.                                                         P1003.2 Draft 11.2
  73.                                                        ISO/IEC CD 9945-2.2
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.                              STANDARDS PROJECT
  83.  
  84.                Draft Standard for Information Technology --
  85.                 Portable Operating System Interface (POSIX)
  86.                                   Part 2:
  87.                             Shell and Utilities
  88.  
  89.  
  90.                                   Sponsor
  91.                  Technical Committee on Operating Systems
  92.                        and Application Environments
  93.                                   of the
  94.                            IEEE Computer Society
  95.  
  96.                       Work Item Number: JTC 1.22.21.2
  97.  
  98.  
  99.  Abstract:  ISO/IEC 9945-2: 199x (IEEE Std 1003.2-199x)  is  part  of  the
  100.  POSIX  series  of  standards for applications and user interfaces to open
  101.  systems.  It defines  the  applications  interface  to  a  shell  command
  102.  language and a set of utility programs for complex data manipulation.
  103.  
  104.  Keywords:  API, application portability, data processing,  open  systems,
  105.  operating system, portable application, POSIX, shell and utilities
  106.  
  107.  
  108.                               P1003.2 / D11.2
  109.                               September 1991
  110.  
  111.  
  112.                          Copyright (c) 1991 by the
  113.           Institute of Electrical and Electronics Engineers, Inc.
  114.                            345 East 47th Street
  115.                           New York, NY 10017, USA
  116.                            All rights reserved.
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  _T_h_i_s _i_s _a_n _u_n_a_p_p_r_o_v_e_d _I_E_E_E _S_t_a_n_d_a_r_d_s _D_r_a_f_t, _s_u_b_j_e_c_t _t_o _c_h_a_n_g_e. _P_e_r_m_i_s_s_i_o_n
  170.  _i_s _h_e_r_e_b_y _g_r_a_n_t_e_d _f_o_r _I_E_E_E _S_t_a_n_d_a_r_d_s _C_o_m_m_i_t_t_e_e _p_a_r_t_i_c_i_p_a_n_t_s _t_o _r_e_p_r_o_d_u_c_e
  171.  _t_h_i_s _d_o_c_u_m_e_n_t _f_o_r _p_u_r_p_o_s_e_s _o_f _I_E_E_E _s_t_a_n_d_a_r_d_i_z_a_t_i_o_n _a_c_t_i_v_i_t_i_e_s. _P_e_r_m_i_s_s_i_o_n
  172.  _i_s _a_l_s_o _g_r_a_n_t_e_d _f_o_r _m_e_m_b_e_r _b_o_d_i_e_s _a_n_d _t_e_c_h_n_i_c_a_l _c_o_m_m_i_t_t_e_e_s _o_f _I_S_O _a_n_d _I_E_C
  173.  _t_o _r_e_p_r_o_d_u_c_e _t_h_i_s _d_o_c_u_m_e_n_t _f_o_r _p_u_r_p_o_s_e_s _o_f _d_e_v_e_l_o_p_i_n_g _a _n_a_t_i_o_n_a_l _p_o_s_i_t_i_o_n.
  174.      _O_t_h_e_r _e_n_t_i_t_i_e_s _s_e_e_k_i_n_g _p_e_r_m_i_s_s_i_o_n _t_o _r_e_p_r_o_d_u_c_e _t_h_i_s _d_o_c_u_m_e_n_t _f_o_r
  175.    _s_t_a_n_d_a_r_d_i_z_a_t_i_o_n _o_r _o_t_h_e_r _a_c_t_i_v_i_t_i_e_s, _o_r _t_o _r_e_p_r_o_d_u_c_e _p_o_r_t_i_o_n_s _o_f _t_h_i_s
  176.      _d_o_c_u_m_e_n_t _f_o_r _t_h_e_s_e _o_r _o_t_h_e_r _u_s_e_s, _m_u_s_t _c_o_n_t_a_c_t _t_h_e _I_E_E_E _S_t_a_n_d_a_r_d_s
  177.  _D_e_p_a_r_t_m_e_n_t _f_o_r _t_h_e _a_p_p_r_o_p_r_i_a_t_e _l_i_c_e_n_s_e.  _U_s_e _o_f _i_n_f_o_r_m_a_t_i_o_n _c_o_n_t_a_i_n_e_d _i_n
  178.                 _t_h_i_s _u_n_a_p_p_r_o_v_e_d _d_r_a_f_t _i_s _a_t _y_o_u_r _o_w_n _r_i_s_k.
  179.  
  180.  IEEE Standards Department
  181.  Copyright and Permissions
  182.  445 Hoes Lane, P.O. Box 1331
  183.  Piscataway, NJ 08855-1331, USA
  184.  +1 (908) 562-3800
  185.  +1 (908) 562-1571 [FAX]
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  _S_e_p_t_e_m_b_e_r _1_9_9_1                                                   _S_H _X_X_X_X_X
  205.  
  206.  BEGIN_RATIONALE
  207.  
  208.  _E_d_i_t_o_r'_s _N_o_t_e_s
  209.  
  210.  The IEEE ballot for Draft 11.2 is due at the  IEEE  Standards  Office  on  2
  211.  _2222_1111 _OOOO_cccc_tttt_oooo_bbbb_eeee_rrrr _1111_9999_9999_1111.   You are also asked to e-mail any balloting comments to  2
  212.  me:  hlj@posix.com.  Please read the balloting instructions in Annex G.    2
  213.  
  214.  This  document  is  also  registered  as  ISO/IEC   CD   9945-2.2.    The  2
  215.  international  balloting  period  is  unrelated  to  the  IEEE balloting.  2
  216.  Member bodies, please  consult  any  accompanying  materials  from  SC22.  2
  217.  Also, please read the remainder of these Editor Notes to see explanations  2
  218.  of  stylistic  differences  between  a  draft  and  the  final   standard  2
  219.  (copyright notices, inline rationale, etc.).                               2
  220.  
  221.  The IEEE balloting will be on hiatus during the  international  balloting  2
  222.  period,  which  is  probably  scheduled  to complete at the May 1992 WG15  2
  223.  meeting.  This is in accordance with the WG15 Synchronization Plan, which  2
  224.  calls for coordinated balloting to result in the approval of an IEEE/ANSI  2
  225.  standard that is identical to the ISO/IEC  Draft  International  Standard  2
  226.  (DIS).   There  will be a final recirculation of a full draft (12) to the  2
  227.  IEEE balloting group before it is sent to the Standards Board.             2
  228.  
  229.  This section will not appear in the  final  document.   It  is  used  for  2
  230.  editorial  comments  concerning  this  draft.   Draft  11.2  is the fifth  2
  231.  recirculation of the balloting process that began in December  1988  with  2
  232.  Draft 8.  Please consult Annex G and the cover letter for the ballot that
  233.  accompanied this draft  for  information  on  how  the  recirculation  is
  234.  accomplished.
  235.  
  236.  This draft uses small numbers in the right margin in lieu of change bars.  2
  237.  ``2''  denotes  changes  from  Draft  11.1  to Draft 11.2.  ``1'' denotes  2
  238.  changes from Draft 11 to Draft 11.1.  All diff-marks prior to Draft  11.1  1
  239.  have been removed.  Trivial informative (i.e., non-normative) changes and
  240.  purely editorial changes such as grammar, spelling, or  cross  references
  241.  are not diff-marked.
  242.  
  243.  There are two versions of Draft 11.2 in circulation.   The  full  printed  2
  244.  version  was  sent for SC22 balloting and is also available from the IEEE  2
  245.  for a duplication fee [call (800) 678-IEEE or  +1 (908) 981-1393  outside  2
  246.  the  US].  The version sent to the IEEE balloting group consists (mostly)  1
  247.  of pages containing normative changes.  This was done to focus  balloting  1
  248.  group  attention  on  the  changes being balloted and to reduce costs and  1
  249.  administrative time.  The changes-only version contains a few handwritten  1
  250.  pointers  in  the  margins to show context where it would not be obvious;  1
  251.  numbers near the normal page numbers show what the corresponding Draft 11  1
  252.  page number would be.                                                      1
  253.  
  254.  
  255.                Copyright c 1991 IEEE.  All rights reserved.
  256.       This is an unapproved IEEE Standards Draft, subject to change.
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  The following minor global changes have been made without diff-marks:
  271.  
  272.      - Instances  of  the  verbs   ``print,''   ``report,''   ``display,''
  273.        ``issue,'' and ``list'' are being changed to ``write'' as part of a
  274.        general cleanup related to the UPE, where ``write'' and ``display''
  275.        have  precise  meanings.   This  is probably not completed and will
  276.        continue  throughout  ballot  resolution  and  the  final   editing
  277.        process.
  278.  
  279.  ISO and IEEE have tightened up the requirements for the use of ``shall.''
  280.  We  have  been directed that all sentences that are currently declarative
  281.  must be changed to use the ``shall'' form if  they  pose  a  requirement:
  282.  ``The  status  is  zero''  -> ``The status shall be zero.''  One specific
  283.  instance of  this  was  changing  ``The  following  options/operands  are
  284.  available'' to ``The following options/operands shall be supported by the
  285.  implementation.''   Another:   ``The  foo  utility  follows  the  utility
  286.  argument syntax standard described in 2.11.2'' to ``The foo utility shall
  287.  conform to the utility argument syntax guidelines described in  2.10.2.''
  288.  It  is  a  tedious  process to do all these translations and they are not
  289.  complete.  They  will  completed  on  a  draft-by-draft  basis.   In  the
  290.  meantime,  please  assume  that  all  declarative  sentences  mean to use
  291.  ``shall''  and  treat  them  as  either  implementation  or   application
  292.  requirements   unless  they  specifically  say  ``may,''  ``should,''  or
  293.  ``can.''
  294.  
  295.  The rationale text for all the sections has been temporarily  moved  from
  296.  Annex  E  and  interspersed with the appropriate sections.  The rationale
  297.  sections are identified with the phrase ``(_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t  _a  _p_a_r_t
  298.  _o_f  _P_1_0_0_3._2)''  in  the  heading.   This colocation of rationale with its
  299.  accompanying text was  done  to  encourage  the  Technical  Reviewers  to
  300.  maintain  the  rationale  text,  as  well  as provide explanations to the
  301.  reviewers and balloters.  Not all of the Rationale sections have contents
  302.  as  of  this draft.  The empty sections may be partially distracting, but
  303.  we feel it is imperative to keep them there to  encourage  the  Technical
  304.  Reviewers to provide rationale as needed.
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.                Copyright c 1991 IEEE.  All rights reserved.
  322.       This is an unapproved IEEE Standards Draft, subject to change.
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  Please report typographical errors to:
  337.  
  338.        Hal Jespersen
  339.        POSIX Software Group
  340.        447 Lakeview Way
  341.        Redwood City, CA 94062
  342.        +1 (415) 364-3410
  343.        FAX: +1 (415) 364-4498
  344.        Email: hlj@Posix.COM
  345.  
  346.  (_E_l_e_c_t_r_o_n_i_c _m_a_i_l _i_s _p_r_e_f_e_r_r_e_d.)
  347.  
  348.  The copying and distribution of IEEE balloting drafts is accomplished by
  349.  the Standards Office.  To report problems with reproduction of your copy,  2
  350.  contact:                                                                   2
  351.  
  352.        Anna Kaczmarek                                                       2
  353.        IEEE Standards Office
  354.        P.O. Box 1331
  355.        445 Hoes Lane
  356.        Piscataway, NJ 08855-1331
  357.  
  358.        +1 (908) 562-3811                                                    2
  359.        FAX: +1 (908) 562-1571
  360.  
  361.  Additional copies of this draft are available for a duplication and        2
  362.  mailing fee.  Contact:                                                     2
  363.  
  364.        IEEE Publications                                                    2
  365.        1 (800) 678-IEEE                                                     2
  366.        +1 (908) 981-1393 [outside US]                                       2
  367.  
  368.  This draft is available in various electronic forms to assist the review   2
  369.  process.  Our thanks to Andrew Hume of AT&T Bell Laboratories for          2
  370.  providing online access facilities.  Note that this is a limited           2
  371.  experiment in providing online access; future ballots may provide other    2
  372.  forms, such as diskettes or a bulletin board arrangement, but the          2
  373.  instructions shown here are the only methods currently available.  Please  2
  374.  also observe the additional copyright restrictions that are described in   2
  375.  the online files.                                                          2
  376.  
  377.  Assuming you have access to the Internet, the scenario is approximately    2
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.                Copyright c 1991 IEEE.  All rights reserved.
  388.       This is an unapproved IEEE Standards Draft, subject to change.
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.        ftp research.att.com # research's IP address is 192.20.225.2         2
  403.        <login as netlib; password is your email address>                    2
  404.        cd posix/p1003.2/d11.2                                               2
  405.        get toc index                                                        2
  406.        binary                                                               2
  407.        get p11-20.Z                                                         2
  408.  
  409.  The draft is available in several forms.  The table of contents can be     2
  410.  found in toc, pages containing a particular section are stored under the   2
  411.  section number, sets of pages are stored in files with names of the form   2
  412.  p_n-_m, and the entire draft is stored in all.  By default, files are        2
  413.  ASCII.  A .ps suffix indicates PostScript.  A .Z suffix indicates a        2
  414.  compress'_e_d file.  The file index contains a general description of the    2
  415.  files available.                                                           2
  416.  
  417.  These files are also available via electronic mail by sending a message    2
  418.  like                                                                       2
  419.  
  420.        send 3.4 3.5 9.2 from posix/p1003.2/d11.2                            2
  421.  
  422.  to netlib@research.att.com.  If you use email, you should _n_o_t ask for the  2
  423.  compressed version.  For a more complete introduction to this form of      2
  424.  _n_e_t_l_i_b, send the message                                                   2
  425.  
  426.        send help                                                            2
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.                Copyright c 1991 IEEE.  All rights reserved.
  454.       This is an unapproved IEEE Standards Draft, subject to change.
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  _P_O_S_I_X._2 _C_h_a_n_g_e _H_i_s_t_o_r_y
  469.  
  470.  This section is provided to track major changes between drafts.  Since it
  471.  was first added in Draft 11, earlier entries omit some degree of detail.
  472.  
  473.     Draft 11.2  [September 1991] Sixth IEEE ballot (fifth recirculation;    2
  474.                 only changed pages distributed).  Second ISO/IEC CD 9945-2  2
  475.                 registration (full draft distributed).                      2
  476.  
  477.                  - Equivalence classes as starting/ending points of         2
  478.                    regular expression bracket expression range expression   2
  479.                    have been made unspecified.                              2
  480.  
  481.                  - The LC_COLLATE substitute keyword has been deleted.      2
  482.  
  483.                  - cksum (4.9):  Modifications to the algorithm.            2
  484.  
  485.                  - cp (4.13):  Restoration of the                           2
  486.  
  487.                  - stty (4.59):  Addition of the tostop operand.            2
  488.  
  489.                  - lex (A.2):  Further clarification of ERE differences.    2
  490.  
  491.                  - Miscellaneous clarifications to various utilities.       2
  492.  
  493.     Draft 11.1  [June 1991] Fifth IEEE ballot (fourth recirculation; only   1
  494.                 changed pages distributed).                                 1
  495.  
  496.                  - Modification of the definition of _b_y_t_e and               1
  497.                    clarifications of octal/hexadecimal byte                 1
  498.                    representations throughout the utilities.                1
  499.  
  500.                  - Clarifications to the locale definition source file      1
  501.                    description in 2.5; addition of a yacc grammar.          1
  502.  
  503.                  - Removal of pax -e character translation option.          1
  504.  
  505.                  - Miscellaneous clarifications to various utilities.       1
  506.  
  507.                  - Reconciliation of feature test macros and headers in     1
  508.                    Annex B with POSIX.1.                                    1
  509.  
  510.     Draft 11    [February 1991] Fourth IEEE ballot (third recirculation).
  511.  
  512.                  - Changes in 2.3 to the treatment of regular built-ins in
  513.                    regards to their _e_x_e_c-able versions.
  514.  
  515.                  - Changes to 2.4 (character names and charmap syntax) and
  516.                    2.5 (localedef input format) as a result of
  517.  
  518.  
  519.                Copyright c 1991 IEEE.  All rights reserved.
  520.       This is an unapproved IEEE Standards Draft, subject to change.
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.                    international balloting.  Addition of the
  535.                    {POSIX2_LOCALEDEF} symbol.
  536.  
  537.                  - Changes to the shell quoting rules, arithmetic
  538.                    expression syntax, command search order, error
  539.                    descriptions, and exportable functions.
  540.  
  541.                  - Movement of the command utility from special built-in
  542.                    status to be a utility in Section 4.
  543.  
  544.                  - cp (4.13):  Significant clarifications and interface
  545.                    changes.
  546.  
  547.                  - date (4.15):  Added field descriptor modifiers to
  548.                    handle alternate calendar forms when supported by the
  549.                    locale and implementation.
  550.  
  551.                  - pax (4.48):  Significant interface changes, including
  552.                    international character set translations.
  553.  
  554.                  - test (4.62):  Deprecated some functionality due to
  555.                    inconsistent behavior in existing implementations that
  556.                    cause portability problems in existing applications.
  557.  
  558.                  - make (6.2):  Addition of the .POSIX special target,
  559.                    return of some rules to strict existing practice.
  560.  
  561.                  - Miscellaneous clarifications to various utilities.
  562.  
  563.                  - The FORTRAN section now has two options associated with
  564.                    it:  Development Utilities (fort77) and Runtime
  565.                    Utilities (asa).
  566.  
  567.                  - Addition of full example profiles and charmaps from
  568.                    Denmark in Annex F.
  569.  
  570.     Draft 10    [July 1990] Third IEEE ballot (second recirculation).
  571.  
  572.                  - This draft primarily has been one of clarification and
  573.                    amplification.  In resolving ballot objections, large
  574.                    portions of the draft have been rewritten, affecting
  575.                    all sections, but comparatively few changes in
  576.                    [intended] functionality have occurred.
  577.  
  578.                  - New shell command language features (see Section 3):
  579.  
  580.                  - Utility name changes:
  581.  
  582.                                      Draft 9   Draft 10
  583.  
  584.  
  585.                Copyright c 1991 IEEE.  All rights reserved.
  586.       This is an unapproved IEEE Standards Draft, subject to change.
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.                                      _______   ________
  601.                                      create    pathchk
  602.                                      hexdump   od
  603.                                      sendto    mailx
  604.  
  605.                  - A few of the utilities and global sections now have a
  606.                    more formal description, using a yacc-like grammar.
  607.  
  608.                  - Considerably more detail has been added to the
  609.                    internationalization features of the standard:  global
  610.                    changes to clauses 2.4 and 2.5; new detail to the LC_*
  611.                    variables in each utility section; specification of
  612.                    LC_MESSAGES (replacing LC_RESPONSE).
  613.  
  614.                  - Due to some ISO requirements, Sections 1 and 2 have
  615.                    been reorganized yet again, causing many cross
  616.                    reference number changes.  The Related Standards annex
  617.                    has been turned into simply a Bibliography.  The Non-
  618.                    Specified Language Compilers annex has been replaced by
  619.                    a Sample National Profile annex.
  620.  
  621.     Draft 9     [August 1989] Second IEEE ballot (first recirculation).
  622.                 Also registered as ISO/IEC CD 9945-2.1.  A few minor
  623.                 corrections to some sections.  :-)
  624.  
  625.     Draft 8     [December 1988] First IEEE ballot.  Also submitted to
  626.                 ISO/IEC JTC 1/SC22 for review and comment.
  627.  
  628.     Draft 7     [September 1988] ``Mock ballot'' conducted by working
  629.                 group members only.
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.                Copyright c 1991 IEEE.  All rights reserved.
  652.       This is an unapproved IEEE Standards Draft, subject to change.
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  _P_O_S_I_X._2 _T_e_c_h_n_i_c_a_l _R_e_v_i_e_w_e_r_s
  667.  
  668.  The individuals denoted in Table i are the Technical Reviewers for this
  669.  draft.  During balloting they are the subject matter experts who
  670.  coordinate the resolution process for specific sections, as shown.
  671.  
  672.                    Table i - POSIX.2 Technical Reviewers
  673.  
  674.  __________________________________________________________________________________________________________________________________________________
  675.     Section                   Description                    Reviewer
  676.     ___________________________________________________________________
  677.  
  678.        1       _G_e_n_e_r_a_l                                     Jespersen
  679.     2.4,2.5    _D_e_f_i_n_i_t_i_o_n_s (_L_o_c_a_l_e_s)                       Leijonhufvud     1
  680.     2 (rest)   _D_e_f_i_n_i_t_i_o_n_s (_V_a_r_i_o_u_s)                       Jespersen
  681.        3       _C_o_m_m_a_n_d _L_a_n_g_u_a_g_e                            Jespersen
  682.        4       _E_x_e_c_u_t_i_o_n _E_n_v_i_r_o_n_m_e_n_t _U_t_i_l_i_t_i_e_s:  _c_p, rm    Bostic           22
  683.        4       _E_x_e_c_u_t_i_o_n _E_n_v_i_r_o_n_m_e_n_t _U_t_i_l_i_t_i_e_s:  (_t_h_e      Jespersen        22
  684.                _r_e_s_t)                                                        2
  685.        6       _S_o_f_t_w_a_r_e _D_e_v_e_l_o_p_m_e_n_t _U_t_i_l_i_t_i_e_s              Jespersen
  686.        7       _L_a_n_g_u_a_g_e-_I_n_d_e_p_e_n_d_e_n_t _B_i_n_d_i_n_g_s               Jespersen        2
  687.        A       _C _D_e_v_e_l_o_p_m_e_n_t _U_t_i_l_i_t_i_e_s                     Jespersen
  688.        B       _C _B_i_n_d_i_n_g_s                                  Jespersen        2
  689.        C       _F_O_R_T_R_A_N _D_e_v_e_l_o_p_m_e_n_t _a_n_d _R_u_n_t_i_m_e _U_t_i_l_i_t_i_e_s   Jespersen
  690.       D-G      _V_a_r_i_o_u_s                                     Jespersen
  691.  __________________________________________________________________________________________________________________________________________________
  692.  
  693.  
  694.  Also, our special thanks to Donn Terry for writing or improving all the
  695.  yacc-based grammars used in Draft 10.
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.                Copyright c 1991 IEEE.  All rights reserved.
  718.       This is an unapproved IEEE Standards Draft, subject to change.
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  _P_O_S_I_X._2 _P_r_o_p_o_s_e_d _S_c_h_e_d_u_l_e
  733.  
  734.  This section will not appear in the final document.  It is used to
  735.  provide editorial notes regarding the proposed POSIX.2 schedule.  In the
  736.  schedule, the UPE stands for ``User Portability Extension.''
  737.  
  738.  
  739.    _____________________________________________________________________
  740.    |        Date          |     Milestone (End of Meeting)      | Draft |
  741.    _|_______________________|______________________________________|_______|
  742.    |Sep 7-11, 1987        | Utility format frozen;              |   3   |
  743.    |Nashua, NH            | 10% of utilities described.         |       |
  744.    _|_______________________|______________________________________|_______|
  745.    |Dec 7-14, 87          | 50% of utilities described;         |   4   |
  746.    |San Diego, CA         | shell update; substantial           |       |
  747.    _|_______________________|_p_r_o_g_r_e_s_s__i_n__S_e_c_t_i_o_n_s__2_,__3_,__4_,__8_.______|_______|
  748.    |Mar 14-18, 1988       | Utility selection frozen;           |   5   |
  749.    |Washington, DC        | 75% described.                      |       |
  750.    _|_______________________|______________________________________|_______|
  751.    |Jul 11-15, 1988       | 100% utilities described;           |   6   |
  752.    |Denver, CO            | functional freeze; produce ``mock   |       |
  753.    _|_______________________|_b_a_l_l_o_t_'_'__a_n_d__P_O_S_I_X__F_I_P_S__d_r_a_f_t__7_______|_______|
  754.    |[Sep-Oct 1988]        | [Mock ballot]                       |   7   |
  755.    _|_______________________|______________________________________|_______|
  756.    |Oct 24-28, 1988       | Resolve mock ballot objections;     |   7   |
  757.    |Honolulu, HI          | produce first real ballot (draft 8) |       |
  758.    _|_______________________|_U_P_E__p_l_a_n_n_i_n_g__b_e_g_i_n_s___________________|_______|
  759.    |[Jan-Feb 1989]        | [First ballot]                      |   8   |
  760.    _|_______________________|______________________________________|_______|
  761.    |Jan 9-11, 1989        | Begin UPE definitions;              |   8   |
  762.    |Ft. Lauderdale, FL    | Technical Reviewer coordination     |       |
  763.    _|_______________________|_o_f__f_i_r_s_t__b_a_l_l_o_t__r_e_s_p_o_n_s_e_s_____________|_______|
  764.    |[Feb-Apr 1989]        | [Ballot resolution]                 |   8   |
  765.    _|_______________________|______________________________________|_______|
  766.    |Apr 24-28, 1989       | Working Group concurrence with      |   9   |
  767.    |Minneapolis, MN       | ballot resolution; produce Draft 9  |       |
  768.    _|_______________________|_f_o_r__r_e_c_i_r_c_u_l_a_t_i_o_n_;__U_P_E__w_o_r_k___________|_______|
  769.    |Jul 10-14, 1989       | UPE work                            |       |
  770.    |San Jose, CA          |                                     |       |
  771.    _|_______________________|______________________________________|_______|
  772.    _|[_O_c_t__1_9_8_9_]______________|_[_F_i_r_s_t__R_e_c_i_r_c_u_l_a_t_i_o_n_]_________________|___9____|
  773.    |[Nov-Feb 1990]        | [Ballot resolution]                 |   9   |
  774.    _|_______________________|______________________________________|_______|
  775.    _|[_A_u_g_-_S_e_p__1_9_9_0_]__________|_[_S_e_c_o_n_d__R_e_c_i_r_c_u_l_a_t_i_o_n_]________________|__1_0____|
  776.    |[Mar 1991]            | [Third Recirculation]               |  11   |
  777.    _|_______________________|______________________________________|_______|
  778.    _|[_J_u_n__1_9_9_1_]______________|_[_F_o_u_r_t_h__R_e_c_i_r_c_u_l_a_t_i_o_n_]________________|_1_1_._1___|   11
  779.    _|_______________________|______________________________________|_______|   11111
  780.  
  781.  
  782.  
  783.                Copyright c 1991 IEEE.  All rights reserved.
  784.       This is an unapproved IEEE Standards Draft, subject to change.
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.    |[Sep 1991]            | [Fifth Recirculation]               | 11.2  |   1
  799.    _|_______________________|______________________________________|_______|   1
  800.    _|[_m_i_d_-_1_9_9_2_]______________|_[_I_E_E_E__S_t_a_n_d_a_r_d__B_o_a_r_d__A_p_p_r_o_v_e_s_?_?_]______|__1_2____|   21
  801.    |[Jul 1990 - Apr 1992] | [Ballot .2a UPE supplement]         |       |   1
  802.    _|_______________________|______________________________________|_______|
  803.  
  804.  END_RATIONALE
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.                Copyright c 1991 IEEE.  All rights reserved.
  850.       This is an unapproved IEEE Standards Draft, subject to change.
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  IEEE Standards documents are developed within the Technical Committees of
  866.  the IEEE Societies and the Standards Coordinating Committees of the IEEE
  867.  Standards Board.  Members of the committees serve voluntarily and without
  868.  compensation.  They are not necessarily members of the Institute.  The
  869.  standards developed within IEEE represent a consensus of the broad
  870.  expertise on the subject within the Institute as well as those activities
  871.  outside of IEEE that have expressed an interest in participating in the
  872.  development of the standard.
  873.  
  874.  Use of an IEEE Standard is wholly voluntary.  The existence of an IEEE
  875.  Standard does not imply that there are no other ways to produce, test,
  876.  measure, purchase, market, or provide other goods and services related to
  877.  the scope of the IEEE Standard.  Furthermore, the viewpoint expressed at
  878.  the time a standard is approved and issued is subject to change brought
  879.  about through developments in the state of the art and comments received
  880.  from users of the standard.  Every IEEE Standard is subjected to review
  881.  at least every five years for revision or reaffirmation.  When a document
  882.  is more than five years old and has not been reaffirmed, it is reasonable
  883.  to conclude that its contents, although still of some value, do not
  884.  wholly reflect the present state of the art.  Users are cautioned to
  885.  check to determine that they have the latest edition of any IEEE
  886.  Standard.
  887.  
  888.  Comments for revision of IEEE Standards are welcome from any interested
  889.  party, regardless of membership affiliation with IEEE.  Suggestions for
  890.  changes in documents should be in the form of a proposed change of text,
  891.  together with appropriate supporting comments.
  892.  
  893.  Interpretations:  Occasionally questions may arise regarding the meaning
  894.  of portions of standards as they relate to specific applications.  When
  895.  the need for interpretations is brought to the attention of the IEEE, the
  896.  Institute will initiate action to prepare appropriate responses.  Since
  897.  IEEE Standards represent a consensus of all concerned interests, it is
  898.  important to ensure that any interpretation has also received the
  899.  concurrence of a balance of interests.  For this reason, the IEEE and the
  900.  members of its technical committees are not able to provide an instant
  901.  response to interpretation requests except in those cases where the
  902.  matter has previously received formal consideration.
  903.  
  904.  Comments on standards and requests for interpretations should be
  905.  addressed to:
  906.  
  907.        Secretary, IEEE Standards Board
  908.        445 Hoes Lane
  909.        P.O. Box 1331
  910.        Piscataway, NJ 08855-1331
  911.  
  912.  
  913.  
  914.  
  915.                Copyright c 1991 IEEE.  All rights reserved.
  916.       This is an unapproved IEEE Standards Draft, subject to change.
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.     __________________________________________________________________
  931.     |IEEE Standards documents are adopted by the Institute of         |
  932.     |Electrical and Electronics Engineers without regard              |
  933.     |to whether their adoption may involve patents                    |
  934.     |on articles, materials, or processes.                            |
  935.     |Such adoption does not assume any liability to any patent owner, |
  936.     |nor does it assume any obligation whatever to parties adopting   |
  937.     _||t_h_e__s_t_a_n_d_a_r_d_s__d_o_c_u_m_e_n_t_s_.__________________________________________||
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.                Copyright c 1991 IEEE.  All rights reserved.
  982.       This is an unapproved IEEE Standards Draft, subject to change.
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.                                  Contents
  1000.  
  1001.  
  1002.                                                                       PAGE
  1003.  
  1004.  Introduction.......................................................    ii
  1005.     Organization of the Standard....................................    ii
  1006.     Base Documents..................................................    ii
  1007.     Related Standards Activities....................................    ii
  1008.  
  1009.  Section 1: General.................................................     1
  1010.     1.1   Scope.....................................................     1
  1011.     1.2   Normative References......................................    13
  1012.     1.3   Conformance...............................................    14
  1013.  
  1014.  Section 2: Terminology and General Requirements....................    21
  1015.     2.1   Conventions...............................................    21
  1016.     2.2   Definitions...............................................    26
  1017.     2.3   Built-in Utilities........................................    58
  1018.     2.4   Character Set.............................................    61
  1019.     2.5   Locale....................................................    69
  1020.     2.6   Environment Variables.....................................   119
  1021.     2.7   Required Files............................................   126
  1022.     2.8   Regular Expression Notation...............................   128
  1023.     2.9   Dependencies on Other Standards...........................   161
  1024.     2.10  Utility Conventions.......................................   172
  1025.     2.11  Utility Description Defaults..............................   182
  1026.     2.12  File Format Notation......................................   198
  1027.     2.13  Configuration Values......................................   204
  1028.  
  1029.  Section 3: Shell Command Language..................................   215
  1030.     3.1   Shell Definitions.........................................   217
  1031.     3.2   Quoting...................................................   220
  1032.     3.3   Token Recognition.........................................   224
  1033.     3.4   Reserved Words............................................   226
  1034.     3.5   Parameters and Variables..................................   228
  1035.     3.6   Word Expansions...........................................   233
  1036.     3.7   Redirection...............................................   249
  1037.     3.8   Exit Status and Errors....................................   255
  1038.     3.9   Shell Commands............................................   258
  1039.     3.10  Shell Grammar.............................................   279
  1040.     3.11  Signals and Error Handling................................   288
  1041.     3.12  Shell Execution Environment...............................   289
  1042.     3.13  Pattern Matching Notation.................................   291
  1043.     3.14  Special Built-in Utilities................................   295
  1044.  
  1045.  Section 4: Execution Environment Utilities.........................   317
  1046.  
  1047.                Copyright c 1991 IEEE.  All rights reserved.
  1048.       This is an unapproved IEEE Standards Draft, subject to change.
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  ii
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.                                                                       PAGE
  1063.  
  1064.     4.1   awk - Pattern scanning and processing language............   317
  1065.     4.2   basename - Return nondirectory portion of pathname........   358
  1066.     4.3   bc - Arbitrary-precision arithmetic language..............   362
  1067.     4.4   cat - Concatenate and print files.........................   383
  1068.     4.5   cd - Change working directory.............................   388
  1069.     4.6   chgrp - Change file group ownership.......................   392
  1070.     4.7   chmod - Change file modes.................................   395
  1071.     4.8   chown - Change file ownership.............................   405
  1072.     4.9   cksum - Write file checksums and sizes....................   409
  1073.     4.10  cmp - Compare two files...................................   416
  1074.     4.11  comm - Select or reject lines common to two files.........   420
  1075.     4.12  command - Execute a simple command........................   424
  1076.     4.13  cp - Copy files...........................................   430
  1077.     4.14  cut - Cut out selected fields of each line of a file......   440
  1078.     4.15  date - Write the date and time............................   445
  1079.     4.16  dd - Convert and copy a file..............................   452
  1080.     4.17  diff - Compare two files..................................   462
  1081.     4.18  dirname - Return directory portion of pathname............   471
  1082.     4.19  echo - Write arguments to standard output.................   475
  1083.     4.20  ed - Edit text............................................   479
  1084.     4.21  env - Set environment for command invocation..............   498
  1085.     4.22  expr - Evaluate arguments as an expression................   503
  1086.     4.23  false - Return false value................................   509
  1087.     4.24  find - Find files.........................................   511
  1088.     4.25  fold - Fold lines.........................................   521
  1089.     4.26  getconf - Get configuration values........................   526
  1090.     4.27  getopts - Parse utility options...........................   531
  1091.     4.28  grep - File pattern searcher..............................   537
  1092.     4.29  head - Copy the first part of files.......................   545
  1093.     4.30  id - Return user identity.................................   549
  1094.     4.31  join - Relational database operator.......................   554
  1095.     4.32  kill - Terminate or signal processes......................   559
  1096.     4.33  ln - Link files...........................................   566
  1097.     4.34  locale - Get locale-specific information..................   570
  1098.     4.35  localedef - Define locale environment.....................   577
  1099.     4.36  logger - Log messages.....................................   583
  1100.     4.37  logname - Return user's login name........................   586
  1101.     4.38  lp - Send files to a printer..............................   589
  1102.     4.39  ls - List directory contents..............................   595
  1103.     4.40  mailx - Process messages..................................   605
  1104.     4.41  mkdir - Make directories..................................   610
  1105.     4.42  mkfifo - Make FIFO special files..........................   614
  1106.     4.43  mv - Move files...........................................   617
  1107.     4.44  nohup - Invoke a utility immune to hangups................   623
  1108.     4.45  od - Dump files in various formats........................   627
  1109.     4.46  paste - Merge corresponding or subsequent lines of
  1110.           files.....................................................   637
  1111.     4.47  pathchk - Check pathnames.................................   642
  1112.  
  1113.                Copyright c 1991 IEEE.  All rights reserved.
  1114.       This is an unapproved IEEE Standards Draft, subject to change.
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.                                                                        iii
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.                                                                       PAGE
  1129.  
  1130.     4.48  pax - Portable archive interchange........................   648
  1131.     4.49  pr - Print files..........................................   665
  1132.     4.50  printf - Write formatted output...........................   672
  1133.     4.51  pwd - Return working directory name.......................   679
  1134.     4.52  read - Read a line from standard input....................   682
  1135.     4.53  rm - Remove directory entries.............................   686
  1136.     4.54  rmdir - Remove directories................................   692
  1137.     4.55  sed - Stream editor.......................................   695
  1138.     4.56  sh - Shell, the standard command language interpreter.....   706
  1139.     4.57  sleep - Suspend execution for an interval.................   713
  1140.     4.58  sort - Sort, merge, or sequence check text files..........   716
  1141.     4.59  stty - Set the options for a terminal.....................   725
  1142.     4.60  tail - Copy the last part of a file.......................   736
  1143.     4.61  tee - Duplicate standard input............................   742
  1144.     4.62  test - Evaluate expression................................   745
  1145.     4.63  touch - Change file access and modification times.........   756
  1146.     4.64  tr - Translate characters.................................   762
  1147.     4.65  true - Return true value..................................   770
  1148.     4.66  tty - Return user's terminal name.........................   772
  1149.     4.67  umask - Get or set the file mode creation mask............   775
  1150.     4.68  uname - Return system name................................   780
  1151.     4.69  uniq - Report or filter out repeated lines in a file......   784
  1152.     4.70  wait - Await process completion...........................   790
  1153.     4.71  wc - Word, line, and byte count...........................   795
  1154.     4.72  xargs - Construct argument list(s) and invoke utility.....   799
  1155.  
  1156.  Section 5: User Portability Utilities Option.......................   807
  1157.  
  1158.  Section 6: Software Development Utilities Option...................   809
  1159.     6.1   ar - Create and maintain library archives.................   809
  1160.     6.2   make - Maintain, update, and regenerate groups of
  1161.           programs..................................................   818
  1162.     6.3   strip - Remove unnecessary information from executable
  1163.           files.....................................................   844
  1164.  
  1165.  Section 7: Language-Independent System Services....................   847
  1166.     7.1   Shell Command Interface...................................   848
  1167.     7.2   Access Environment Variables..............................   849
  1168.     7.3   Regular Expression Matching...............................   849
  1169.     7.4   Pattern Matching..........................................   850
  1170.     7.5   Command Option Parsing....................................   850
  1171.     7.6   Generate Pathnames Matching a Pattern.....................   850
  1172.     7.7   Perform Word Expansions...................................   851
  1173.     7.8   Get POSIX Configurable Variables..........................   851
  1174.     7.9   Locale Control............................................   852
  1175.  
  1176.  Annex A (normative) C Language Development Utilities Option........   855
  1177.     A.1   c89 - Compile Standard C programs.........................   856
  1178.  
  1179.                Copyright c 1991 IEEE.  All rights reserved.
  1180.       This is an unapproved IEEE Standards Draft, subject to change.
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  iv
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.                                                                       PAGE
  1195.  
  1196.     A.2   lex - Generate programs for lexical tasks.................   867
  1197.     A.3   yacc - Yet another compiler compiler......................   884
  1198.  
  1199.  Annex B (normative) C Language Bindings Option.....................   907
  1200.     B.1   C Language Definitions....................................   908
  1201.           B.1.1  POSIX Symbols......................................   908
  1202.           B.1.2  Headers and Function Prototypes....................   910
  1203.           B.1.3  Error Numbers......................................   911
  1204.     B.2   C Numerical Limits........................................   911
  1205.           B.2.1  C Macros for Symbolic Limits.......................   912
  1206.           B.2.2  Compile-Time Symbolic Constants for Portability
  1207.                  Specifications.....................................   913
  1208.           B.2.3  Execution-Time Symbolic Constants for Portability
  1209.                  Specifications.....................................   914
  1210.           B.2.4  POSIX.1 C Numerical Limits.........................   915
  1211.     B.3   C Binding for Shell Command Interface.....................   915
  1212.           B.3.1  C Binding for Execute Command......................   916
  1213.           B.3.2  C Binding for Pipe Communications with Programs....   919
  1214.     B.4   C Binding for Access Environment Variables................   925
  1215.     B.5   C Binding for Regular Expression Matching.................   925
  1216.     B.6   C Binding for Match Filename or Pathname..................   934
  1217.     B.7   C Binding for Command Option Parsing......................   937
  1218.     B.8   C Binding for Generate Pathnames Matching a Pattern.......   942
  1219.     B.9   C Binding for Perform Word Expansions.....................   948
  1220.     B.10  C Binding for Get POSIX Configurable Variables............   954
  1221.     B.11  C Binding for Locale Control..............................   957
  1222.  
  1223.  Annex C (normative) FORTRAN Development and Runtime Utilities
  1224.     Options.........................................................   959
  1225.     C.1   asa - Interpret carriage-control characters...............   960
  1226.     C.2   fort77 - FORTRAN compiler.................................   964
  1227.  
  1228.  Annex D (informative) Bibliography.................................   973
  1229.  
  1230.  Annex E (informative) Rationale and Notes..........................   977
  1231.     E.1   General...................................................   977
  1232.     E.2   Terminology and General Requirements......................   978
  1233.     E.3   Shell Command Language....................................   979
  1234.     E.4   Execution Environment Utilities...........................   980
  1235.     E.5   User Portability Utilities Option.........................   993
  1236.     E.6   Software Development Utilities Option.....................   993
  1237.     E.7   Language-Independent System Services......................   994
  1238.     E.8   C Language Development Utilities Option...................   994
  1239.     E.9   C Language Bindings Option................................   995
  1240.     E.10  FORTRAN Development and Runtime Utilities Options.........   996
  1241.  
  1242.  Annex F (informative) Sample National Profile......................   997
  1243.  
  1244.  
  1245.                Copyright c 1991 IEEE.  All rights reserved.
  1246.       This is an unapproved IEEE Standards Draft, subject to change.
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.                                                                          v
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.                                                                       PAGE
  1261.  
  1262.  Annex G (informative) Balloting Instructions.......................  1091
  1263.  
  1264.  Identifier Index...................................................  1105
  1265.  
  1266.  Alphabetic Topical Index...........................................  1111
  1267.  
  1268.  
  1269.  FIGURES
  1270.  
  1271.  Figure B-1  -  Sample _ssss_yyyy_ssss_tttt_eeee_mmmm() Implementation.......................  922
  1272.  Figure B-2  -  Sample _pppp_cccc_llll_oooo_ssss_eeee() Implementation.......................  926
  1273.  Figure B-3  -  Example Regular Expression Matching..................  933
  1274.  Figure B-4  -  Argument Processing with _gggg_eeee_tttt_oooo_pppp_tttt()....................  942
  1275.  
  1276.  
  1277.  TABLES
  1278.  
  1279.  Table 2-1  -  Typographical Conventions.............................   22
  1280.  Table 2-2  -  Regular Built-in Utilities............................   58
  1281.  Table 2-3  -  Character Set and Symbolic Names......................   62
  1282.  Table 2-4  -  Control Character Set.................................   63
  1283.  Table 2-5  -  LC_CTYPE Category Definition in the POSIX Locale......   76
  1284.  Table 2-6  -  Valid Character Class Combinations....................   81
  1285.  Table 2-7  -  LC_COLLATE Category Definition in the POSIX Locale....   84
  1286.  Table 2-8  -  LC_MONETARY Category Definition in the POSIX Locale...   96
  1287.  Table 2-9  -  LC_NUMERIC Category Definition in the POSIX Locale....  101
  1288.  Table 2-10  -  LC_TIME Category Definition in the POSIX Locale......  102
  1289.  Table 2-11  -  LC_MESSAGES Category Definition in the POSIX Locale..  106
  1290.  Table 2-12  -  BRE Precedence.......................................  136
  1291.  Table 2-13  -  ERE Precedence.......................................  139
  1292.  Table 2-14  -  C Standard Operators and Functions...................  171
  1293.  Table 2-15  -  Escape Sequences.....................................  199
  1294.  Table 2-16  -  Utility Limit Minimum Values.........................  205
  1295.  Table 2-17  -  Symbolic Utility Limits..............................  206
  1296.  Table 2-18  -  Optional Facility Configuration Values...............  212
  1297.  Table 4-1  -  awk Expressions in Decreasing Precedence..............  322
  1298.  Table 4-2  -  awk Escape Sequences..................................  347
  1299.  Table 4-3  -  bc Operators..........................................  370
  1300.  Table 4-4  -  ASCII to EBCDIC Conversion............................  459
  1301.  Table 4-5  -  ASCII to IBM EBCDIC Conversion........................  460
  1302.  Table 4-6  -  dirname Examples......................................  474
  1303.  Table 4-7  -  expr Expressions......................................  505
  1304.  Table 4-8  -  od Named Characters...................................  632
  1305.  Table 4-9  -  stty Control Character Names..........................  730
  1306.  Table 4-10  -  stty Circumflex Control Characters...................  731
  1307.  Table 7-1  -  POSIX.1 Numeric-Valued Configurable Variables.........  853
  1308.  Table A-1  -  lex Table Size Declarations...........................  873
  1309.  Table A-2  -  lex Escape Sequences..................................  875
  1310.  
  1311.                Copyright c 1991 IEEE.  All rights reserved.
  1312.       This is an unapproved IEEE Standards Draft, subject to change.
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  vi
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  Table A-3  -  lex ERE Precedence....................................  877
  1329.  Table A-4  -  yacc Internal Limits..................................  903
  1330.  Table B-1  -  POSIX.2 Reserved Header Symbols.......................  911
  1331.  Table B-2  -  _POSIX_C_SOURCE.......................................  911
  1332.  Table B-3  -  C Macros for Symbolic Limits..........................  914
  1333.  Table B-4  -  C Compile-Time Symbolic Constants.....................  916
  1334.  Table B-5  -  C Execution-Time Symbolic Constants...................  916
  1335.  Table B-6  -  Structure Type _rrrr_eeee_gggg_eeee_xxxx______tttt................................  928
  1336.  Table B-7  -  Structure Type _rrrr_eeee_gggg_mmmm_aaaa_tttt_cccc_hhhh______tttt.............................  928
  1337.  Table B-8  -  _rrrr_eeee_gggg_cccc_oooo_mmmm_pppp() _cccc_ffff_llll_aaaa_gggg_ssss Argument.............................  928
  1338.  Table B-9  -  _rrrr_eeee_gggg_eeee_xxxx_eeee_cccc() _eeee_ffff_llll_aaaa_gggg_ssss Argument.............................  928
  1339.  Table B-10  -  _rrrr_eeee_gggg_cccc_oooo_mmmm_pppp(), _rrrr_eeee_gggg_eeee_xxxx_eeee_cccc() Return Values...................  932
  1340.  Table B-11  -  _ffff_nnnn_mmmm_aaaa_tttt_cccc_hhhh() _ffff_llll_aaaa_gggg_ssss Argument.............................  937
  1341.  Table B-12  -  Structure Type _gggg_llll_oooo_bbbb______tttt................................  944
  1342.  Table B-13  -  _gggg_llll_oooo_bbbb() _ffff_llll_aaaa_gggg_ssss Argument................................  945
  1343.  Table B-14  -  _gggg_llll_oooo_bbbb() Error Return Values...........................  947
  1344.  Table B-15  -  Structure Type _wwww_oooo_rrrr_dddd_eeee_xxxx_pppp______tttt.............................  950
  1345.  Table B-16  -  _wwww_oooo_rrrr_dddd_eeee_xxxx_pppp() _ffff_llll_aaaa_gggg_ssss Argument.............................  951
  1346.  Table B-17  -  _wwww_oooo_rrrr_dddd_eeee_xxxx_pppp() Return Values..............................  952
  1347.  Table B-18  -  confstr() _nnnn_aaaa_mmmm_eeee Values................................  955
  1348.  Table B-19  -  C Bindings for Numeric-Valued Configurable
  1349.     Variables........................................................  958
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.                Copyright c 1991 IEEE.  All rights reserved.
  1378.       This is an unapproved IEEE Standards Draft, subject to change.
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.                                                                        vii
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.                                Introduction
  1395.  
  1396.  
  1397.  
  1398.  (This Introduction is not a normative part of P1003.2 Information
  1399.  technology -- Portable Operating System Interface (POSIX) -- Part 2:
  1400.  Shell and Utilities, but is included for information only.)
  1401.  
  1402.  The purpose of this standard is to define a standard interface and
  1403.  environment for application programs that require the services of a
  1404.  ``shell'' command language interpreter and a set of common utility
  1405.  programs.  It is intended for systems implementors and application
  1406.  software developers, and is complementary to ISO/IEC 9945-1: 1990 {8}
  1407.  (first in a family of ``POSIX'' standards), which specifies operating
  1408.  system interfaces and source code level functions, based on the UNIX1)
  1409.  system documentation.  This standard, or ``POSIX.2,'' is based upon
  1410.  documentation and the knowledge of existing programs that assume an
  1411.  interface and architecture similar to that described by POSIX.1.  (See
  1412.  1.1 for a full description of the relationship between the standards.)
  1413.  
  1414.  The majority of this standard describes the functions of utilities that
  1415.  can interface with application programs.  The standard also provides
  1416.  high-level language interfaces that the application uses to access these
  1417.  utilities and other useful, related services.  These language-independent
  1418.  service interfaces are temporarily described in terms of their C language
  1419.  bindings.  The C language assumed is that defined by the C Standard:
  1420.  _A_N_S_I/_X_3._1_5_9-_1_9_8_9 _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e _C _S_t_a_n_d_a_r_d produced by Technical
  1421.  Committee X3J11 of the Accredited Standards Committee X3 -- Information
  1422.  Processing Systems.
  1423.  
  1424.  Organization of the Standard
  1425.  
  1426.  The standard is divided into ten parts:
  1427.  
  1428.      - General, including a statement of scope, normative references, and
  1429.        conformance requirements.  (Section 1).
  1430.  
  1431.      - Definitions, general requirements, and the environment available to
  1432.        applications.  (Section 2).
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  __________
  1438.   1) UNIX is a registered trademark of UNIX System Laboratories in the USA
  1439.      and other countries.
  1440.  
  1441.  
  1442.  
  1443.                Copyright c 1991 IEEE.  All rights reserved.
  1444.       This is an unapproved IEEE Standards Draft, subject to change.
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  viii                                                         Introduction
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.      - The shell command interpreter language.  (Section 3).
  1459.  
  1460.      - Descriptions of the utilities in the required ``Execution
  1461.        Environment Utilities.''  (Section 4).
  1462.  
  1463.      - Descriptions of the utilities required for user portability on
  1464.        asynchronous terminals.  (Section 5 [to be provided in a future
  1465.        revision]).
  1466.  
  1467.      - Descriptions of the utilities in the optional ``Software
  1468.        Development Utilities.''  (Section 6).
  1469.  
  1470.      - Language-independent interfaces for high-level programming language
  1471.        access to shell and related services.  (Section 7).
  1472.  
  1473.      - Descriptions of the utilities in the optional ``C Language
  1474.        Development Utilities.''  (Normative Annex A).
  1475.  
  1476.      - C language bindings to the interfaces in Section 6.  (Normative
  1477.        Annex B).
  1478.  
  1479.      - Descriptions of the utilities in the optional ``FORTRAN Development
  1480.        and Runtime Utilities.''  (Normative Annex C).
  1481.  
  1482.  This introduction, the foreword, any footnotes, NOTES accompanying the
  1483.  text, and the _i_n_f_o_r_m_a_t_i_v_e annexes are not considered part of the
  1484.  standard.  Annexes D through G are informative.
  1485.  
  1486.  Base Documents
  1487.  
  1488.  Many of the interfaces and utilities of this standard were adapted from
  1489.  materials in machine-readable forms donated by the following
  1490.  organizations:
  1491.  
  1492.      - AT&T:  the _S_y_s_t_e_m _V _I_n_t_e_r_f_a_c_e _D_e_f_i_n_i_t_i_o_n (_S_V_I_D) {B24},2) Issue 2,
  1493.        Volume 2.  Copyright c 1986, AT&T; reprinted with permission.
  1494.  
  1495.      - The X/Open Company, Ltd.:  the _X/_O_p_e_n _P_o_r_t_a_b_i_l_i_t_y _G_u_i_d_e {B30}
  1496.        {B31}, Issues II and III, Volume 1.  Copyright c 1989, X/Open
  1497.        Company, Ltd; reprinted with permission.
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  __________
  1503.   2) The number in braces corresponds to those of the references in 1.2
  1504.      (or the bibliographic entry in Annex D if the number is preceded by
  1505.      the letter B).
  1506.  
  1507.  
  1508.  
  1509.                Copyright c 1991 IEEE.  All rights reserved.
  1510.       This is an unapproved IEEE Standards Draft, subject to change.
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.                                                                         ix
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.      - University of California, _T_h_e _U_N_I_X _U_s_e_r'_s _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l {B28},
  1525.        4.3 Berkeley Software Distribution, Virtual VAX-11 Version, 1986.
  1526.        Copyright c 1980, 1983, The Regents of the University of
  1527.        California; reprinted with permission.3)
  1528.  
  1529.  Significant reference use was also made of the following books:
  1530.  
  1531.      - Bolsky, Morris I., Korn, David G., _T_h_e _K_o_r_n_S_h_e_l_l _C_o_m_m_a_n_d _a_n_d
  1532.        _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e {B25}, Prentice Hall, Englewood Cliffs, New
  1533.        Jersey (1988).
  1534.  
  1535.      - Aho, Alfred V., Kernighan, Brian W., Weinberger, Peter J., _T_h_e _A_W_K
  1536.        _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e {B21}, Addison-Wesley, Reading, Massachusetts
  1537.        (1988).
  1538.  
  1539.  Many other proposals for functions and utilities were received from the
  1540.  various working group members, who are listed in the Acknowledgements
  1541.  section of this standard.
  1542.  
  1543.  Related Standards Activities
  1544.  
  1545.  Activities to extend this standard to address additional requirements are
  1546.  in progress, and similar efforts can be anticipated in the future.
  1547.  
  1548.  The following areas are under active consideration at this time, or are
  1549.  expected to become active in the near future:4)
  1550.  
  1551.      (1)  Language-independent service descriptions of POSIX.1 {8}
  1552.  
  1553.      (2)  C, Ada, and FORTRAN Language bindings to (1)
  1554.  
  1555.      (3)  Verification testing methods
  1556.  
  1557.      (4)  Realtime facilities
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  __________
  1563.   3) The IEEE is grateful to AT&T, UniForum, and the Regents of the
  1564.      University of California for permission to use their machine-readable
  1565.      materials.
  1566.   4) A _S_t_a_n_d_a_r_d_s _S_t_a_t_u_s _R_e_p_o_r_t that lists all current IEEE Computer
  1567.      Society standards projects is available from the IEEE Computer
  1568.      Society, 1730 Massachusetts Avenue NW, Washington, DC 20036-1903;
  1569.      Telephone: +1 202 371-0101; FAX: +1 202 728-9614.  Working drafts of
  1570.      POSIX standards under development are also available from this
  1571.      office.
  1572.  
  1573.  
  1574.  
  1575.                Copyright c 1991 IEEE.  All rights reserved.
  1576.       This is an unapproved IEEE Standards Draft, subject to change.
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  x                                                            Introduction
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.      (5)  Secure/Trusted System considerations
  1591.  
  1592.      (6)  Network interface facilities
  1593.  
  1594.      (7)  System Administration
  1595.  
  1596.      (8)  Graphical User Interfaces
  1597.  
  1598.      (9)  Profiles describing application- or user-specific combinations
  1599.           of Open Systems standards for:  supercomputing, multiprocessor,
  1600.           and batch extensions; transaction processing; realtime systems;
  1601.           and multiuser systems based on historical models
  1602.  
  1603.     (10)  An overall guide to POSIX-based or related Open Systems
  1604.           standards and profiles
  1605.  
  1606.  Extensions are approved as ``amendments'' or ``revisions'' to this
  1607.  document, following the IEEE and ISO/IEC Procedures.
  1608.  
  1609.  Approved amendments are published separately until the full document is
  1610.  reprinted and such amendments are incorporated in their proper positions.
  1611.  
  1612.  If you have interest in participating in the TCOS working groups
  1613.  addressing these issues, please send your name, address, and phone number
  1614.  to the Secretary, IEEE Standards Board, Institute of Electrical and
  1615.  Electronics Engineers, Inc., P.O. Box 1331, 445 Hoes Lane, Piscataway, NJ
  1616.  08855-1331, and ask to have this forwarded to the chairperson of the
  1617.  appropriate TCOS working group.  If you have interest in participating in
  1618.  this work at the international level, contact your ISO/IEC national body.
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.                Copyright c 1991 IEEE.  All rights reserved.
  1642.       This is an unapproved IEEE Standards Draft, subject to change.
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  Related Standards Activities                                           xi
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  P1003.2 was prepared by the 1003.2 working group, sponsored by the
  1657.  Technical Committee on Operating Systems and Application Environments of
  1658.  the IEEE Computer Society.  At the time this standard was approved, the
  1659.  membership of the 1003.2 working group was as follows:
  1660.  
  1661.                  Technical Committee on Operating Systems
  1662.                     and Application Environments (TCOS)
  1663.  
  1664.                        Chair:   Jehan-Franc,ois Pa^ris
  1665.  
  1666.                         TCOS Standards Subcommittee
  1667.  
  1668.                        Chair:         Jim Isaak
  1669.                        Vice Chairs:   Ralph Barker
  1670.                                       David Dodge
  1671.                                       Robert Bismuth
  1672.                                       Hal Jespersen
  1673.                                       Lorraine Kevra
  1674.                        Treasurer:     Quin Hahn
  1675.                        Secretary:     Shane McCarron
  1676.  
  1677.                       1003.2 Working Group Officials
  1678.  
  1679.               Chair:         Hal Jespersen
  1680.               Vice Chair:    Donald W. Cragun
  1681.               Editors:       Hal Jespersen (1986, 1988-1991)
  1682.                              Maggie Lee (1987-1988)
  1683.               Secretaries:   Helene Armitage (1988-1990)
  1684.                              Dave Grindeland (1991)
  1685.                              Robert J. Makowski (1987-1988)
  1686.  
  1687.                             Technical Reviewers
  1688.  
  1689.       Helene Armitage       Ken Faubel            Gary Miller
  1690.       Keith Bostic          Greger Leijonhufvud   Marc Teitelbaum
  1691.       John Caywood          Bob Lenk              Donn Terry
  1692.       Donald Cragun         Mark Levine           Teoman Topcubasi
  1693.       David Decot           Shane McCarron        David Willcox
  1694.  
  1695.                                Working Group
  1696.  
  1697.       Helene Armitage       Quin Hahn             Jim Oldroyd
  1698.       Brian Baird           Michael J. Hannah     Mark Parenti
  1699.       John R. Barr          Marjorie E. Harris    John Peace
  1700.       Philippe Bertrand     David F. Hinnant      Jon Penner
  1701.       Robert Bismuth        Leon M. Holmes        Gerald Powell
  1702.       Jim Blondeau          Ron Holt              John Quarterman
  1703.  
  1704.  
  1705.  
  1706.  
  1707.                Copyright c 1991 IEEE.  All rights reserved.
  1708.       This is an unapproved IEEE Standards Draft, subject to change.
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  xii                                                          Introduction
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.       James C. Bohem        Randall Howard        Joe Ramus
  1723.       Kathy Bohrer          Steven A. James       Mike Ressler
  1724.       Keith Bostic          Steve Jennings        Grover Righter
  1725.       Phyllis Eve Bregman   Hal Jespersen         Andrew K. Roach
  1726.       Peter Brouwer         Ronald S. Karr        Marco P. Roodzant
  1727.       F. Lee Brown, Jr.     Lorraine C. Kevra     Seth Rosenthal
  1728.       Jonathan Brown        Martin Kirk           Maude Sawyer
  1729.       James A. Capps        Brad Kline            Norman K. Scherer
  1730.       Bill Carpenter        Hiromichi Kogure      Glen Seeds
  1731.       Steve Carter          David Korn            Jim Selkaitis
  1732.       John Caywood          Rick Kuhn             Karen Sheaffer
  1733.       Bob Claeson           Mike Lambert          Del Shoemaker
  1734.       Mark Colburn          Maggie Lee            James Soddy
  1735.       Donald W. Cragun      Perry Lee             Daniel Steinberg
  1736.       Dave Decot            Greger Leijonhufvud   Scott A. Sutter
  1737.       Terence S. Dowling    Bob Lenk              Ravi Tavakley
  1738.       Stephen Dum           Mark Levine           Marc Teitelbaum
  1739.       Dominic Dunlop        Gary Lindgren         Donn Terry
  1740.       Mike Edmonds          John Lomas            Jack Thompson
  1741.       Ron Elliott           Craig Lund            Teoman Topcubasi
  1742.       Richard W. Elwood     Rod MacDonald         Eugene Tsuno
  1743.       Hirsaki Eto           Dan Magenheimer       Geraldine Vitovitch
  1744.       Fran Fadden           Robert J. Makowski    Carl vonLoewenfeldt
  1745.       Ken Faubel            Shane P. McCarron     Mike Wallace
  1746.       Martin C. Fong        Jim McGinness         Alan Weaver
  1747.       Terance Fong          John McGrory          Larry Wehr
  1748.       Glenn Fowler          Stuart McKaig         Bruce Weiner
  1749.       Gary A. Gaudet        Sunil Mehta           N. Ray Wilkes
  1750.       Al Gettier            Bill Middlecamp       David Willcox
  1751.       Timothy D. Gill       Gary W. Miller        Neil Winton
  1752.       Gregory Goddard       Jim Moe               David Woodend
  1753.       Loretta Goudie        Yasushi Nakahara      Morten With
  1754.       Dave Grindeland       Martha Nalebuff       Ken Witte
  1755.       John Lawrence Gregg   Sonya D. Neufer       John Wu
  1756.       Jerry Gross           Landon Noll           Peggy Younger
  1757.       Douglas A. Gwyn       Robin T. O'Neill      Hilary Zaloom
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.                Copyright c 1991 IEEE.  All rights reserved.
  1774.       This is an unapproved IEEE Standards Draft, subject to change.
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  Related Standards Activities                                         xiii
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  The following persons were members of the 1003.2 Balloting Group that
  1789.  approved the standard for submission to the IEEE Standards Board:
  1790.  
  1791.      Derek Kaufman     _X/_O_p_e_n _I_n_s_t_i_t_u_t_i_o_n_a_l _R_e_p_r_e_s_e_n_t_a_t_i_v_e
  1792.      Shane McCarron    _U_N_I_X _I_n_t_e_r_n_a_t_i_o_n_a_l _I_n_s_t_i_t_u_t_i_o_n_a_l _R_e_p_r_e_s_e_n_t_a_t_i_v_e
  1793.      Peter Collinson   _U_S_E_N_I_X _A_s_s_o_c_i_a_t_i_o_n _I_n_s_t_i_t_u_t_i_o_n_a_l _R_e_p_r_e_s_e_n_t_a_t_i_v_e
  1794.  
  1795.  Scott Anderson           Carol J. Harkness        Jim R. Oldroyd
  1796.  Helene Armitage          Craig Harmer             Craig Partridge
  1797.  David Athersych          Dale Harris              Rob Peglar
  1798.  Geoff Baldwin            Myron Hecht              John C. Penney
  1799.  Jerome E. Banasik        Morris J. Herbert        Rand S. Phares
  1800.  Steven E. Barber         David F. Hinnant         P. J. Plauger
  1801.  Robert M. Barned         Lee A. Hollaar           Gerald Powell
  1802.  David R. Bernstein       Ronald Holt Jr.          Scott E. Preece
  1803.  Kabekode V. S. Bhat      Randall Howard           James M. Purtilo
  1804.  Robert Bismuth           Jim Isaak                J. S. Quarterman
  1805.  Jim Blondran             Richard James            Wendy Rauch-Hindin
  1806.  Robert Borochoff         Hal Jespersen            Brad Rhoades
  1807.  Keith Bostic             Greg Jones               Christopher J. Riddick
  1808.  James P. Bound           Michael J. Karels        Andrew K. Roach
  1809.  Joseph Boykin            Lorraine C. Kevra        Arnold Robbins
  1810.  Kevin Brady              Alan W. Kiecker          R. Hughes Rowlands
  1811.  Phyllis Eve Bregman      Jeff Kimmel              Robert Sarr
  1812.  A. Winsor Brown          M. J. Kirk               Norman Schneidewind
  1813.  F. Lee Brown Jr.         Kenneth C. Klingman      Wolfgang Schwabl
  1814.  Luis-Felipe Cabrera      Joshua W. Knight         Richard Scott
  1815.  Nicholas A. Camillone    David Korn               Glen Seeds
  1816.  Andres Caravallo         Takahiko Kuki            Dan Shia
  1817.  Steven L. Carter         Robin B. Lake            Roger Shimada
  1818.  John Caywood             Mike Lambert             Mukesh Singhal
  1819.  Kilnam Chon              Doris Lebovits           Richard Sniderman
  1820.  Chan F. Chong            Maggie Lee               Steven Sommars
  1821.  Robert L. Claeson        Greger Leijonhufvud      Bryan W. Sparks
  1822.  Mark Colburn             Robert M. Lenk           Richard Stallman
  1823.  Kenneth N. Cole          David Lennert            Daniel Steinberg
  1824.  Richard Cornelius        Mark E. Levine           Douglas H. Steves
  1825.  William M. Corwin        Kevin Lewis              Peter Sugar
  1826.  Mike R. Cossey           Kin F. Li                Scott A. Sutter
  1827.  William Cox              James P. Lonjers         Ravi Tavakley
  1828.  Donald W. Cragun         Joseph F. P. Luhukay     Donn Terry
  1829.  Terence Dowling          Paul Lustgarten          Gary F. Tom
  1830.  Stephen A. Dum           Ron Mabe                 A. T. Twigger
  1831.  John D. Earls            Robert J. Makowski       Mark-Rene Uchida
  1832.  Ron Elliott              Roger J. Martin          L. David Umbaugh
  1833.  Richard W. Elwood        Joberto S. B. Martins    Michael W. Vannier
  1834.  David Emery              Yoshihiro Matsumoto      M. B. Wagner
  1835.  
  1836.  
  1837.  
  1838.  
  1839.                Copyright c 1991 IEEE.  All rights reserved.
  1840.       This is an unapproved IEEE Standards Draft, subject to change.
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  xiv                                                          Introduction
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  Philip H. Enslow         Shane McCarron           John W. Walz
  1855.  Ken Faubel               Martin J. McGowan III    Alan G. Weaver
  1856.  Terence Fong             Marshall Kirk McKusick   Larry Wehr
  1857.  Ed Frankenberry          Robert W. McWhirter      Bruce Weiner
  1858.  John A. Gertwagen        Doug Michels             Brian Weis
  1859.  Al Gettier               Gary W. Miller           Peter J. Weyman
  1860.  Michel Gien              James M. Moe             Andrew E. Wheeler
  1861.  Gregory W. Goddard       J. W. Moore              David Willcox
  1862.  Robert C. Groman         Anita Mundkur            Jeff Wubik
  1863.  Judy Guist               Martha Nalebuff          Oren Yuen
  1864.  Gregory Guthrie          Fred Noz                 Jason Zions
  1865.  Michael J. Hannah        Alan F. Nugent
  1866.  
  1867.  When the IEEE Standards Board approved this standard on <_d_a_t_e _t_o _b_e
  1868.  _p_r_o_v_i_d_e_d>, it had the following membership:
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.                                    (to be pasted in by IEEE)
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  END_RATIONALE
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.                Copyright c 1991 IEEE.  All rights reserved.
  1906.       This is an unapproved IEEE Standards Draft, subject to change.
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  Related Standards Activities                                           xv
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.                                                              P1003.2/D11.2
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  Information technology -- Portable Operating System Interface (POSIX) --
  1998.  Part 2: Shell and Utilities
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.                             Section 1: General
  2008.  
  2009.  
  2010.  
  2011.  1.1  Scope
  2012.  
  2013.  This standard defines a standard source code level interface to command
  2014.  interpretation, or ``shell,'' services and common utility programs for
  2015.  application programs.  These services and programs are complementary to
  2016.  those specified by ISO/IEC 9945-1: 1990 {8}, hereinafter referred to as
  2017.  ``POSIX.1 {8}.''
  2018.  
  2019.  The standard has been designed to be used by both application programmers
  2020.  and system implementors.  However, it is intended to be a reference
  2021.  document and not a tutorial on the use of the services, the utilities, or
  2022.  the interrelationships between the utilities.
  2023.  
  2024.  The emphasis of this standard is on the shell and utility functionality
  2025.  required by application programs (including ``shell scripts'') and not on
  2026.  the direct interactive use of the shell command language or the utilities
  2027.  by humans.
  2028.  
  2029.  Portions of this standard comprise optional language bindings to system
  2030.  service interfaces.  See, for example, the C Language Bindings Option in
  2031.  Annex B.  This standard is intended to describe language interfaces and
  2032.  utilities in sufficient detail so that an application developer can
  2033.  understand the required interfaces without access to the source code of
  2034.  existing implementations on which they may be based.  Therefore, it does
  2035.  
  2036.  
  2037.                Copyright c 1991 IEEE.  All rights reserved.
  2038.       This is an unapproved IEEE Standards Draft, subject to change.
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  1.1 Scope                                                               1
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  2051.  
  2052.  not attempt to describe the source programming language or internal
  2053.  design of the utilities; they should be considered ``black boxes'' that
  2054.  exhibit the described functionality.
  2055.  
  2056.  For language interfaces, or functions, this standard has been defined
  2057.  exclusively at the source code level.  The objective is that a conforming
  2058.  portable application source program can be translated to execute on a
  2059.  conforming implementation.  The standard assumes that the source program
  2060.  may need to be retranslated to produce target code for a new environment
  2061.  prior to execution in that environment.
  2062.  
  2063.  There is no requirement that the base operating system supporting the
  2064.  shell and utilities be one that fully conforms to ISO/IEC 9945-1: 1990
  2065.  {8}.  (The base system could contain a subset of POSIX.1 {8}
  2066.  functionality, enough to support the requirements for this standard, as
  2067.  described in 2.9.1, but that could not claim full conformance to all of
  2068.  POSIX.1 {8}.)  Furthermore, there is no requirement that the shell
  2069.  command interpreter or any of the standard utilities be written as
  2070.  POSIX.1 {8} conforming programs, or be written in any particular
  2071.  language.
  2072.  
  2073.  Although not requiring a fully conforming POSIX.1 {8} base, this standard
  2074.  is based upon documentation and the knowledge of existing programs that
  2075.  assume an interface and architecture similar to that described by
  2076.  POSIX.1 {8}.  Any questions regarding the definition of terms or the
  2077.  semantics of an underlying concept should be referred to POSIX.1 {8}.
  2078.  
  2079.  BEGIN_RATIONALE
  2080.  
  2081.  
  2082.  1.1.1  Scope Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  2083.  
  2084.  This standard is one of a family of related standards.  The term POSIX is
  2085.  correctly used to describe this family, and not only its foundation, the
  2086.  operating system interfaces of POSIX.1 {8}.  Therefore, POSIX.2 could
  2087.  colloquially be described as the ``POSIX Shell and Tools Standard.''
  2088.  
  2089.  The interfaces documented for this standard are to and from high-level
  2090.  language application programs and to and from the utilities themselves;
  2091.  the standard does not directly address the interface with users.
  2092.  
  2093.  The ``source code'' interface to the command interpreter is defined in
  2094.  terms of high-level language functions in 7.1.1 or 7.1.2 (such as
  2095.  _s_y_s_t_e_m(), B.3.1, or _p_o_p_e_n(), B.3.2).  There are also other function
  2096.  interfaces, such as those for matching regular expressions in 7.3
  2097.  (_r_e_g_c_o_m_p() in B.5).  Many of the utilities in this standard, and the
  2098.  shell itself, also accept their own command languages or complex
  2099.  directives as input data, which is also referred to as source code.  This
  2100.  data, an ordered series of characters, may be stored in files, or
  2101.  
  2102.  
  2103.                Copyright c 1991 IEEE.  All rights reserved.
  2104.       This is an unapproved IEEE Standards Draft, subject to change.
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  2                                                               1 General
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  2117.  
  2118.  ``scripts,'' that are portable between systems without true
  2119.  recompilation.  However, just as with POSIX.1 {8}, the standard addresses
  2120.  only the issue of source code portability between systems; applications
  2121.  using these calls may have to be recompiled or translated when moving
  2122.  from one system to another.
  2123.  
  2124.  There has been considerable debate concerning the appropriate scope of
  2125.  the work represented by this standard.  The following are rational
  2126.  alternatives that have been evaluated:
  2127.  
  2128.      (1)  Define the shell and tools as extensions to POSIX.1 {8}.  This
  2129.           would require a full conforming POSIX.1 {8} system as a base for
  2130.           the new facilities described here.  Vocal proponents for this
  2131.           view have been the members of the POSIX.3 working group, who
  2132.           foresaw difficulties in producing a verification suite standard
  2133.           without having a known operating system base.
  2134.  
  2135.      (2)  Decouple the shell and tools entirely from POSIX.1 {8}.  This
  2136.           would potentially allow the standard to be implemented on such
  2137.           popular operating systems as MVS/TSO, VM/CMS, MS/DOS, VMS, etc.
  2138.           Those systems would not have to provide every minor detail of
  2139.           the POSIX.1 {8} language interfaces to conform under this model-
  2140.           --only enough to support the shell and tools.
  2141.  
  2142.      (3)  Compromise between options 1 and 2.  Base the standard on an
  2143.           interface _s_i_m_i_l_a_r to POSIX.1 {8}, but don't require full
  2144.           conformance.  A simple example would be a Version 7 UNIX System,
  2145.           which could not conform to POSIX.1 {8} without considerable
  2146.           modification.  However, a vendor could support all of the
  2147.           features of this standard without changing its kernel or binary
  2148.           compatibility.  Another example would be a system that conformed
  2149.           to all stated POSIX.1 {8} interfaces, but that didn't have a
  2150.           fully conforming C Standard {7} compiler.  The difficulty with
  2151.           this option is that it makes the stated goal of the working
  2152.           group a bit fuzzier and increases the amount of analysis
  2153.           required for the features included.
  2154.  
  2155.  The working group selected option 3 as its goal.  It chose to retain the
  2156.  full UNIX system-like orientation, but did not wish to arbitrarily
  2157.  deprive legitimate systems that could _a_l_m_o_s_t conform.  No useful feature
  2158.  of shells or commonly-used utilities were discarded to accommodate
  2159.  nonconforming base systems; on the other hand, no deliberate obstacles
  2160.  were arbitrarily erected.  Furthermore, POSIX.1 {8} is still required for
  2161.  its definitions and architectural concepts, which are purposely not
  2162.  repeated in this standard.
  2163.  
  2164.  One concrete example of how the two standards interrelate is in the usage
  2165.  of POSIX.1 {8} function names in the descriptions of utilities in
  2166.  POSIX.2.  There are a number of historical commands that directly mapped
  2167.  
  2168.  
  2169.                Copyright c 1991 IEEE.  All rights reserved.
  2170.       This is an unapproved IEEE Standards Draft, subject to change.
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  1.1 Scope                                                               3
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  2183.  
  2184.  into one of the UNIX system calls.  For example:  chmod and _c_h_m_o_d(); ln
  2185.  and _l_i_n_k().  The POSIX.2 working group was faced with the problem of
  2186.  having to define all of the complex interactions ``behind the scenes''
  2187.  for some simple commands.  Creating a file, for example, involves many
  2188.  POSIX.1 {8} concepts, including processes, user IDs, multiple group
  2189.  permissions (which are optional), error conditions, etc.  Rather than
  2190.  enumerating all of these interactions in many places, the POSIX.2 group
  2191.  chose to employ the POSIX.1 {8} function descriptions, where appropriate.
  2192.  See the chmod utility in 4.7 as an example.  The utility description
  2193.  includes the phrase:
  2194.  
  2195.        ... performing actions equivalent to the _c_h_m_o_d() function as
  2196.        defined in the POSIX.1 {8} _c_h_m_o_d() function:
  2197.  
  2198.  This means that the POSIX.2 implementor has to read the POSIX.1 {8}
  2199.  _c_h_m_o_d() description and fully understand all of its functionality,
  2200.  requirements, and side effects, which now don't have to be repeated here.
  2201.  (Admittedly, this makes the POSIX.2 standard a bit more difficult to
  2202.  read, but the working group felt that precision transcended the need for
  2203.  readable or semi-tutorial documents.)
  2204.  
  2205.  The Introduction states that one of the goals of the working group was:
  2206.  ``This interface should be implementable on conforming POSIX.1 {8}
  2207.  systems.''  This implies that the working group has attempted to ensure
  2208.  that no additional functionality or extension is required to implement
  2209.  this standard on the base defined by POSIX.1 {8}.  This is not to say
  2210.  that extensions are not allowed, but that they should not be necessary.
  2211.  The goal ``(7) Utilities and standards for the installation of
  2212.  applications" was once interpreted to mean that an elaborate series of
  2213.  tools was required to install and remove applications, based on complex
  2214.  description files and system databases of capabilities.  An attempt to
  2215.  provide this was rejected by the balloting group and that type of system
  2216.  is now being evaluated by the POSIX.7 System Administration group.
  2217.  However, the original goal remains in the list, because many of the
  2218.  standard utilities are, in fact, targeted specifically for application
  2219.  installation--make, c89, lex, etc.
  2220.  
  2221.  
  2222.  1.1.1.1  Existing Practice. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  2223.  
  2224.  The working group would have been very happy to develop a standard that
  2225.  allowed all historical implementations (i.e., those existing prior to the
  2226.  time of publication) to be fully conforming and all historical
  2227.  applications to be Strictly Conforming POSIX Shell Applications without
  2228.  requiring any changes.  Some modifications will be required to reconcile
  2229.  the specific differences between historical implementations; there are
  2230.  many divergent versions of UNIX systems extant and applications have
  2231.  sometimes been written to take advantage of features (or bugs) on
  2232.  specific systems.  Therefore, the working group established a set of
  2233.  goals to maximize the value of the standard it eventually produced.
  2234.  
  2235.                Copyright c 1991 IEEE.  All rights reserved.
  2236.       This is an unapproved IEEE Standards Draft, subject to change.
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  4                                                               1 General
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  2249.  
  2250.  These goals are enumerated in the following subclauses.  They are listed
  2251.  in approximate priority sequence, where the first subclause is the most
  2252.  important portability goal.
  2253.  
  2254.  1.1.1.1.1  Preserve Historical Applications
  2255.  
  2256.  The most important priority was to ensure that historical applications
  2257.  continued to operate on conforming implementations.  This required the
  2258.  selection of many utilities and features from the most prevalent
  2259.  historical implementations.  The working group is relying on the
  2260.  following factors:
  2261.  
  2262.      (1)  Many inconsistent historical features will still be supported as
  2263.           _o_b_s_o_l_e_s_c_e_n_t.
  2264.  
  2265.      (2)  Common features of System V and BSD will continue to be
  2266.           supported by their sponsors, even if they aren't included here
  2267.           (just as long as they are not prevented from existing).
  2268.  
  2269.  Therefore, the standard was written so that the large majority of well-
  2270.  written historical applications should continue to operate as Conforming
  2271.  POSIX Shell Applications Using Extensions.
  2272.  
  2273.  1.1.1.1.2  Clean Up the Interfaces
  2274.  
  2275.  The working group chose to extend the benefits of historical UNIX systems
  2276.  by making limited improvements to the utility interfaces; numerous
  2277.  complaints have been heard over the years about the inconsistencies in
  2278.  the command line interface, which have allegedly made it harder for
  2279.  novice users.  Given the constraints of Preserve Historical Applications,
  2280.  the working group has made the following general modifications:
  2281.  
  2282.      (1)  Utilities have been extended to deal with differences in
  2283.           character sets, collating sequences, and some cultural aspects
  2284.           relating to the locale of the user.  (Examples:  new features in
  2285.           regular expressions; new formatting options in date; see 4.15.)
  2286.  
  2287.      (2)  The utility syntax guidelines in 2.10.2 have been applied to
  2288.           almost all of the utilities to promote a consistent interface.
  2289.           The guidelines themselves have been loosened up a bit from their
  2290.           counterparts in the _S_V_I_D.  In many cases historical utilities
  2291.           have not conformed with these guidelines (which were written
  2292.           considerably later than the utilities themselves).  The older
  2293.           interfaces have been maintained in the standard as obsolescent
  2294.           features.  (Examples:  join, sort.)  However, in some cases,
  2295.           such as dd and find, such major surgery was required that the
  2296.           working group decided to leave the historical interfaces as is.
  2297.           ``Fixing'' the interface would mean replacing the command, which
  2298.           would not help applications portability.  So, fixing was limited
  2299.  
  2300.  
  2301.                Copyright c 1991 IEEE.  All rights reserved.
  2302.       This is an unapproved IEEE Standards Draft, subject to change.
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  1.1 Scope                                                               5
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  2315.  
  2316.           to relatively minor abuses of the new guidelines, where
  2317.           reasonable consistency could be achieved while still maintaining
  2318.           the general type of interface of the historical version.
  2319.  
  2320.      (3)  Features that were not generally portable across machine
  2321.           architectures or systems have been removed or marked obsolescent
  2322.           and new, more portable interfaces have been introduced.
  2323.           (Examples:  the octal number methods of describing file modes in
  2324.           chmod and other utilities have been marked obsolescent; the
  2325.           symbolic ``ugo'' method has been extended to other utilities,
  2326.           such as umask.)
  2327.  
  2328.      (4)  Features that have proved to be popular in some specific UNIX
  2329.           system variants have been adopted.  (Examples:  diff -c, which
  2330.           originated in BSD systems, and the ``new'' awk, from System V.)
  2331.           Such features were selected given the requirements for balloting
  2332.           group consensus; the features had to be used widely enough to
  2333.           balance accusations of ``creeping featurism'' and violations of
  2334.           the UNIX system ``tools philosophy.''
  2335.  
  2336.      (5)  Unreasonable inconsistencies between otherwise similar
  2337.           interfaces have been reconciled.  (Example:  methods of
  2338.           specifying the patterns to the three grep-_r_e_l_a_t_e_d utilities have
  2339.           been made more consistent in the standard's single grep.)
  2340.  
  2341.      (6)  When irreconcilable differences arose between versions of
  2342.           historical utilities, new interfaces (utility names or syntax)
  2343.           were sometimes added in their places.  The working group
  2344.           resisted the urge to deviate significantly from historical
  2345.           practice; the new interfaces are generally consistent with the
  2346.           philosophy of historical systems and represent comparable
  2347.           functionality to the interfaces being replaced.  In some cases,
  2348.           System V and BSD had diverged (such as with echo and sum) so
  2349.           significantly that no compromises for a common interface were
  2350.           possible.  In these cases, either the divergent features were
  2351.           omitted or an entirely new command name was selected (such as
  2352.           with printf and cksum).
  2353.  
  2354.      (7)  Arbitrary limits to utility operations have been removed.
  2355.           (Example:  some historical ed utilities have very limited
  2356.           capabilities for dealing with large files or long input lines.)
  2357.  
  2358.      (8)  Arbitrary limitations on historical extensions have been
  2359.           eliminated.  (Example:  regular expressions have been described
  2360.           so that the popular \< ...  \> extension is allowed.)
  2361.  
  2362.      (9)  Input and output formats have been specified in more detail than
  2363.           historical implementations have required, allowing applications
  2364.           to more effectively operate in pipelines with these utilities.
  2365.  
  2366.  
  2367.                Copyright c 1991 IEEE.  All rights reserved.
  2368.       This is an unapproved IEEE Standards Draft, subject to change.
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  6                                                               1 General
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  2381.  
  2382.           (Example:  comm.)
  2383.  
  2384.  Thus, in many cases the working group could be accused of ``violating
  2385.  Existing Practice,'' and in fact received some balloting objections to
  2386.  that effect from implementors (although rarely from users or application
  2387.  developers).  The working group was sensitive to charges that it was
  2388.  engaged in arbitrary software engineering rather than merely codifying
  2389.  existing practice.  When changes were made, they were always written to
  2390.  preserve historical applications, but to move new conforming applications
  2391.  into a more consistent, portable environment.  This strategy obviously
  2392.  requires changes to historical implementations; the working group
  2393.  carefully evaluated each change, weighing the value to users against the
  2394.  one-time costs of adding the new interfaces (and of possibly breaking
  2395.  applications that took advantage of bugs), generally siding with the
  2396.  users when the costs to implementations and applications was not
  2397.  excessively high.
  2398.  
  2399.  In some cases, changes were reluctantly made that could conceivably break
  2400.  some historical applications; the working group allowed these only in the
  2401.  face of practices it considered rare or significantly misguided.
  2402.  
  2403.  1.1.1.1.3  Allow Historical Conforming Applications
  2404.  
  2405.  It is likely that many historical shell scripts will be Strictly
  2406.  Conforming POSIX.2 Applications without requiring modifications.
  2407.  Developers have long been aware of the differences among the historical
  2408.  UNIX system variants and have avoided the nonportable aspects to increase
  2409.  the scope of their applications' marketplace.  However, the previous goal
  2410.  of a consistent interface was considered to be quite important, so there
  2411.  will be modifications required to some applications if they wish to be
  2412.  maximally portable in the future.
  2413.  
  2414.  1.1.1.1.4  Preserve Historical Implementations
  2415.  
  2416.  As explained in 1.1.1.1.2, the requirements for portability and a
  2417.  consistent interface have caused the working group to add new utilities
  2418.  and features.  No historical implementations contained all of the
  2419.  attributes required by the working group.  Therefore, this lowest
  2420.  priority goal fell victim to the preceding goals, and every known
  2421.  historical implementation will require some modifications to conform to
  2422.  this standard.
  2423.  
  2424.  The working group took care to ensure that the implementations could add
  2425.  the new or modified features without breaking the operation of existing
  2426.  applications.  (Note that the standard utilities are not considered
  2427.  applications in this regard, but are part of the implementation.  In
  2428.  fact, many or most of the utilities named by this standard will have to
  2429.  change to some extent.)
  2430.  
  2431.  
  2432.  
  2433.                Copyright c 1991 IEEE.  All rights reserved.
  2434.       This is an unapproved IEEE Standards Draft, subject to change.
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  1.1 Scope                                                               7
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  2447.  
  2448.  1.1.1.2  Outside the Scope. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  2449.  
  2450.  The following areas are outside the scope of this standard.  This
  2451.  subclause explains more of the rationale behind the exclusions.  (It
  2452.  should be noted that this is not an official list.  It was not part of
  2453.  the Project Authorization Request submitted to the IEEE, but was devised
  2454.  as a guide to keep the working group discussions on track.)
  2455.  
  2456.      (1)  _O_p_e_r_a_t_i_n_g _s_y_s_t_e_m _a_d_m_i_n_i_s_t_r_a_t_i_v_e _c_o_m_m_a_n_d_s (_p_r_i_v_i_l_e_g_e_d _p_r_o_c_e_s_s_e_s,
  2457.           _s_y_s_t_e_m _p_r_o_c_e_s_s_e_s, _d_a_e_m_o_n_s, _e_t_c.).
  2458.  
  2459.           The working group followed the lead of the POSIX.1 {8} group in
  2460.           this instance.  Administrative commands were felt to be too
  2461.           implementation dependent and not useful for application
  2462.           portability.  Subsequent to this decision, a separate POSIX.7
  2463.           working group was formed to deal with this area of ``operator
  2464.           portability.''  It is anticipated that utilities needed for
  2465.           system administration will be closely coordinated with the
  2466.           POSIX.2 working group.
  2467.  
  2468.      (2)  _C_o_m_m_a_n_d_s _r_e_q_u_i_r_e_d _f_o_r _t_h_e _i_n_s_t_a_l_l_a_t_i_o_n, _c_o_n_f_i_g_u_r_a_t_i_o_n, _o_r
  2469.           _m_a_i_n_t_e_n_a_n_c_e _o_f _o_p_e_r_a_t_i_n_g _s_y_s_t_e_m_s _o_r _f_i_l_e _s_y_s_t_e_m_s.
  2470.  
  2471.           This area is similar to item (1).  System installation is
  2472.           contrasted against the application installation portion of the
  2473.           Scope by its orientation to installing the operating system
  2474.           itself, versus application programs.  The exclusion of operating
  2475.           system installation facilities should not be interpreted to mean
  2476.           that the application installation procedures _c_a_n_n_o_t be used for
  2477.           installing operating system components.  The proposed interface
  2478.           for this area encountered stiff resistance from the balloting
  2479.           group in Draft 8 and was temporarily withdrawn.  As described in
  2480.           Annex E.4, a decision of the balloting group is pending on
  2481.           whether to begin work on a supplement to this standard
  2482.           (POSIX.2b) for application installation.
  2483.  
  2484.      (3)  _N_e_t_w_o_r_k_i_n_g _c_o_m_m_a_n_d_s.
  2485.  
  2486.           These were excluded because they are deeply involved with other
  2487.           standards making bodies and are probably too complicated.  In
  2488.           this case, several working groups were formed within the POSIX
  2489.           family to deal with this.  It is anticipated that utilities
  2490.           needed for networking, if any, will be closely coordinated with
  2491.           the POSIX.2 working group.  (In early drafts of this standard,
  2492.           which predated the formation of the networking-specific POSIX
  2493.           working groups, the historical ``UNIX system to UNIX system copy
  2494.           [UUCP]'' programs and protocols were included.  These
  2495.           descriptions have been removed in deference to a more
  2496.           appropriate working group.)
  2497.  
  2498.  
  2499.                Copyright c 1991 IEEE.  All rights reserved.
  2500.       This is an unapproved IEEE Standards Draft, subject to change.
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  8                                                               1 General
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  2513.  
  2514.      (4)  _T_e_r_m_i_n_a_l _c_o_n_t_r_o_l _o_r _u_s_e_r-_i_n_t_e_r_f_a_c_e _p_r_o_g_r_a_m_s (_e._g., _v_i_s_u_a_l
  2515.           _s_h_e_l_l_s, _v_i_s_u_a_l _e_d_i_t_o_r_s, _w_i_n_d_o_w _m_a_n_a_g_e_r_s, _c_o_m_m_a_n_d _h_i_s_t_o_r_y
  2516.           _m_e_c_h_a_n_i_s_m_s, _e_t_c.).
  2517.  
  2518.           This is probably the most contentious exclusion.  A common
  2519.           complaint about many UNIX systems is how they're not very ``user
  2520.           friendly.''  Some people have hoped that the interface to users
  2521.           could be standardized with mice, icon-based desktop metaphors,
  2522.           and so forth.  This standard neatly sidesteps those concerns by
  2523.           reminding its audience that it is an application portability
  2524.           standard, and therefore has little relationship to the manner in
  2525.           which users manage their terminals.
  2526.  
  2527.           However, this guideline was not meant to apply to applications.
  2528.           It is perfectly reasonable for an application to assume it can
  2529.           have a user interacting with it.  That is why such facilities as  1
  2530.           displaying strings (with printf) without <newline>_s, stty, and    1
  2531.           various prompting utilities are included in the standard.
  2532.  
  2533.           The interfaces in this standard are very oriented to command
  2534.           lines being issued by shell scripts, or through the _s_y_s_t_e_m() or
  2535.           _p_o_p_e_n() functions.  Therefore, interactive text editors, pagers,
  2536.           and other user interface tools have been omitted for now.
  2537.           Alternatively, other standards bodies, such as X3H3.6 and the
  2538.           IEEE TCOS P1201 working group, are devising interfaces that
  2539.           could possibly be more useful and long-lived than any prescribed
  2540.           by POSIX.2.
  2541.  
  2542.           There is one area of this subject that will be addressed by
  2543.           POSIX.2.  The scope of the working group has been expanded to
  2544.           include what is being termed the _U_s_e_r _P_o_r_t_a_b_i_l_i_t_y _E_x_t_e_n_s_i_o_n,
  2545.           POSIX.2a.  This will be published as a supplement to this
  2546.           standard and have the goal of providing a portable environment
  2547.           for relatively expert time-sharing or software development
  2548.           users.  It will not attempt to deal with mice or windows or
  2549.           other advanced interfaces at this time, but should cover many of
  2550.           the terminal-oriented utilities, such as a full-screen editor,
  2551.           currently avoided by this edition of POSIX.2.
  2552.  
  2553.      (5)  _G_r_a_p_h_i_c_s _p_r_o_g_r_a_m_s _o_r _i_n_t_e_r_f_a_c_e_s.
  2554.  
  2555.           See the comments on user interface, above.
  2556.  
  2557.      (6)  _T_e_x_t _f_o_r_m_a_t_t_i_n_g _p_r_o_g_r_a_m_s _o_r _l_a_n_g_u_a_g_e_s.
  2558.  
  2559.           The existing text formatting languages are generally too
  2560.           primitive in scope to satisfy many users, who have relied on a
  2561.           myriad of macro languages.  There is an ISO standard text
  2562.           description language, SGML, but this has had insufficient
  2563.  
  2564.  
  2565.                Copyright c 1991 IEEE.  All rights reserved.
  2566.       This is an unapproved IEEE Standards Draft, subject to change.
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  1.1 Scope                                                               9
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  2579.  
  2580.           exposure to the UNIX system community for standardization as
  2581.           part of POSIX at this time.
  2582.  
  2583.      (7)  _D_a_t_a_b_a_s_e _p_r_o_g_r_a_m_s _o_r _i_n_t_e_r_f_a_c_e_s (_e._g.  _S_Q_L, _e_t_c.).
  2584.  
  2585.           These interfaces are the province of other standards bodies.
  2586.  
  2587.  
  2588.  1.1.1.3  Language-Independent Descriptions. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t
  2589.           _o_f _P_1_0_0_3._2)
  2590.  
  2591.  The POSIX.1 {8} and POSIX.5 working groups are currently engaged in
  2592.  developing the model for language-independent descriptions of system
  2593.  services.  When complete, it will allow the C language bias of the
  2594.  POSIX.1 {8} standard to be excised and C will take its place among other
  2595.  language bindings that interface with the core services descriptions.
  2596.  The POSIX.2 working group did not wish to duplicate effort, and has
  2597.  therefore waited until POSIX.1 {8} achieves progress in this area.  Thus,
  2598.  like the first version of POSIX.1 {8}, the initial drafts of POSIX.2
  2599.  start life as a C-only standard, with language independence scheduled to
  2600.  be included in a later draft.  Fortunately, this standard is
  2601.  substantially less involved with C than POSIX.1 {8} is.  In fact, all of
  2602.  the C interfaces are entirely optional.
  2603.  
  2604.  1.1.1.4  Base Documents. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  2605.  
  2606.  The working group consulted a number of documents in the course of its
  2607.  deliberations, to select utilities and features.  There were five primary
  2608.  documents that started off the process:
  2609.  
  2610.      (1)  The _S_y_s_t_e_m _V _I_n_t_e_r_f_a_c_e _D_e_f_i_n_i_t_i_o_n (_S_V_I_D), Issue 2, Volume 2.
  2611.  
  2612.      (2)  The _X/_O_p_e_n _P_o_r_t_a_b_i_l_i_t_y _G_u_i_d_e, (_X_P_G), Issues II and III, Volume
  2613.           1.
  2614.  
  2615.      (3)  _T_h_e _U_N_I_X _U_s_e_r'_s _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, 4.3 Berkeley Software
  2616.           Distribution, Virtual VAX-11 Version.  (The printed
  2617.           documentation as well as the online versions provided with the
  2618.           BSD ``Tahoe'' and ``Reno'' distributions were considered as one
  2619.           base document for the POSIX.2 work.)
  2620.  
  2621.      (4)  _T_h_e _K_o_r_n_S_h_e_l_l _C_o_m_m_a_n_d _a_n_d _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e, by Bolsky and
  2622.           Korn.
  2623.  
  2624.      (5)  _T_h_e _A_W_K _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e, by Aho, Kernighan, and Weinberger.
  2625.  
  2626.  The _X_P_G was used most heavily in initial deliberations about which
  2627.  utilities and features to include.  The X/Open companies had done a very
  2628.  thorough job in analyzing the _S_V_I_D and other standards to compile a list
  2629.  
  2630.  
  2631.                Copyright c 1991 IEEE.  All rights reserved.
  2632.       This is an unapproved IEEE Standards Draft, subject to change.
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  10                                                              1 General
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  2645.  
  2646.  of the most useful and portable utilities.  They carefully marked many
  2647.  features that had portability problems and the working group avoided them
  2648.  for this standard.
  2649.  
  2650.  AT&T, X/Open, and Berkeley provided machine-readable documentation for
  2651.  the use of the working group.  However, due to very substantial
  2652.  differences in formatting standards, there is little resemblance between
  2653.  some of the utilities described here and their cousins in the _S_V_I_D, _X_P_G,
  2654.  and BSD user manual.  Nevertheless, early usage of these documents was an
  2655.  invaluable aid in the production of the standard and the POSIX.2 working
  2656.  group extends its sincere thanks to all three organizations for their
  2657.  generous cooperation.
  2658.  
  2659.  The biggest divergence in POSIX.2's documentation has been its philosophy
  2660.  of fully specifying interfaces.  The _S_V_I_D and _X_P_G are oriented solely
  2661.  towards application portability.  Implementors would have a difficult
  2662.  time writing some of these utilities from the descriptions alone.  In
  2663.  fact, both documents freely rely on the potential implementors licensing
  2664.  the source code for the reference systems to complete the specification.
  2665.  The POSIX.2 standard, on the other hand, also has implementors in its
  2666.  audience and it strove to expand its descriptions wherever useful and
  2667.  feasible.  For example, it makes use of BNF grammars to describe complex
  2668.  syntaxes.  It attempts to describe the interactions between options,
  2669.  operands, and environment variables, where conflicts can exist.  It also
  2670.  attempts to describe all of the useful utility input and output formats.
  2671.  The goal here was to allow application developers to write filters or
  2672.  other programs that could parse the output of any of these utilities or
  2673.  to provide meaningful input from their programs.  To the working group's
  2674.  knowledge, this is a task never before attempted for the historical UNIX
  2675.  system commands-the source code was always so readily available to anyone
  2676.  who really needed to know this information.
  2677.  
  2678.  The two commercial books listed were used as reference materials in
  2679.  preparing information on the shell and the _a_w_k language that was more
  2680.  recent and complete than AT&T's or X/Open's documentation.
  2681.  
  2682.  
  2683.  1.1.1.5  History. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  2684.  
  2685.  The _1_9_8_4 /_u_s_r/_g_r_o_u_p _S_t_a_n_d_a_r_d was originally intended to include the shell
  2686.  and user level commands.  However, the /usr/group (now known as
  2687.  ``UniForum'') Standards Committee was unable to begin this effort, due to
  2688.  the complexity of the system call and library functions that it
  2689.  eventually did publish.
  2690.  
  2691.  A shell was referred to in the _s_y_s_t_e_m() function defined by _A_N_S_I/_X_3._1_5_9-
  2692.  _1_9_8_9 _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e _C _S_t_a_n_d_a_r_d, but no syntax for the shell command
  2693.  language was attempted.
  2694.  
  2695.  
  2696.  
  2697.                Copyright c 1991 IEEE.  All rights reserved.
  2698.       This is an unapproved IEEE Standards Draft, subject to change.
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  1.1 Scope                                                              11
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  2711.  
  2712.  As the first version of POSIX.1 {8} neared completion, it became apparent
  2713.  that the usefulness of POSIX would be diminished if no shell or utilities
  2714.  were defined.  Therefore, the POSIX.2 working group was formed in January
  2715.  1986 at the Denver, Colorado, meeting of POSIX.1 {8} to address this
  2716.  concern.
  2717.  
  2718.  The progress of the working group has seemed rather slow during the more
  2719.  than three years of its existence.  This is primarily because its
  2720.  membership had substantial overlap with the POSIX.1 {8} working group;
  2721.  for example, the Chair of POSIX.2 was also the Technical Editor of
  2722.  POSIX.1 {8} (and POSIX.2 as well!) at the time.  And, meetings were
  2723.  arbitrarily shortened to allow the POSIX.1 {8} group to move forward as
  2724.  quickly as possible.
  2725.  
  2726.  
  2727.  1.1.1.6  Internationalization. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  2728.  
  2729.  Some of the utilities and concepts described in this standard contain
  2730.  requirements that standardize multilingual and multicultural support.
  2731.  Most of the internationalized support for this standard was proposed by
  2732.  the UniForum Technical Committee Subcommittee on Internationalization, at
  2733.  the request of the POSIX.2 working group.
  2734.  
  2735.  UniForum, a nonprofit organization, organizes subcommittees of Technical
  2736.  Committees to do standards research on different topics pertinent to
  2737.  POSIX.  The UniForum Subcommittee on Internationalization is one such
  2738.  group.  It was formed to propose and promote standard internationalized
  2739.  extensions to POSIX-based systems.  The POSIX.2 working group and the
  2740.  UniForum Subcommittee on Internationalization coordinated their work by
  2741.  the use of liaison members, who attended the meetings of both groups.
  2742.  The interaction between the two groups started when POSIX.2 asked the
  2743.  Subcommittee on Internationalization to provide internationalized support
  2744.  for regular expressions.  Later, the Subcommittee on Internationalization
  2745.  was charged with identifying areas in the standard needing changes for
  2746.  internationalized support and proposing those changes.
  2747.  
  2748.  1.1.1.7  Test Methods. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  2749.  
  2750.  The POSIX.3 working group has worked on a test methods specification for
  2751.  verifying conformance to POSIX standards in general and POSIX.1 {8} and
  2752.  POSIX.2 in particular.  Test methods for POSIX.2 should be published as a
  2753.  separate document1) sometime after POSIX.2 is approved.
  2754.  
  2755.  
  2756.  
  2757.  __________
  2758.   1) See the Foreword for information on the activities of other POSIX
  2759.      working groups.
  2760.  
  2761.  
  2762.  
  2763.                Copyright c 1991 IEEE.  All rights reserved.
  2764.       This is an unapproved IEEE Standards Draft, subject to change.
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  12                                                              1 General
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  2777.  
  2778.  1.1.1.8  Organization of the Standard. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  2779.           _P_1_0_0_3._2)
  2780.  
  2781.  The standard document is organized into sections.  Some of these, such as
  2782.  the Scope in 1.1, are mandated by ISO/IEC, the IEEE, and other standards
  2783.  bodies.  The remainder of the document is organized into small sections
  2784.  for the convenience of the working group and others.  It has been
  2785.  suggested that all of the utility descriptions (and maybe the functions,
  2786.  too) should be lumped into one large section, all in alphabetical order.
  2787.  This would presumably make it easier for some users to use the document
  2788.  as a reference document.  The working group deliberately chose to not
  2789.  organize it in this way, for the following reasons:
  2790.  
  2791.      (1)  Certain sections are optional.  It is more convenient for the
  2792.           document's internal references, and also for people specifying
  2793.           systems, if these optional sections are in large pieces, rather
  2794.           than a detailed list of utility names.
  2795.  
  2796.      (2)  Future supplements to this standard will be adding new utilities
  2797.           that will also be optional.  It would be confusing to try to
  2798.           merge documents at a level below major sections (chapters).
  2799.  
  2800.  END_RATIONALE
  2801.  
  2802.  
  2803.  
  2804.  1.2  Normative References
  2805.  
  2806.  The following standards contain provisions which, through references in
  2807.  this text, constitute provisions of this standard.  At the time of
  2808.  publication, the editions indicated were valid.  All standards are
  2809.  subject to revision, and parties to agreements based on this part of this
  2810.  International Standard are encouraged to investigate the possibility of
  2811.  applying the most recent editions of the standards listed below.  Members
  2812.  of IEC and ISO maintain registers of currently valid International
  2813.  Standards.
  2814.  
  2815.  {1}   ISO/IEC 646: 1983,2) _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g--_I_S_O _7-_b_i_t _c_o_d_e_d
  2816.        _c_h_a_r_a_c_t_e_r _s_e_t _f_o_r _i_n_f_o_r_m_a_t_i_o_n _i_n_t_e_r_c_h_a_n_g_e.
  2817.  
  2818.  
  2819.  
  2820.  __________
  2821.   2) Under revision.  (This notation is meant to explicitly reference the
  2822.      1990 Draft International Standard version of ISO/IEC 646.)
  2823.  
  2824.      ISO/IEC documents can be obtained from the ISO office, 1, rue de
  2825.      Varembe', Case Postale 56, CH-1211, Gene`ve 20, Switzerland/Suisse.
  2826.  
  2827.  
  2828.  
  2829.                Copyright c 1991 IEEE.  All rights reserved.
  2830.       This is an unapproved IEEE Standards Draft, subject to change.
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.  1.2 Normative References                                               13
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  2843.  
  2844.  {2}   ISO 1539: 1980, _P_r_o_g_r_a_m_m_i_n_g _l_a_n_g_u_a_g_e_s--_F_O_R_T_R_A_N.
  2845.  
  2846.  {3}   ISO 4217: 1987, _C_o_d_e_s _f_o_r _t_h_e _r_e_p_r_e_s_e_n_t_a_t_i_o_n _o_f _c_u_r_r_e_n_c_i_e_s _a_n_d
  2847.        _f_u_n_d_s.
  2848.  
  2849.  {4}   ISO 4873: 1986, _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g--_I_S_O _8-_b_i_t _c_o_d_e _f_o_r
  2850.        _i_n_f_o_r_m_a_t_i_o_n _i_n_t_e_r_c_h_a_n_g_e--_S_t_r_u_c_t_u_r_e _a_n_d _r_u_l_e _f_o_r _i_m_p_l_e_m_e_n_t_a_t_i_o_n.
  2851.  
  2852.  {5}   ISO 8859-1: 1987, _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g--_8-_b_i_t _s_i_n_g_l_e-_b_y_t_e _c_o_d_e_d
  2853.        _g_r_a_p_h_i_c _c_h_a_r_a_c_t_e_r _s_e_t_s--_P_a_r_t _1: _L_a_t_i_n _a_l_p_h_a_b_e_t _N_o. _1.
  2854.  
  2855.  {6}   ISO 8859-2: 1987, _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g--_8-_b_i_t _s_i_n_g_l_e-_b_y_t_e _c_o_d_e_d
  2856.        _g_r_a_p_h_i_c _c_h_a_r_a_c_t_e_r _s_e_t_s--_P_a_r_t _2: _L_a_t_i_n _a_l_p_h_a_b_e_t _N_o. _2.
  2857.  
  2858.  {7}   ISO/IEC 9899: 1990, _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g _s_y_s_t_e_m_s--_P_r_o_g_r_a_m_m_i_n_g      1
  2859.        _l_a_n_g_u_a_g_e_s--_C.
  2860.  
  2861.  {8}   ISO/IEC 9945-1: 1990, _I_n_f_o_r_m_a_t_i_o_n _t_e_c_h_n_o_l_o_g_y--_P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g
  2862.        _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e (_P_O_S_I_X)--_P_a_r_t _1: _S_y_s_t_e_m _A_p_p_l_i_c_a_t_i_o_n _P_r_o_g_r_a_m
  2863.        _I_n_t_e_r_f_a_c_e (_A_P_I) [_C _L_a_n_g_u_a_g_e]
  2864.  
  2865.  
  2866.  
  2867.  1.3  Conformance
  2868.  
  2869.  
  2870.  1.3.1  Implementation Conformance
  2871.  
  2872.  1.3.1.1  Requirements
  2873.  
  2874.  A _c_o_n_f_o_r_m_i_n_g _i_m_p_l_e_m_e_n_t_a_t_i_o_n shall meet all of the following criteria:
  2875.  
  2876.      (1)  The system shall support all required interfaces defined within
  2877.           this standard.  These interfaces shall support the functional
  2878.           behavior described herein.  The system shall provide the shell
  2879.           command language described in Section 3 and the utilities in
  2880.           Section 4.
  2881.  
  2882.      (2)  The system may provide one or more of the following:  the
  2883.           Software Development Utilities Option, the C Language Bindings
  2884.           Option, the C Language Development Utilities Option, the FORTRAN
  2885.           Development Utilities Option, or the FORTRAN Runtime Utilities
  2886.           Option.  When an implementation claims that an optional facility
  2887.           is provided, all of its constituent parts shall be provided.
  2888.  
  2889.      (3)  The system may provide additional or enhanced utilities,
  2890.           functions, or facilities not required by this standard.
  2891.           Nonstandard extensions should be identified as such in the
  2892.           system documentation.  Nonstandard extensions, when used, may
  2893.  
  2894.  
  2895.                Copyright c 1991 IEEE.  All rights reserved.
  2896.       This is an unapproved IEEE Standards Draft, subject to change.
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  14                                                              1 General
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  2909.  
  2910.           change the behavior of utilities, functions, or facilities
  2911.           defined by this standard.  In such cases, the implementation's
  2912.           conformance document (see 2.2.1.2) shall define an execution
  2913.           environment (i.e., shall provide general operating instructions)
  2914.           in which an application can be run with the behavior specified
  2915.           by the standard.  In no case shall such an environment require
  2916.           modification of a Strictly Conforming POSIX.2 Application.
  2917.  
  2918.  
  2919.  1.3.1.2  Documentation
  2920.  
  2921.  A conformance document with the following information shall be available
  2922.  for an implementation claiming conformance to this standard.  The
  2923.  conformance document shall have the same structure as this standard, with
  2924.  the information presented in the appropriately numbered sections;
  2925.  sections that consist solely of subordinate section titles, with no other
  2926.  information, are not required.
  2927.  
  2928.  The conformance document shall not contain information about extended
  2929.  facilities or capabilities outside the scope of this standard, unless
  2930.  those extensions affect the behavior of a Strictly Conforming POSIX.2
  2931.  Application; in such cases, the documentation required by the previous
  2932.  subclause shall be included.
  2933.  
  2934.  The conformance document shall contain a statement that indicates the
  2935.  full name, number, and date of the standard that applies.  The
  2936.  conformance document may also list software standards approved by ISO/IEC
  2937.  or any ISO/IEC member body that are available for use by a Conforming
  2938.  POSIX.2 Application.  It should indicate whether it is based on a fully-
  2939.  conformant POSIX.1 {8} system.  Applicable characteristics where
  2940.  documentation is required by one of these standards, or by standards of
  2941.  government bodies, may also be included.
  2942.  
  2943.  The conformance document shall describe the symbolic values found in
  2944.  2.13.2, stating values, the conditions under which those values can
  2945.  change, and the limits of such variations, if any.
  2946.  
  2947.  The conformance document shall describe the behavior of the
  2948.  implementation for all implementation-defined features defined in this
  2949.  standard.  This requirement shall be met by listing these features and
  2950.  providing either a specific reference to the system documentation or
  2951.  providing full syntax and semantics of these features.  When the value or
  2952.  behavior in the implementation is designed to be variable or customizable
  2953.  on each instantiation of the system, the implementation provider shall
  2954.  document the nature and permissible ranges of this variation.  When
  2955.  information required by this standard is related to the underlying
  2956.  operating system and is already available in the POSIX.1 {8} conformance
  2957.  document, the implementation need not duplicate this information in the
  2958.  POSIX.2 conformance document, but may provide a cross-reference for this
  2959.  purpose.
  2960.  
  2961.                Copyright c 1991 IEEE.  All rights reserved.
  2962.       This is an unapproved IEEE Standards Draft, subject to change.
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  1.3 Conformance                                                        15
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  2975.  
  2976.  The conformance document may specify the behavior of the implementation
  2977.  for those features where this standard states that implementations may
  2978.  vary or where features are identified as undefined or unspecified.
  2979.  
  2980.  No specifications other than those described in this subclause (1.3.1.2)
  2981.  shall be present in the conformance document.
  2982.  
  2983.  The phrase ``shall be documented'' in this standard means that
  2984.  documentation of the feature shall appear in the conformance document, as
  2985.  described previously, unless the system documentation is explicitly
  2986.  mentioned.
  2987.  
  2988.  The system documentation should also contain the information found in the
  2989.  conformance document.
  2990.  
  2991.  
  2992.  1.3.1.3  Conforming Implementation Options
  2993.  
  2994.  The following symbolic constants, described in 2.13.2 reflect
  2995.  implementation options for this standard that could warrant requirement
  2996.  by Conforming POSIX.2 Applications, or in specifications of conforming
  2997.  systems, or both:
  2998.  
  2999.     {POSIX2_SW_DEV}        The system supports the Software Development
  3000.                            Utilities Option in Section 6.
  3001.  
  3002.     {POSIX2_C_BIND}        The system supports the C Language Bindings
  3003.                            Option in Annex B.
  3004.  
  3005.     {POSIX2_C_DEV}         The system supports the C Language Development
  3006.                            Utilities Option in Annex A.
  3007.  
  3008.     {POSIX2_FORT_DEV}      The system supports the FORTRAN Development
  3009.                            Utilities Option in Annex C.
  3010.  
  3011.     {POSIX2_FORT_RUN}      The system supports the FORTRAN Runtime
  3012.                            Utilities Option in Annex C.
  3013.  
  3014.     {POSIX2_LOCALEDEF}     The system supports the creation of locales as
  3015.                            described in 4.35.
  3016.  
  3017.  Additional language bindings and development utility options may be
  3018.  provided in other related standards or in future revisions to this
  3019.  standard.  In the former case, additional symbolic constants of the same
  3020.  general form as shown in this subclause should be defined by the related
  3021.  standard document and made available to the application, without
  3022.  requiring this POSIX.2 document to be updated.
  3023.  
  3024.  
  3025.  
  3026.  
  3027.                Copyright c 1991 IEEE.  All rights reserved.
  3028.       This is an unapproved IEEE Standards Draft, subject to change.
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  16                                                              1 General
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  3041.  
  3042.  1.3.2  Application Conformance
  3043.  
  3044.  All applications claiming conformance to this standard fall within one of
  3045.  the following categories:
  3046.  
  3047.  
  3048.  1.3.2.1  Strictly Conforming POSIX.2 Application
  3049.  
  3050.  A Strictly Conforming POSIX.2 Application is an application that requires
  3051.  only the facilities described in this standard (including any required
  3052.  facilities of the underlying operating system; see 2.9.1).  Such an
  3053.  application:
  3054.  
  3055.      (1)  shall accept any implementation behavior that results from
  3056.           actions it takes in areas described in this standard as
  3057.           _i_m_p_l_e_m_e_n_t_a_t_i_o_n-_d_e_f_i_n_e_d or _u_n_s_p_e_c_i_f_i_e_d, or where the standard
  3058.           indicates that implementations may vary;
  3059.  
  3060.      (2)  shall not perform any actions that are described as producing
  3061.           _u_n_d_e_f_i_n_e_d results;
  3062.  
  3063.      (3)  for symbolic constants, shall accept any value in the range
  3064.           permitted by this standard, but shall not rely on any value in
  3065.           the range being greater than the minimums listed in this
  3066.           standard;
  3067.  
  3068.      (4)  shall not use facilities designated as _o_b_s_o_l_e_s_c_e_n_t;
  3069.  
  3070.      (5)  is required to tolerate, and is permitted to adapt to, the        1
  3071.           presence or absence of optional facilities whose availability is  1
  3072.           indicated by the constants in 2.13.1, or that are described       1
  3073.           using the verb _m_a_y.  However, an application requiring a high-    1
  3074.           level language binding option can only be considered at best a
  3075.           Conforming POSIX.2 Application; see 1.3.2.2.
  3076.  
  3077.  Within this standard, any restrictions placed upon a Conforming POSIX.2
  3078.  Application shall also restrict a Strictly Conforming POSIX.2
  3079.  Application.
  3080.  
  3081.  1.3.2.2  Conforming POSIX.2 Application
  3082.  
  3083.  The term Conforming POSIX.2 Application is used to describe either of the
  3084.  two following application types.
  3085.  
  3086.  
  3087.  
  3088.  
  3089.  
  3090.  
  3091.  
  3092.  
  3093.                Copyright c 1991 IEEE.  All rights reserved.
  3094.       This is an unapproved IEEE Standards Draft, subject to change.
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  1.3 Conformance                                                        17
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  3107.  
  3108.  1.3.2.2.1  ISO/IEC Conforming POSIX.2 Application
  3109.  
  3110.  An ISO/IEC Conforming POSIX.2 Application is an application that uses
  3111.  only the facilities described in this standard (including the implied
  3112.  facilities of the underlying operating system; see 2.9.1) and approved
  3113.  conforming language bindings for any ISO/IEC standard.  Such an
  3114.  application shall include a statement of conformance that documents all
  3115.  options and limit dependencies, and all other ISO/IEC standards used.
  3116.  
  3117.  1.3.2.2.2  <National Body> Conforming POSIX.2 Application
  3118.  
  3119.  A <National Body> Conforming POSIX.2 Application differs from an ISO/IEC
  3120.  Conforming POSIX.2 Application in that it also may use specific standards
  3121.  of a single ISO/IEC member body referred to here as ``<_N_a_t_i_o_n_a_l _B_o_d_y>.''
  3122.  Such an application shall include a statement of conformance that
  3123.  documents all options and limit dependencies, and all other <_N_a_t_i_o_n_a_l
  3124.  _B_o_d_y> standards used.
  3125.  
  3126.  
  3127.  1.3.2.3  Conforming POSIX.2 Application Using Extensions
  3128.  
  3129.  A Conforming POSIX.2 Application Using Extensions is an application that
  3130.  differs from a Conforming POSIX.2 Application only in that it uses
  3131.  nonstandard facilities that are consistent with this standard.  Such an
  3132.  application shall fully document its requirements for these extended
  3133.  facilities, in addition to the documentation required of a Conforming
  3134.  POSIX.2 Application.  A Conforming POSIX.2 Application Using Extensions
  3135.  shall be either an ISO/IEC Conforming POSIX.2 Application Using
  3136.  Extensions or a <National Body> Conforming POSIX.2 Application Using
  3137.  Extensions (see 1.3.2.2.1 and 1.3.2.2.2).
  3138.  
  3139.  BEGIN_RATIONALE
  3140.  
  3141.  
  3142.  1.3.3  Conformance Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  3143.  
  3144.  These conformance definitions are closely related to those in
  3145.  POSIX.1 {8}.
  3146.  
  3147.  The terms _C_o_n_f_o_r_m_i_n_g _P_O_S_I_X._2 _A_p_p_l_i_c_a_t_i_o_n and its variants were selected
  3148.  to parallel the terms used in POSIX.1 {8}.
  3149.  
  3150.  The descriptions of the ISO/IEC and <National Body> Conforming POSIX.2
  3151.  Applications are similar to the same descriptions in POSIX.1 {8}.  This
  3152.  is not a duplication of effort, as this standard relies on only a portion
  3153.  of POSIX.1 {8}, as explained in 1.1 and 2.9.1.  Therefore conformance to
  3154.  POSIX.2 has to be described separately from any conformance options or
  3155.  requirements in POSIX.1 {8}.
  3156.  
  3157.  
  3158.  
  3159.                Copyright c 1991 IEEE.  All rights reserved.
  3160.       This is an unapproved IEEE Standards Draft, subject to change.
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  18                                                              1 General
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  3173.  
  3174.  A reference to a Language-Independent System Services Option was removed
  3175.  from the list of optional features that may be provided by the conforming
  3176.  implementation.  There is no conformance value provided by that section,
  3177.  except as a reference point for functions actually provided by a real
  3178.  language binding.  Therefore, the language binding sections are the ones
  3179.  that remain in the optional list.  The Draft 8 section Language-Dependent
  3180.  Services for the C Programming Language was removed, as this subject is
  3181.  adequately, and appropriately, covered in Annex A.
  3182.  
  3183.  The documentation requirement for implementation extensions (``shall
  3184.  define an execution environment'') is simply meant to require that
  3185.  system-wide or per-user configuration options or environment variables
  3186.  that affect the operation of applications that use the standard utilities
  3187.  and functions be described in the conformance document.  For example, if
  3188.  setting the (imaginary) LC_TRUTH variable causes changes in the exit
  3189.  status of true, the conformance document must describe this condition and
  3190.  how to avoid it--say, by unsetting the variable in the login script.
  3191.  
  3192.  For further rationale on the types of conformance, see the POSIX.1 {8}
  3193.  Rationale.
  3194.  
  3195.  END_RATIONALE
  3196.  
  3197.  
  3198.  
  3199.  
  3200.  
  3201.  
  3202.  
  3203.  
  3204.  
  3205.  
  3206.  
  3207.  
  3208.  
  3209.  
  3210.  
  3211.  
  3212.  
  3213.  
  3214.  
  3215.  
  3216.  
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.                Copyright c 1991 IEEE.  All rights reserved.
  3226.       This is an unapproved IEEE Standards Draft, subject to change.
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  1.3 Conformance                                                        19
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.  
  3243.  
  3244.  
  3245.  
  3246.  
  3247.  
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.  
  3255.  
  3256.  
  3257.  
  3258.  
  3259.  
  3260.  
  3261.  
  3262.  
  3263.  
  3264.  
  3265.  
  3266.  
  3267.  
  3268.  
  3269.  
  3270.  
  3271.  
  3272.  
  3273.  
  3274.  
  3275.  
  3276.  
  3277.  
  3278.  
  3279.  
  3280.  
  3281.  
  3282.  
  3283.  
  3284.  
  3285.  
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.                                                              P1003.2/D11.2
  3305.  
  3306.  
  3307.  
  3308.  
  3309.  
  3310.  
  3311.  
  3312.  
  3313.               Section 2: Terminology and General Requirements
  3314.  
  3315.  
  3316.  
  3317.  2.1  Conventions
  3318.  
  3319.  
  3320.  2.1.1  Editorial Conventions
  3321.  
  3322.  This standard uses the following editorial and typographical conventions.
  3323.  A summary of typographical conventions is shown in Table 2-1.
  3324.  
  3325.  The Bold Courier font is used to show brackets that denote optional
  3326.  arguments in a utility synopsis, as in
  3327.  
  3328.  
  3329.        cut  [-_c _l_i_s_t] [_f_i_l_e__n_a_m_e]
  3330.  
  3331.  These brackets shall not be used by the application unless they are
  3332.  specifically mentioned as literal input characters by the utility
  3333.  description.
  3334.  
  3335.  There are two types of symbols enclosed in angle brackets (< >):
  3336.  
  3337.     C-Language Headers   The header name is in the Courier font, such as
  3338.                          <sys/stat.h>.  When coding C programs, the
  3339.                          brackets are used as required by the language.
  3340.  
  3341.     Parameters           Parameters, also called _m_e_t_a_v_a_r_i_a_b_l_e_s, are in
  3342.                          italics, such as <_d_i_r_e_c_t_o_r_y _p_a_t_h_n_a_m_e>.  The
  3343.                          entire symbol, including the brackets, is meant
  3344.                          to be replaced by the value of the symbol
  3345.                          described within the brackets.
  3346.  
  3347.  Numbers within braces, such as ``POSIX.1 {8},'' represent cross
  3348.  references to the Normative References clause (see 1.2).  If the number
  3349.  is preceded by a B, it represents a Bibliographic entry (see Annex D).
  3350.  Bibliographic entries are for information only.
  3351.  
  3352.  In some examples, the Bold Courier font is used to indicate the system's
  3353.  output that resulted from some user input, shown in Courier.
  3354.  
  3355.  
  3356.  
  3357.                Copyright c 1991 IEEE.  All rights reserved.
  3358.       This is an unapproved IEEE Standards Draft, subject to change.
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  2.1 Conventions                                                        21
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  3371.  
  3372.  
  3373.                   Table 2-1  -  Typographical Conventions
  3374.  __________________________________________________________________________________________________________________________________________________
  3375.                  Reference                           Example
  3376.     ___________________________________________________________________
  3377.  
  3378.     C-Language Data Type                  _l_o_n_g
  3379.     C-Language Function                   _s_y_s_t_e_m()
  3380.     C-Language Function Argument          _a_r_g_1
  3381.     C-Language Global External            _e_r_r_n_o
  3382.     C-Language Header                     <sys/stat.h>
  3383.     C-Language Keyword                    #define
  3384.     Cross Reference: Annex                Annex A
  3385.     Cross Reference: Clause               2.3
  3386.     Cross Reference: Other Standard       ISO 9999-1 {_n}
  3387.     Cross Reference: Section              Section 2
  3388.     Cross Reference: Subclause            2.3.4, 2.3.4.5, 2.3.4.5.6
  3389.     Defined Term                          (see text)
  3390.     Environment Variable                  PATH
  3391.     Error Number                          [EINTR]
  3392.     Example Input                         echo foo
  3393.     Example Output                        foo
  3394.     Figure Reference                      Figure 7
  3395.     File Name                             /tmp
  3396.     Parameter                             <_d_i_r_e_c_t_o_r_y _p_a_t_h_n_a_m_e>
  3397.     Special Character                     <newline>
  3398.     Symbolic Constant, Limit              {_POSIX_VDISABLE}, {LINE_MAX}
  3399.     Table Reference                       Table 6
  3400.     Utility Name                          awk
  3401.     Utility Operand                       _f_i_l_e__n_a_m_e
  3402.     Utility Option                        -c
  3403.     Utility Option with Option-Argument   -w _w_i_d_t_h
  3404.  __________________________________________________________________________________________________________________________________________________
  3405.  
  3406.  
  3407.  Defined terms are shown in three styles, depending on context:
  3408.  
  3409.      (1)  Terms defined in 2.2.1, 2.2.2, and 3.1 are expressed as
  3410.           subclause titles.  Alternative forms of the terms appear in
  3411.           [brackets].
  3412.  
  3413.      (2)  The initial appearances of other terms, applying to a limited
  3414.           portion of the text, are in _i_t_a_l_i_c_s.
  3415.  
  3416.      (3)  Subsequent appearances of the term are in the Roman font.
  3417.  
  3418.  Symbolic constants are shown in two styles:  those within curly braces
  3419.  are intended to call the reader's attention to values in <limits.h> and
  3420.  <unistd.h>; those without braces are usually defined by one or a few
  3421.  related functions.  There is no semantic difference between these two
  3422.  
  3423.                Copyright c 1991 IEEE.  All rights reserved.
  3424.       This is an unapproved IEEE Standards Draft, subject to change.
  3425.  
  3426.  
  3427.  
  3428.  
  3429.  
  3430.  22                                 2 Terminology and General Requirements
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  3437.  
  3438.  forms of presentation.
  3439.  
  3440.  Filenames and pathnames are shown in Courier.  When a pathname is shown
  3441.  starting with ``$HOME/'', this indicates the remaining components of the
  3442.  pathname are to be related to the directory named by the user's HOME
  3443.  environment variable.
  3444.  
  3445.  The style selected for some of the special characters, such as <newline>,
  3446.  matches the form of the input given to the localedef utility (see 2.5.2).
  3447.  Generally, the characters selected for this special treatment are those
  3448.  that are not visually distinct, such as the control characters <tab> or
  3449.  <newline>.
  3450.  
  3451.  Literal characters and strings used as input or output are shown in
  3452.  various ways, depending on context:
  3453.  
  3454.     %,  begin   When no confusion would result, the character or string is
  3455.                 rendered in the Courier font and used directly in the
  3456.                 text.
  3457.  
  3458.     'c'         In some cases a character is enclosed in single-quote
  3459.                 characters, similar to a C-language character constant.
  3460.                 Unless otherwise noted, the quotes shall not be used as
  3461.                 input or output.
  3462.  
  3463.     "string"    In some cases, a string is enclosed in double-quote
  3464.                 characters, similar to a C-language string constant.
  3465.                 Unless otherwise noted, the quotes shall not be used as
  3466.                 input or output.
  3467.  
  3468.  Defined names that are usually in lowercase, particularly function names,
  3469.  are never used at the beginning of a sentence or anywhere else that
  3470.  regular English usage would require them to be capitalized.
  3471.  
  3472.  Parenthetical expressions within normative text also contain normative
  3473.  information.  The general typographic hierarchy of parenthetical
  3474.  expressions is:
  3475.  
  3476.        {     [     (     )     ]     }
  3477.  
  3478.  The square brackets are most frequently used to enclose a parenthetical
  3479.  expression that contains a function name [such as _w_a_i_t_p_i_d()], with its
  3480.  built-in parentheses.
  3481.  
  3482.  In some cases, tabular information is presented inline; in others it is
  3483.  presented in a separately-labeled Table.  This arrangement was employed
  3484.  purely for ease of reference and there is no normative difference between
  3485.  these two cases.
  3486.  
  3487.  
  3488.  
  3489.                Copyright c 1991 IEEE.  All rights reserved.
  3490.       This is an unapproved IEEE Standards Draft, subject to change.
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496.  2.1 Conventions                                                        23
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  3503.  
  3504.  Annexes marked as _n_o_r_m_a_t_i_v_e are parts of the standard that pose
  3505.  requirements, exactly the same as the numbered Sections, but have been
  3506.  moved to near the end of the document for clarity of exposition.
  3507.  _I_n_f_o_r_m_a_t_i_v_e Annexes are for information only and pose no requirements.
  3508.  All material preceding page 1 of the document (the ``front matter'') and
  3509.  the two indexes at the end are also only informative.
  3510.  
  3511.  NOTES that appear in a smaller point size and are indented have one of
  3512.  two different meanings, depending on their location:
  3513.  
  3514.      - When they are within the normal text of the document, they are the
  3515.        same as footnotes--informative, posing no requirements on
  3516.        implementations or applications.
  3517.  
  3518.      - When they are attached to Tables or Figures, they are normative,
  3519.        posing requirements.
  3520.  
  3521.  Text marked as examples (including the use of ``e.g.'')  is for
  3522.  information only.  The exception to this comes in the C-language programs
  3523.  and program fragments used to represent algorithms, as described in
  3524.  2.1.3.
  3525.  
  3526.  The typographical conventions listed here are for ease of reading only.
  3527.  Editorial inconsistencies in the use of typography are unintentional and
  3528.  have no normative meaning in this standard.
  3529.  
  3530.  
  3531.  2.1.2  Grammar Conventions
  3532.  
  3533.  Portions of this standard are expressed in terms of a special grammar
  3534.  notation.  It is used to portray the complex syntax of certain program
  3535.  input.  The grammar is based on the syntax used by the yacc utility (see
  3536.  A.3).  However, it does not represent fully functional yacc input,
  3537.  suitable for program use:  the lexical processing and all semantic
  3538.  requirements are described only in textual form.  The grammar is not
  3539.  based on source used in any traditional implementation and has not been
  3540.  tested with the semantic code that would normally be required to
  3541.  accompany it.  Furthermore, there is no implication that the partial yacc
  3542.  code presented represents the most efficient, or only, means of
  3543.  supporting the complex syntax within the utility.  Implementations may
  3544.  use other programming languages or algorithms, as long as the syntax
  3545.  supported is the same as that represented by the grammar.
  3546.  
  3547.  The following typographical conventions are used in the grammar; they
  3548.  have no significance except to aid in reading.
  3549.  
  3550.      - The identifiers for the reserved words of the language are shown
  3551.        with a leading capital letter.  (These are terminals in the
  3552.        grammar.  Examples:  While, Case.)
  3553.  
  3554.  
  3555.                Copyright c 1991 IEEE.  All rights reserved.
  3556.       This is an unapproved IEEE Standards Draft, subject to change.
  3557.  
  3558.  
  3559.  
  3560.  
  3561.  
  3562.  24                                 2 Terminology and General Requirements
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  3569.  
  3570.      - The identifiers for terminals in the grammar are all named with      1
  3571.        uppercase letters and underscores.  Examples:  NEWLINE, ASSIGN_OP,   1
  3572.        NAME.                                                                1
  3573.  
  3574.      - The identifiers for nonterminals are all lowercase.
  3575.  
  3576.  
  3577.  2.1.3  Miscellaneous Conventions
  3578.  
  3579.  This standard frequently uses the C language to express algorithms in
  3580.  terms of programs or program fragments.  The following shall be
  3581.  considered in reading this code:
  3582.  
  3583.      - The programs use the syntax and semantics described by the
  3584.        C Standard {7}.
  3585.  
  3586.      - The programs are merely examples and do not represent the most
  3587.        efficient, or only, means of coding the interface.  Implementations
  3588.        may use other programming languages or algorithms, as long as the
  3589.        results are the same as those achieved by the programs in this
  3590.        standard.
  3591.  
  3592.      - C-language comments are informative and pose no requirements.
  3593.  
  3594.  Further conventions are presented in:
  3595.  
  3596.      - Utility Conventions, 2.10, describing utility and application
  3597.        command-line syntax
  3598.  
  3599.      - File Format Notation, 2.12, describing the notation used to
  3600.        represent utility input and output
  3601.  
  3602.  
  3603.  2.1.4  Conventions Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  3604.  
  3605.  The C language was chosen for many examples because:
  3606.  
  3607.      - It eliminates any requirement to document a different pseudocode.
  3608.  
  3609.      - It is a familiar language to many of the potential readers of
  3610.        POSIX.2.
  3611.  
  3612.      - It is the language most widely used for historical implementations
  3613.        of the utilities.
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621.                Copyright c 1991 IEEE.  All rights reserved.
  3622.       This is an unapproved IEEE Standards Draft, subject to change.
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  2.1 Conventions                                                        25
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  3635.  
  3636.  2.2  Definitions
  3637.  
  3638.  
  3639.  2.2.1  Terminology
  3640.  
  3641.  For the purposes of this standard, the following definitions apply:
  3642.  
  3643.  
  3644.  2.2.1.1  can:  The word _c_a_n is to be interpreted as describing a
  3645.  permissible optional feature or behavior available to the application;
  3646.  the implementation shall support such features or behaviors as mandatory
  3647.  requirements.
  3648.  
  3649.  2.2.1.2  conformance document:  A document provided by an implementor
  3650.  that contains implementation details as described in 1.3.1.2.
  3651.  
  3652.  
  3653.  2.2.1.3  implementation:  An object providing to applications and users
  3654.  the services defined by this standard.  The word _i_m_p_l_e_m_e_n_t_a_t_i_o_n is to be
  3655.  interpreted to mean that object, after it has been modified in accordance
  3656.  with the manufacturer's instructions to:
  3657.  
  3658.      - configure it for conformance with this standard;
  3659.  
  3660.      - select some of the various optional facilities described by this
  3661.        standard, through customization by local system administrators or
  3662.        operators.
  3663.  
  3664.  An exception to this meaning occurs when discussing conformance
  3665.  documentation or using the term _i_m_p_l_e_m_e_n_t_a_t_i_o_n _d_e_f_i_n_e_d.  See 2.2.1.4 and
  3666.  1.3.1.2.
  3667.  
  3668.  2.2.1.4  implementation defined:  When a value or behavior is described
  3669.  by this standard as _i_m_p_l_e_m_e_n_t_a_t_i_o_n _d_e_f_i_n_e_d, the implementation provider
  3670.  shall document the requirements for correct program construction and
  3671.  correct data in the use of that value or behavior.  When the value or
  3672.  behavior in the implementation is designed to be variable or customizable
  3673.  on each instantiation of the system, the implementation provider shall
  3674.  document the nature and permissible ranges of this variation.  (See
  3675.  1.3.1.2.)
  3676.  
  3677.  
  3678.  2.2.1.5  may:  The word _m_a_y is to be interpreted as describing an
  3679.  optional feature or behavior of the implementation that is not required
  3680.  by this standard, but there is no prohibition against providing it.  A     1
  3681.  Strictly Conforming POSIX.2 Application is permitted to use such           1
  3682.  features, but shall not rely on the implementation's actions in such       1
  3683.  cases.  To avoid ambiguity, the reverse sense of _m_a_y is not expressed as   1
  3684.  _m_a_y _n_o_t, but as _n_e_e_d _n_o_t.
  3685.  
  3686.  
  3687.                Copyright c 1991 IEEE.  All rights reserved.
  3688.       This is an unapproved IEEE Standards Draft, subject to change.
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  26                                 2 Terminology and General Requirements
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  3701.  
  3702.  2.2.1.6  obsolescent:  Certain features are _o_b_s_o_l_e_s_c_e_n_t, which means that
  3703.  they may be considered for withdrawal in future revisions of this
  3704.  standard.  They are retained in this version because of their widespread
  3705.  use.  Their use in new applications is discouraged.
  3706.  
  3707.  
  3708.  2.2.1.7  shall:  In this standard, the word _s_h_a_l_l is to be interpreted as
  3709.  a requirement on the implementation or on Strictly Conforming POSIX.2
  3710.  Applications, where appropriate.
  3711.  
  3712.  2.2.1.8  should:  With respect to implementations, the word _s_h_o_u_l_d is to
  3713.  be interpreted as an implementation recommendation, but not a
  3714.  requirement.  With respect to applications, the word _s_h_o_u_l_d is to be
  3715.  interpreted as recommended programming practice for applications and a
  3716.  requirement for Strictly Conforming POSIX.2 Applications.
  3717.  
  3718.  
  3719.  2.2.1.9  system documentation:  All documentation provided with an
  3720.  implementation, except the conformance document.  Electronically
  3721.  distributed documents for an implementation are considered part of the
  3722.  system documentation.
  3723.  
  3724.  2.2.1.10  undefined:  A value or behavior is _u_n_d_e_f_i_n_e_d if the standard
  3725.  imposes no portability requirements on applications for erroneous program
  3726.  construction, erroneous data, or use of an indeterminate value.
  3727.  Implementations (or other standards) may specify the result of using that
  3728.  value or causing that behavior.  An application using such behaviors is
  3729.  using extensions, as defined in 1.3.2.3.
  3730.  
  3731.  
  3732.  2.2.1.11  unspecified:  A value or behavior is _u_n_s_p_e_c_i_f_i_e_d if the
  3733.  standard imposes no portability requirements on applications for a
  3734.  correct program construction or correct data.  Implementations (or other
  3735.  standards) may specify the result of using that value or causing that
  3736.  behavior.  An application requiring a specific behavior, rather than
  3737.  tolerating any behavior when using that functionality, is using
  3738.  extensions, as defined in 1.3.2.3.
  3739.  
  3740.  BEGIN_RATIONALE
  3741.  
  3742.  2.2.1.12  Terminology Rationale (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  3743.  
  3744.  Most of these terms were adapted from their POSIX.1 {8} counterparts with
  3745.  little modification.
  3746.  
  3747.  The reader is referred to the definition of _p_r_o_g_r_a_m in 2.2.2.119 to
  3748.  understand the expression ``program construction.''  The use of _p_r_o_g_r_a_m
  3749.  in this standard is differentiated from POSIX.1 {8}'s emphasis only on
  3750.  high level languages by this standard's broader concern with utility and
  3751.  
  3752.  
  3753.                Copyright c 1991 IEEE.  All rights reserved.
  3754.       This is an unapproved IEEE Standards Draft, subject to change.
  3755.  
  3756.  
  3757.  
  3758.  
  3759.  
  3760.  2.2 Definitions                                                        27
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  3767.  
  3768.  command language interactions.  Included in the scope of program
  3769.  construction are:
  3770.  
  3771.      (1)  Shell command language
  3772.  
  3773.      (2)  Command arguments
  3774.  
  3775.      (3)  Regular expressions, of various types
  3776.  
  3777.      (4)  Command input language syntax, such as awk, bc, ed, lex, make,
  3778.           sed, and yacc.  Some of these are so complex that they rival
  3779.           traditional high level languages.
  3780.  
  3781.  The usage of _c_a_n and _m_a_y were selected to contrast optional application
  3782.  behavior (can) against optional implementation behavior (may).
  3783.  
  3784.  The term _s_u_p_p_o_r_t_e_d was removed from Draft 8; it had originally been
  3785.  copied from the POSIX.1 {8} document, but it later became clear that its
  3786.  requirement for function ``stubs'' for unsupported functions made little
  3787.  sense in this standard.  The term _s_u_p_p_o_r_t therefore reverts to its
  3788.  English-language meaning.
  3789.  
  3790.  The term _o_b_s_o_l_e_s_c_e_n_t was changed to _d_e_p_r_e_c_a_t_e_d in some earlier drafts,
  3791.  but it was restored to match POSIX.1 {8}'s use of the term.  It means
  3792.  ``do not use this feature in new applications.''  The obsolescence
  3793.  concept is not an ideal solution, but was used as a method of increasing
  3794.  consensus:  many more objections would be heard from the user community
  3795.  if some of these historical features were suddenly withdrawn without the
  3796.  grace period obsolescence implies.  The phrase ``may be considered for
  3797.  withdrawal in future revisions'' implies that the result of that
  3798.  consideration might in fact keep those features indefinitely if the
  3799.  predominance of applications does not migrate away from them quickly.
  3800.  
  3801.  END_RATIONALE
  3802.  
  3803.  
  3804.  
  3805.  
  3806.  
  3807.  
  3808.  
  3809.  
  3810.  
  3811.  
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.                Copyright c 1991 IEEE.  All rights reserved.
  3820.       This is an unapproved IEEE Standards Draft, subject to change.
  3821.  
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  28                                 2 Terminology and General Requirements
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  3833.  
  3834.  2.2.2  General Terms
  3835.  
  3836.  For the purposes of this standard, the following definitions apply.
  3837.  
  3838.  
  3839.  2.2.2.1  absolute pathname:  See _p_a_t_h_n_a_m_e _r_e_s_o_l_u_t_i_o_n in 2.2.2.104.
  3840.  
  3841.  2.2.2.2  address space:  The memory locations that can be referenced by a
  3842.  process.  [POSIX.1 {8}]
  3843.  
  3844.  
  3845.  2.2.2.3  affirmative response:  An input string that matches one of the
  3846.  responses acceptable to the LC_MESSAGES category keyword yesexpr,
  3847.  matching an extended regular expression in the current locale; see 2.5.
  3848.  
  3849.  2.2.2.4  <alert>:  A character that in the output stream shall indicate    1
  3850.  that a terminal should alert its user via a visual or audible              1
  3851.  notification.
  3852.  
  3853.  The <alert> shall be the character designated by '\a' in the C language
  3854.  binding.  It is unspecified whether this character is the exact sequence
  3855.  transmitted to an output device by the system to accomplish the alert
  3856.  function.
  3857.  
  3858.  
  3859.  2.2.2.5  angle brackets:  The characters ``<'' (_l_e_f_t-_a_n_g_l_e-_b_r_a_c_k_e_t) and
  3860.  ``>'' (_r_i_g_h_t-_a_n_g_l_e-_b_r_a_c_k_e_t).
  3861.  
  3862.  When used in the phrase ``enclosed in angle brackets'' the symbol ``<''
  3863.  shall immediately precede the object to be enclosed, and ``>'' shall
  3864.  immediately follow it.  When describing these characters in 2.4, the
  3865.  names <less-than-sign> and <greater-than-sign> are used.
  3866.  
  3867.  2.2.2.6  appropriate privileges:  An implementation-defined means of
  3868.  associating privileges with a process with regard to the function calls
  3869.  and function call options defined in POSIX.1 {8} that need special
  3870.  privileges.
  3871.  
  3872.  There may be zero or more such means.  [POSIX.1 {8}]
  3873.  
  3874.  
  3875.  2.2.2.7  argument:  A parameter passed to a utility as the equivalent of
  3876.  a single string in the _a_r_g_v array created by one of the POSIX.1 {8} _e_x_e_c
  3877.  functions.
  3878.  
  3879.  See 2.10.1 and 3.9.1.1.  An argument is one of the options, option-
  3880.  arguments, or operands following the command name.
  3881.  
  3882.  
  3883.  
  3884.  
  3885.                Copyright c 1991 IEEE.  All rights reserved.
  3886.       This is an unapproved IEEE Standards Draft, subject to change.
  3887.  
  3888.  
  3889.  
  3890.  
  3891.  
  3892.  2.2 Definitions                                                        29
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  3899.  
  3900.  2.2.2.8  asterisk:  The character ``*''.
  3901.  
  3902.  
  3903.  2.2.2.9  background process:  A process that is a member of a background
  3904.  process group.  [POSIX.1 {8}]
  3905.  
  3906.  2.2.2.10  background process group:  Any process group, other than a
  3907.  foreground process group, that is a member of a session that has
  3908.  established a connection with a controlling terminal.  [POSIX.1 {8}]
  3909.  
  3910.  
  3911.  2.2.2.11  backquote:  The character ```'', also known as a _g_r_a_v_e _a_c_c_e_n_t.
  3912.  
  3913.  2.2.2.12  backslash:  The character ``\'', also known as a _r_e_v_e_r_s_e
  3914.  _s_o_l_i_d_u_s.
  3915.  
  3916.  
  3917.  2.2.2.13  <backspace>:  A character that normally causes printing (or
  3918.  displaying) to occur one column position previous to the position about
  3919.  to be printed.
  3920.  
  3921.  The <backspace> shall be the character designated by '\b' in the C
  3922.  language binding.  It is unspecified whether this character is the exact
  3923.  sequence transmitted to an output device by the system to accomplish the
  3924.  backspace function.  The <backspace> character defined here is not
  3925.  necessarily the ERASE special character defined in POSIX.1 {8} 7.1.1.9.
  3926.  
  3927.  2.2.2.14  basename:  The final, or only, filename in a pathname.
  3928.  
  3929.  
  3930.  2.2.2.15  basic regular expression:  A pattern (sequence of characters or
  3931.  symbols) constructed according to the rules defined in 2.8.3.
  3932.  
  3933.  2.2.2.16  <blank>:  One of the characters that belong to the blank
  3934.  character class as defined via the LC_CTYPE category in the current
  3935.  locale.
  3936.  
  3937.  In the POSIX Locale, a <blank> is either a <tab> or a <space>.
  3938.  
  3939.  
  3940.  2.2.2.17  blank line:  A line consisting solely of zero or more <blank>s
  3941.  terminated by a <newline>.
  3942.  
  3943.  See also _e_m_p_t_y _l_i_n_e (2.2.2.44).
  3944.  
  3945.  2.2.2.18  block special file:  A file that refers to a device.
  3946.  
  3947.  A block special file is normally distinguished from a character special
  3948.  file by providing access to the device in a manner such that the hardware
  3949.  
  3950.  
  3951.                Copyright c 1991 IEEE.  All rights reserved.
  3952.       This is an unapproved IEEE Standards Draft, subject to change.
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  30                                 2 Terminology and General Requirements
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  3965.  
  3966.  characteristics of the device are not visible.  [POSIX.1 {8}]
  3967.  
  3968.  
  3969.  2.2.2.19  braces:  The characters ``{'' (_l_e_f_t _b_r_a_c_e) and ``}'' (_r_i_g_h_t
  3970.  _b_r_a_c_e), also known as _c_u_r_l_y _b_r_a_c_e_s.
  3971.  
  3972.  When used in the phrase ``enclosed in (curly) braces'' the symbol ``{''
  3973.  shall immediately precede the object to be enclosed, and ``}'' shall
  3974.  immediately follow it.  When describing these characters in 2.4, the
  3975.  names <left-brace> and <right-brace> are used.
  3976.  
  3977.  2.2.2.20  brackets:  The characters ``['' (_l_e_f_t-_b_r_a_c_k_e_t) and ``]''
  3978.  (_r_i_g_h_t-_b_r_a_c_k_e_t), also known as _s_q_u_a_r_e _b_r_a_c_k_e_t_s.
  3979.  
  3980.  When used in the phrase ``enclosed in (square) brackets'' the symbol
  3981.  ``['' shall immediately precede the object to be enclosed, and ``]''
  3982.  shall immediately follow it.  When describing these characters in 2.4,
  3983.  the names <left-square-bracket> and <right-square-bracket> are used.
  3984.  
  3985.  
  3986.  2.2.2.21  built-in utility:  A utility implemented within a shell.
  3987.  
  3988.  The utilities referred to as _s_p_e_c_i_a_l _b_u_i_l_t-_i_n_s have special qualities,
  3989.  described in 3.14.  Unless qualified, the term _b_u_i_l_t-_i_n includes the
  3990.  special built-in utilities.
  3991.  
  3992.  The utilities referred to as _r_e_g_u_l_a_r _b_u_i_l_t-_i_n_s are those named in
  3993.  Table 2-2.  As indicated in 2.3, there is no requirement that these
  3994.  utilities be actually built into the shell on the implementation, but
  3995.  that they do have special command-search qualities.
  3996.  
  3997.  2.2.2.22  byte:  An individually addressable unit of data storage that is  1
  3998.  equal to or larger than an octet, used to store a character or a portion   1
  3999.  of a character; see 2.2.2.24.                                              1
  4000.  
  4001.  A byte is composed of a contiguous sequence of bits, the number of which   1
  4002.  is implementation defined.  The least significant bit is called the _l_o_w-
  4003.  _o_r_d_e_r bit; the most significant is called the _h_i_g_h-_o_r_d_e_r bit.
  4004.  [POSIX.1 {8}]
  4005.  
  4006.  NOTE:  This definition of _b_y_t_e is actually from the C Standard {7}
  4007.  because POSIX.1 {8} merely references it without copying the text.  It     1
  4008.  has been reworded slightly to clarify its intent without introducing the   1
  4009.  C Standard {7} terminology ``basic execution character set,'' which is     1
  4010.  inapplicable to this standard.  It deviates intentionally from the usage   1
  4011.  of _b_y_t_e in some other standards, where it is used as a synonym for _o_c_t_e_t   1
  4012.  (always eight bits).  On a POSIX.1 {8} system, a byte may be larger than   1
  4013.  eight bits so that it can be an integral portion of larger data objects    1
  4014.  that are not evenly divisible by eight bits (such as a 36-bit word that    1
  4015.  contains 4 9-bit bytes).                                                   1
  4016.  
  4017.                Copyright c 1991 IEEE.  All rights reserved.
  4018.       This is an unapproved IEEE Standards Draft, subject to change.
  4019.  
  4020.  
  4021.  
  4022.  
  4023.  
  4024.  2.2 Definitions                                                        31
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  4031.  
  4032.  2.2.2.23  <carriage-return>:  A character that in the output stream shall  1
  4033.  indicate that printing should start at the beginning of the same physical
  4034.  line in which the <carriage-return> occurred.
  4035.  
  4036.  The <carriage-return> shall be the character designated by '\r' in the C
  4037.  language binding.  It is unspecified whether this character is the exact
  4038.  sequence transmitted to an output device by the system to accomplish the
  4039.  movement to the beginning of the line.
  4040.  
  4041.  
  4042.  2.2.2.24  character:  A sequence of one or more bytes representing a
  4043.  single graphic symbol.
  4044.  NOTE:  This term corresponds in the C Standard {7} to the term _m_u_l_t_i_b_y_t_e
  4045.  _c_h_a_r_a_c_t_e_r, noting that a single-byte character is a special case of
  4046.  multibyte character.  Unlike the usage in the C Standard {7}, _c_h_a_r_a_c_t_e_r
  4047.  here has no necessary relationship with storage space, and _b_y_t_e is used
  4048.  when storage space is discussed.
  4049.  
  4050.  [POSIX.1 {8}]
  4051.  
  4052.  (See 2.4 for a further explanation of the graphical representations of
  4053.  characters, or ``glyphs,'' versus character encodings.)
  4054.  
  4055.  2.2.2.25  character class:  A named set of characters sharing an
  4056.  attribute associated with the name of the class.
  4057.  
  4058.  The classes and the characters that they contain are dependent on the
  4059.  value of the LC_CTYPE category in the current locale; see 2.5.
  4060.  
  4061.  
  4062.  2.2.2.26  character special file:  A file that refers to a device.
  4063.  
  4064.  One specific type of character special file is a terminal device file,
  4065.  whose access is defined in POSIX.1 {8} section 7.1.  Other character
  4066.  special files have no structure defined by this standard, and their use
  4067.  is unspecified by this standard.  [POSIX.1 {8}]
  4068.  
  4069.  2.2.2.27  circumflex:  The character ``^''.
  4070.  
  4071.  
  4072.  2.2.2.28  collating element:  The smallest entity used to determine the
  4073.  logical ordering of strings.
  4074.  
  4075.  See _c_o_l_l_a_t_i_o_n _s_e_q_u_e_n_c_e (2.2.2.30).  A collating element shall consist of
  4076.  either a single character, or two or more characters collating as a
  4077.  single entity.  The value of the LC_COLLATE category in the current
  4078.  locale determines the current set of collating elements.
  4079.  
  4080.  
  4081.  
  4082.  
  4083.                Copyright c 1991 IEEE.  All rights reserved.
  4084.       This is an unapproved IEEE Standards Draft, subject to change.
  4085.  
  4086.  
  4087.  
  4088.  
  4089.  
  4090.  32                                 2 Terminology and General Requirements
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  4097.  
  4098.  2.2.2.29  collation:  The logical ordering of strings according to
  4099.  defined precedence rules.
  4100.  
  4101.  These rules identify a collation sequence between the collating elements,
  4102.  and such additional rules that can be used to order strings consisting of
  4103.  multiple collating elements.
  4104.  
  4105.  
  4106.  2.2.2.30  collation sequence:  The relative order of collating elements
  4107.  as determined by the setting of the LC_COLLATE category in the current
  4108.  locale.
  4109.  
  4110.  The character order, as defined for the LC_COLLATE category in the         2
  4111.  current locale (see 2.5.2.2), defines the relative order of all collating  2
  4112.  elements, such that each element occupies a unique position in the order.  2
  4113.  In addition, one or more collation weights can be assigned for each        2
  4114.  collating element; these weights are used to determine the relative order  2
  4115.  of strings in, e.g., the sort utility.                                     2
  4116.  
  4117.  Multilevel sorting is accomplished by assigning elements one or more
  4118.  collation weights, up to the limit {COLL_WEIGHTS_MAX}.  On each level,
  4119.  elements may be given the same weight (at the primary level, called an     1
  4120.  _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s; see 2.2.2.47) or be omitted from the sequence.
  4121.  Strings that collate equal using the first assigned weight (primary
  4122.  ordering), are then compared using the next assigned weight (secondary
  4123.  ordering), and so on.
  4124.  
  4125.  2.2.2.31  column position:  A unit of horizontal measure related to
  4126.  characters in a line.                                                      2
  4127.  
  4128.  It is assumed that each character in a character set has an intrinsic      2
  4129.  column width independent of any output device.  Each printable character   2
  4130.  in the portable character set has a column width of one.  The standard     2
  4131.  utilities, when used as described in this standard, assume that all        2
  4132.  characters have integral column widths.  The column width of a character   2
  4133.  is not necessarily related to the internal representation of the           2
  4134.  character (numbers of bits or octets).                                     2
  4135.  
  4136.  The column position of a character in a line is defined as one plus the    2
  4137.  sum of the column widths of the preceding characters in the line.  Column  2
  4138.  positions are numbered starting from 1.
  4139.  
  4140.  
  4141.  2.2.2.32  command:  A directive to the shell to perform a particular
  4142.  task; see 3.9.
  4143.  
  4144.  2.2.2.33  current working directory:  See _w_o_r_k_i_n_g _d_i_r_e_c_t_o_r_y in 2.2.2.159.
  4145.  
  4146.  
  4147.  
  4148.  
  4149.                Copyright c 1991 IEEE.  All rights reserved.
  4150.       This is an unapproved IEEE Standards Draft, subject to change.
  4151.  
  4152.  
  4153.  
  4154.  
  4155.  
  4156.  2.2 Definitions                                                        33
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  4163.  
  4164.  2.2.2.34  command language interpreter:  See 2.2.2.133.
  4165.  
  4166.  
  4167.  2.2.2.35  directory:  A file that contains directory entries.
  4168.  
  4169.  No two directory entries in the same directory shall have the same name.
  4170.  [POSIX.1 {8}]
  4171.  
  4172.  2.2.2.36  directory entry [link]:  An object that associates a filename
  4173.  with a file.
  4174.  
  4175.  Several directory entries can associate names with the same file.
  4176.  [POSIX.1 {8}]
  4177.  
  4178.  
  4179.  2.2.2.37  dollar-sign:  The character ``$''.
  4180.  
  4181.  This standard permits the substitution of the ``currency symbol'' graphic
  4182.  defined in ISO/IEC 646 {1} for this symbol when the character set being
  4183.  used has substituted that graphic for the graphic $.  The graphic symbol
  4184.  $ is always used in this standard, but not in any monetary sense.
  4185.  
  4186.  2.2.2.38  dot:  The filename consisting of a single dot character (.).
  4187.  
  4188.  See _p_a_t_h_n_a_m_e _r_e_s_o_l_u_t_i_o_n in 2.2.2.104.  [POSIX.1 {8}]
  4189.  
  4190.  In the context of shell special built-in utilities, see 3.14.4.
  4191.  
  4192.  
  4193.  2.2.2.39  dot-dot:  The filename consisting solely of two dot characters
  4194.  (..).
  4195.  
  4196.  See _p_a_t_h_n_a_m_e _r_e_s_o_l_u_t_i_o_n in 2.2.2.104.  [POSIX.1 {8}]
  4197.  
  4198.  2.2.2.40  double-quote:  The character ``"'', also known as _q_u_o_t_a_t_i_o_n-
  4199.  _m_a_r_k.
  4200.  
  4201.  
  4202.  2.2.2.41  effective group ID:  An attribute of a process that is used in
  4203.  determining various permissions, including file access permissions,
  4204.  described in 2.2.2.55.
  4205.  
  4206.  See _g_r_o_u_p _I_D.  This value is subject to change during the process
  4207.  lifetime, as described in POSIX.1 {8} 3.1.2 (_e_x_e_c) and 4.2.2 [_s_e_t_g_i_d()].
  4208.  [POSIX.1 {8}]
  4209.  
  4210.  2.2.2.42  effective user ID:  An attribute of a process that is used in
  4211.  determining various permissions, including file access permissions.
  4212.  
  4213.  
  4214.  
  4215.                Copyright c 1991 IEEE.  All rights reserved.
  4216.       This is an unapproved IEEE Standards Draft, subject to change.
  4217.  
  4218.  
  4219.  
  4220.  
  4221.  
  4222.  34                                 2 Terminology and General Requirements
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  4229.  
  4230.  See _u_s_e_r _I_D.  This value is subject to change during the process
  4231.  lifetime, as described in POSIX.1 {8} 3.1.2 (_e_x_e_c) and 4.2.2 [_s_e_t_u_i_d()].
  4232.  [POSIX.1 {8}]
  4233.  
  4234.  
  4235.  2.2.2.43  empty directory:  A directory that contains, at most, directory
  4236.  entries for dot and dot-dot.  [POSIX.1 {8}]
  4237.  
  4238.  2.2.2.44  empty line:  A line consisting of only a <newline> character.
  4239.  
  4240.  See also _b_l_a_n_k _l_i_n_e (2.2.2.17).
  4241.  
  4242.  
  4243.  2.2.2.45  empty string [null string]:  A character array whose first
  4244.  element is a null character.  [POSIX.1 {8}]
  4245.  
  4246.  2.2.2.46  Epoch:  The time 0 hours, 0 minutes, 0 seconds, January 1,
  4247.  1970, Coordinated Universal Time.
  4248.  
  4249.  See _s_e_c_o_n_d_s _s_i_n_c_e _t_h_e _E_p_o_c_h.  [POSIX.1 {8}]
  4250.  
  4251.  
  4252.  2.2.2.47  equivalence class:  A set of collating elements with the same    1
  4253.  primary collation weight.                                                  1
  4254.  
  4255.  Elements in an equivalence class are typically elements that naturally
  4256.  group together, such as all accented letters based on the same base
  4257.  letter.
  4258.  
  4259.  The collation order of elements within an equivalence class is determined  1
  4260.  by the weights assigned on any subsequent levels after the primary         1
  4261.  weight.                                                                    1
  4262.  
  4263.  2.2.2.48  executable file:  A regular file acceptable as a new process
  4264.  image file by the equivalent of the POSIX.1 {8} _e_x_e_c family of functions,
  4265.  and thus usable as one form of a utility.
  4266.  
  4267.  See _e_x_e_c in POSIX.1 {8} 3.1.2.  The standard utilities described as
  4268.  compilers can produce executable files, but other unspecified methods of
  4269.  producing executable files may also be provided.  The internal format of
  4270.  an executable file is unspecified, but a conforming application shall not
  4271.  assume an executable file is a text file.
  4272.  
  4273.  
  4274.  2.2.2.49  execute:  To perform the actions described in 3.9.1.1.
  4275.  
  4276.  See also _i_n_v_o_k_e (2.2.2.79).
  4277.  
  4278.  
  4279.  
  4280.  
  4281.                Copyright c 1991 IEEE.  All rights reserved.
  4282.       This is an unapproved IEEE Standards Draft, subject to change.
  4283.  
  4284.  
  4285.  
  4286.  
  4287.  
  4288.  2.2 Definitions                                                        35
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  4295.  
  4296.  2.2.2.50  extended regular expression:  A pattern (sequence of characters
  4297.  or symbols) constructed according to the rules defined in 2.8.4.
  4298.  
  4299.  
  4300.  2.2.2.51  extended security controls:  A concept of the underlying
  4301.  system, as follows.  [POSIX.1 {8}]
  4302.  
  4303.  The access control (see _f_i_l_e _a_c_c_e_s_s _p_e_r_m_i_s_s_i_o_n_s) and privilege (see
  4304.  _a_p_p_r_o_p_r_i_a_t_e _p_r_i_v_i_l_e_g_e_s in 2.2.2.6) mechanisms have been defined to allow
  4305.  implementation-defined extended security controls.  These permit an
  4306.  implementation to provide security mechanisms to implement different
  4307.  security policies than described in POSIX.1 {8}.  These mechanisms shall
  4308.  not alter or override the defined semantics of any of the functions in
  4309.  POSIX.1 {8}.
  4310.  
  4311.  2.2.2.52  feature test macro:  A #defined symbol used to determine
  4312.  whether a particular set of features will be included from a header.
  4313.  
  4314.  See POSIX.1 {8} 2.7.1.  [POSIX.1 {8}]
  4315.  
  4316.  
  4317.  2.2.2.53  FIFO special file [FIFO]:  A type of file with the property
  4318.  that data written to such a file is read on a first-in-first-out basis.
  4319.  
  4320.  Other characteristics of _F_I_F_Os are described in POSIX.1 {8} 5.3.1
  4321.  [_o_p_e_n()], 6.4.1 [_r_e_a_d()], 6.4.2 [_w_r_i_t_e()], and 6.5.3 [_l_s_e_e_k()].
  4322.  [POSIX.1 {8}]
  4323.  
  4324.  2.2.2.54  file:  An object that can be written to, or read from, or both.
  4325.  
  4326.  A file has certain attributes, including access permissions and type.
  4327.  File types include regular file, character special file, block special
  4328.  file, FIFO special file, and directory.  Other types of files may be
  4329.  defined by the implementation.  [POSIX.1 {8}]
  4330.  
  4331.  
  4332.  2.2.2.55  file access permissions:  A concept of the underlying system,
  4333.  as follows.  [POSIX.1 {8}]
  4334.  
  4335.  The standard file access control mechanism uses the file permission bits,
  4336.  as described below.  These bits are set at file creation by _o_p_e_n(),
  4337.  _c_r_e_a_t(), _m_k_d_i_r(), and _m_k_f_i_f_o() and are changed by _c_h_m_o_d().  These bits
  4338.  are read by _s_t_a_t() or _f_s_t_a_t().
  4339.  
  4340.  Implementations may provide _a_d_d_i_t_i_o_n_a_l or _a_l_t_e_r_n_a_t_e file access control
  4341.  mechanisms, or both.  An additional access control mechanism shall only
  4342.  further restrict the access permissions defined by the file permission
  4343.  bits.  An alternate access control mechanism shall:
  4344.  
  4345.  
  4346.  
  4347.                Copyright c 1991 IEEE.  All rights reserved.
  4348.       This is an unapproved IEEE Standards Draft, subject to change.
  4349.  
  4350.  
  4351.  
  4352.  
  4353.  
  4354.  36                                 2 Terminology and General Requirements
  4355.  
  4356.  
  4357.  
  4358.  
  4359.  
  4360.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  4361.  
  4362.      (1)  Specify file permission bits for the file owner class, file
  4363.           group class, and file other class of the file, corresponding to
  4364.           the access permissions, to be returned by _s_t_a_t() or _f_s_t_a_t().
  4365.  
  4366.      (2)  Be enabled only by explicit user action, on a per-file basis by
  4367.           the file owner or a user with the appropriate privilege.
  4368.  
  4369.      (3)  Be disabled for a file after the file permission bits are
  4370.           changed for that file with _c_h_m_o_d().  The disabling of the
  4371.           alternate mechanism need not disable any additional mechanisms
  4372.           defined by an implementation.
  4373.  
  4374.  Whenever a process requests file access permission for read, write, or
  4375.  execute/search, if no additional mechanism denies access, access is
  4376.  determined as follows:
  4377.  
  4378.      (1)  If a process has the appropriate privilege:
  4379.  
  4380.            (a)  If read, write, or directory search permission is
  4381.                 requested, access is granted.
  4382.  
  4383.            (b)  If execute permission is requested, access is granted if
  4384.                 execute permission is granted to at least one user by the
  4385.                 file permission bits or by an alternate access control
  4386.                 mechanism; otherwise, access is denied.
  4387.  
  4388.      (2)  Otherwise:
  4389.  
  4390.            (a)  The file permission bits of a file contain read, write,
  4391.                 and execute/search permissions for the file owner class,
  4392.                 file group class, and file other class.
  4393.  
  4394.            (b)  Access is granted if an alternate access control mechanism
  4395.                 is not enabled and the requested access permission bit is
  4396.                 set for the class (file owner class, file group class, or
  4397.                 file other class) to which the process belongs, or if an
  4398.                 alternate access control mechanism is enabled and it
  4399.                 allows the requested access; otherwise, access is denied.
  4400.  
  4401.  
  4402.  2.2.2.56  file descriptor:  A per-process unique, nonnegative integer
  4403.  used to identify an open file for the purpose of file access.
  4404.  [POSIX.1 {8}]
  4405.  
  4406.  2.2.2.57  file group class:  The property of a file indicating access
  4407.  permissions for a process related to the process's group identification.
  4408.  
  4409.  A process is in the file group class of a file if the process is not in
  4410.  the file owner class and if the effective group ID or one of the
  4411.  
  4412.  
  4413.                Copyright c 1991 IEEE.  All rights reserved.
  4414.       This is an unapproved IEEE Standards Draft, subject to change.
  4415.  
  4416.  
  4417.  
  4418.  
  4419.  
  4420.  2.2 Definitions                                                        37
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  4427.  
  4428.  supplementary group IDs of the process matches the group ID associated
  4429.  with the file.  Other members of the class may be implementation defined.
  4430.  [POSIX.1 {8}]
  4431.  
  4432.  
  4433.  2.2.2.58  file hierarchy:  A concept of the underlying system, as
  4434.  follows.  [POSIX.1 {8}]
  4435.  
  4436.  Files in the system are organized in a hierarchical structure in which
  4437.  all of the nonterminal nodes are directories and all of the terminal
  4438.  nodes are any other type of file.  Because multiple directory entries may
  4439.  refer to the same file, the hierarchy is properly described as a
  4440.  ``directed graph.''
  4441.  
  4442.  2.2.2.59  file mode:  An object containing the file permission bits and
  4443.  other characteristics of a file, as described in POSIX.1 {8} 5.6.1.
  4444.  [POSIX.1 {8}]
  4445.  
  4446.  
  4447.  2.2.2.60  file mode bits:  A file's file permission bits, set-user-ID-
  4448.  on-execution bit (S_ISUID), and set-group-ID-on-execution bit (S_ISGID)
  4449.  (see POSIX.1 {8} 5.6.1.2).
  4450.  
  4451.  2.2.2.61  filename:  A name consisting of 1 to {NAME_MAX} bytes used to
  4452.  name a file.
  4453.  
  4454.  The characters composing the name may be selected from the set of all
  4455.  character values excluding the slash character and the null character.
  4456.  The filenames dot and dot-dot have special meaning; see _p_a_t_h_n_a_m_e
  4457.  _r_e_s_o_l_u_t_i_o_n in 2.2.2.104.  A filename is sometimes referred to as a
  4458.  pathname component.  [POSIX.1 {8}]
  4459.  
  4460.  
  4461.  2.2.2.62  filename portability:  A concept of the underlying system, as
  4462.  follows.  [POSIX.1 {8}]
  4463.  
  4464.  Filenames should be constructed from the portable filename character set
  4465.  because the use of other characters can be confusing or ambiguous in
  4466.  certain contexts.
  4467.  
  4468.  2.2.2.63  file offset:  The byte position in the file where the next I/O
  4469.  operation begins.
  4470.  
  4471.  Each open file description associated with a regular file, block special
  4472.  file, or directory has a file offset.  A character special file that does
  4473.  not refer to a terminal device may have a file offset.  There is no file
  4474.  offset specified for a pipe or FIFO.  [POSIX.1 {8}]
  4475.  
  4476.  
  4477.  
  4478.  
  4479.                Copyright c 1991 IEEE.  All rights reserved.
  4480.       This is an unapproved IEEE Standards Draft, subject to change.
  4481.  
  4482.  
  4483.  
  4484.  
  4485.  
  4486.  38                                 2 Terminology and General Requirements
  4487.  
  4488.  
  4489.  
  4490.  
  4491.  
  4492.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  4493.  
  4494.  2.2.2.64  file other class:  The property of a file indicating access
  4495.  permissions for a process related to the process's user and group
  4496.  identification.
  4497.  
  4498.  A process is in the file other class of a file if the process is not in
  4499.  the file owner class or file group class.  [POSIX.1 {8}]
  4500.  
  4501.  
  4502.  2.2.2.65  file owner class:  The property of a file indicating access
  4503.  permissions for a process related to the process's user identification.
  4504.  
  4505.  A process is in the file owner class of a file if the effective user ID
  4506.  of the process matches the user ID of the file.  [POSIX.1 {8}]
  4507.  
  4508.  2.2.2.66  file permission bits:  Information about a file that is used,
  4509.  along with other information, to determine if a process has read, write,
  4510.  or execute/search permission to a file.
  4511.  
  4512.  The bits are divided into three parts:  owner, group, and other.  Each
  4513.  part is used with the corresponding file class of processes.  These bits
  4514.  are contained in the file mode, as described in POSIX.1 {8} 5.6.1.  The
  4515.  detailed usage of the file permission bits in access decisions is
  4516.  described in _f_i_l_e _a_c_c_e_s_s _p_e_r_m_i_s_s_i_o_n_s in 2.2.2.55.  [POSIX.1 {8}]
  4517.  
  4518.  
  4519.  2.2.2.67  file serial number:  A per-file-system unique identifier for a
  4520.  file.
  4521.  
  4522.  File serial numbers are unique throughout a file system.  [POSIX.1 {8}]
  4523.  
  4524.  2.2.2.68  file system:  A collection of files and certain of their
  4525.  attributes.
  4526.  
  4527.  It provides a name space for file serial numbers referring to those
  4528.  files.  [POSIX.1 {8}]
  4529.  
  4530.  
  4531.  2.2.2.69  file times update:  A concept of the underlying system, as
  4532.  follows.  [POSIX.1 {8}]
  4533.  
  4534.  Each file has three distinct associated time values:  _s_t__a_t_i_m_e, _s_t__m_t_i_m_e,
  4535.  and _s_t__c_t_i_m_e.  The _s_t__a_t_i_m_e field is associated with the times that the
  4536.  file data is accessed; _s_t__m_t_i_m_e is associated with the times that the
  4537.  file data is modified; and _s_t__c_t_i_m_e is associated with the times that
  4538.  file status is changed.  These values are returned in the file
  4539.  characteristics structure, as described in POSIX.1 {8} 5.6.1.
  4540.  
  4541.  Any function in this standard that is required to read or write file data
  4542.  or change the file status indicates which of the appropriate time-related
  4543.  fields are to be ``marked for update.''  If an implementation of such a
  4544.  
  4545.                Copyright c 1991 IEEE.  All rights reserved.
  4546.       This is an unapproved IEEE Standards Draft, subject to change.
  4547.  
  4548.  
  4549.  
  4550.  
  4551.  
  4552.  2.2 Definitions                                                        39
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  4559.  
  4560.  function marks for update a time-related field not specified by this
  4561.  standard, this shall be documented, except that any changes caused by
  4562.  pathname resolution need not be documented.  For the other functions in
  4563.  this standard (those that are not explicitly required to read or write
  4564.  file data or change file status, but that in some implementations happen
  4565.  to do so), the effect is unspecified.
  4566.  
  4567.  An implementation may update fields that are marked for update
  4568.  immediately, or it may update such fields periodically.  When the fields
  4569.  are updated, they are set to the current time and the update marks are
  4570.  cleared.  All fields that are marked for update shall be updated when the
  4571.  file is no longer open by any process, or when a _s_t_a_t() or _f_s_t_a_t() is
  4572.  performed on the file.  Other times at which updates are done are
  4573.  unspecified.  Updates are not done for files on read-only file systems.
  4574.  
  4575.  
  4576.  2.2.2.70  file type:  See _f_i_l_e in 2.2.2.54.
  4577.  
  4578.  2.2.2.71  filter:  A command whose operation consists of reading data
  4579.  from standard input or a list of input files and writing data to standard
  4580.  output.
  4581.  
  4582.  Typically, its function is to perform some transformation on the data
  4583.  stream.
  4584.  
  4585.  
  4586.  2.2.2.72  foreground process:  A process that is a member of a foreground
  4587.  process group.  [POSIX.1 {8}]
  4588.  
  4589.  2.2.2.73  foreground process group:  A process group whose member
  4590.  processes have certain privileges, denied to processes in background
  4591.  process groups, when accessing their controlling terminal.
  4592.  
  4593.  Each session that has established a connection with a controlling
  4594.  terminal has exactly one process group of the session as the foreground
  4595.  process group of that controlling terminal.  See POSIX.1 {8} 7.1.1.4.
  4596.  [POSIX.1 {8}]
  4597.  
  4598.  
  4599.  2.2.2.74  <form-feed>:  A character that in the output stream shall        1
  4600.  indicate that printing should start on the next page of an output device.
  4601.  
  4602.  The <form-feed> shall be the character designated by '\f' in the C
  4603.  language binding.  If <form-feed> is not the first character of an output
  4604.  line, the result is unspecified.  It is unspecified whether this
  4605.  character is the exact sequence transmitted to an output device by the
  4606.  system to accomplish the movement to the next page.
  4607.  
  4608.  
  4609.  
  4610.  
  4611.                Copyright c 1991 IEEE.  All rights reserved.
  4612.       This is an unapproved IEEE Standards Draft, subject to change.
  4613.  
  4614.  
  4615.  
  4616.  
  4617.  
  4618.  40                                 2 Terminology and General Requirements
  4619.  
  4620.  
  4621.  
  4622.  
  4623.  
  4624.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  4625.  
  4626.  2.2.2.75  group ID:  A nonnegative integer, which can be contained in an
  4627.  object of type _g_i_d__t, that is used to identify a group of system users.
  4628.  
  4629.  Each system user is a member of at least one group.  When the identity of
  4630.  a group is associated with a process, a group ID value is referred to as
  4631.  a real group ID, an effective group ID, one of the (optional)
  4632.  supplementary group IDs, or an (optional) saved set-group-ID.
  4633.  [POSIX.1 {8}]
  4634.  
  4635.  
  4636.  2.2.2.76  hard link:  The relationship between two directory entries that
  4637.  represent the same file; the result of an execution of the ln utility or
  4638.  the POSIX.1 {8} _l_i_n_k() function.
  4639.  
  4640.  2.2.2.77  home directory:  The current directory associated with a user
  4641.  at the time of login.
  4642.  
  4643.  
  4644.  2.2.2.78  incomplete line:  A sequence of text consisting of one or more
  4645.  non-<newline> characters at the end of the file.
  4646.  
  4647.  2.2.2.79  invoke:  To perform the actions described in 3.9.1.1, except
  4648.  that searching for shell functions and special built-ins is suppressed.
  4649.  
  4650.  See also _e_x_e_c_u_t_e (2.2.2.49).
  4651.  
  4652.  
  4653.  2.2.2.80  job control:  A facility that allows users to selectively stop
  4654.  (suspend) the execution of processes and continue (resume) their
  4655.  execution at a later point.
  4656.  
  4657.  The user typically employs this facility via the interactive interface
  4658.  jointly supplied by the terminal I/O driver and a command interpreter.
  4659.  POSIX.1 {8} conforming implementations may optionally support job control
  4660.  facilities; the presence of this option is indicated to the application
  4661.  at compile time or run time by the definition of the {_POSIX_JOB_CONTROL}
  4662.  symbol; see POSIX.1 {8} 2.9.  [POSIX.1 {8}]
  4663.  
  4664.  2.2.2.81  line:  A sequence of text consisting of zero or more non-
  4665.  <newline> characters plus a terminating <newline> character.
  4666.  
  4667.  
  4668.  2.2.2.82  link:  See _d_i_r_e_c_t_o_r_y _e_n_t_r_y in 2.2.2.36.
  4669.  
  4670.  2.2.2.83  link count:  The number of directory entries that refer to a
  4671.  particular file.  [POSIX.1 {8}]
  4672.  
  4673.  
  4674.  
  4675.  
  4676.  
  4677.                Copyright c 1991 IEEE.  All rights reserved.
  4678.       This is an unapproved IEEE Standards Draft, subject to change.
  4679.  
  4680.  
  4681.  
  4682.  
  4683.  
  4684.  2.2 Definitions                                                        41
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  4691.  
  4692.  2.2.2.84  locale:  The definition of the subset of a user's environment
  4693.  that depends on language and cultural conventions; see 2.5.
  4694.  
  4695.  
  4696.  2.2.2.85  login:  The unspecified activity by which a user gains access
  4697.  to the system.
  4698.  
  4699.  Each login shall be associated with exactly one login name.
  4700.  [POSIX.1 {8}]
  4701.  
  4702.  2.2.2.86  login name:  A user name that is associated with a login.
  4703.  [POSIX.1 {8}]
  4704.  
  4705.  
  4706.  2.2.2.87  mode:  A collection of attributes that specifies a file's type
  4707.  and its access permissions.
  4708.  
  4709.  See _f_i_l_e _a_c_c_e_s_s _p_e_r_m_i_s_s_i_o_n_s in 2.2.2.55.  [POSIX.1 {8}]
  4710.  
  4711.  2.2.2.88  multicharacter collating element:  A sequence of two or more
  4712.  characters that collate as an entity.
  4713.  
  4714.  For example, in some coded character sets, an accented character is
  4715.  represented by a (nonspacing) accent, followed by the letter.  Another
  4716.  example is the Spanish elements ``ch'' and ``ll.''
  4717.  
  4718.  
  4719.  2.2.2.89  negative response:  An input string that matches one of the
  4720.  responses acceptable to the LC_MESSAGES category keyword noexpr, matching
  4721.  an extended regular expression in the current locale.
  4722.  
  4723.  See 2.5.
  4724.  
  4725.  2.2.2.90  <newline>:  A character that in the output stream shall          1
  4726.  indicate that printing should start at the beginning of the next line.
  4727.  
  4728.  The <newline> shall be the character designated by '\n' in the C language
  4729.  binding.  It is unspecified whether this character is the exact sequence
  4730.  transmitted to an output device by the system to accomplish the movement
  4731.  to the next line.
  4732.  
  4733.  
  4734.  2.2.2.91  NUL:  A character with all bits set to zero.
  4735.  
  4736.  2.2.2.92  null string:  See _e_m_p_t_y _s_t_r_i_n_g in 2.2.2.45.
  4737.  
  4738.  
  4739.  
  4740.  
  4741.  
  4742.  
  4743.                Copyright c 1991 IEEE.  All rights reserved.
  4744.       This is an unapproved IEEE Standards Draft, subject to change.
  4745.  
  4746.  
  4747.  
  4748.  
  4749.  
  4750.  42                                 2 Terminology and General Requirements
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  4757.  
  4758.  2.2.2.93  number-sign:  The character ``#''.
  4759.  
  4760.  This standard permits the substitution of the ``pound sign'' graphic
  4761.  defined in ISO/IEC 646 {1} for this symbol when the character set being
  4762.  used has substituted that graphic for the graphic #.  The graphic symbol
  4763.  # is always used in this standard.
  4764.  
  4765.  
  4766.  2.2.2.94  object file:  A regular file containing the output of a
  4767.  compiler, formatted as input to a linkage editor for linking with other
  4768.  object files into an executable form.
  4769.  
  4770.  The methods of linking are unspecified and may involve the dynamic
  4771.  linking of objects at run-time.  The internal format of an object file is
  4772.  unspecified, but a conforming application shall not assume an object file
  4773.  is a text file.
  4774.  
  4775.  2.2.2.95  open file:  A file that is currently associated with a file
  4776.  descriptor.  [POSIX.1 {8}]
  4777.  
  4778.  
  4779.  2.2.2.96  operand:  An argument to a command that is generally used as an
  4780.  object supplying information to a utility necessary to complete its
  4781.  processing.
  4782.  
  4783.  Operands generally follow the options in a command line.  See 2.10.1.
  4784.  
  4785.  2.2.2.97  option:  An argument to a command that is generally used to
  4786.  specify changes in the _u_t_i_l_i_t_y's default behavior; see 2.10.1.
  4787.  
  4788.  
  4789.  2.2.2.98  option-argument:  A parameter that follows certain options.
  4790.  
  4791.  In some cases an option-argument is included within the same argument
  4792.  string as the option; in most cases it is the next argument.  See 2.10.1.
  4793.  
  4794.  2.2.2.99  parent directory:
  4795.  
  4796.      (1)  When discussing a given directory, the directory that both
  4797.           contains a directory entry for the given directory and is
  4798.           represented by the pathname dot-dot in the given directory.
  4799.  
  4800.      (2)  When discussing other types of files, a directory containing a
  4801.           directory entry for the file under discussion.
  4802.  
  4803.  This concept does not apply to dot and dot-dot.  [POSIX.1 {8}]
  4804.  
  4805.  
  4806.  
  4807.  
  4808.  
  4809.                Copyright c 1991 IEEE.  All rights reserved.
  4810.       This is an unapproved IEEE Standards Draft, subject to change.
  4811.  
  4812.  
  4813.  
  4814.  
  4815.  
  4816.  2.2 Definitions                                                        43
  4817.  
  4818.  
  4819.  
  4820.  
  4821.  
  4822.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  4823.  
  4824.  2.2.2.100  parent process:  See _p_r_o_c_e_s_s in 2.2.2.114.  [POSIX.1 {8}]
  4825.  
  4826.  
  4827.  2.2.2.101  parent process ID:  An attribute of a new process after it is
  4828.  created by a currently active process.
  4829.  
  4830.  The parent process ID of a process is the process ID of its creator, for
  4831.  the lifetime of the creator.  After the creator's lifetime has ended, the
  4832.  parent process ID is the process ID of an implementation-defined system
  4833.  process.  [POSIX.1 {8}]
  4834.  
  4835.  2.2.2.102  pathname:  A string that is used to identify a file.
  4836.  
  4837.  A pathname consists of, at most, {PATH_MAX} bytes, including the
  4838.  terminating null character.  It has an optional beginning slash, followed
  4839.  by zero or more filenames separated by slashes.  If the pathname refers
  4840.  to a directory, it may also have one or more trailing slashes.  Multiple
  4841.  successive slashes are considered to be the same as one slash.  A
  4842.  pathname that begins with two successive slashes may be interpreted in an
  4843.  implementation-defined manner, although more than two leading slashes
  4844.  shall be treated as a single slash.  The interpretation of the pathname
  4845.  is described in _p_a_t_h_n_a_m_e _r_e_s_o_l_u_t_i_o_n in 2.2.2.104.  [POSIX.1 {8}]
  4846.  
  4847.  
  4848.  2.2.2.103  pathname component:  See _f_i_l_e_n_a_m_e in 2.2.2.61.  [POSIX.1 {8}]
  4849.  
  4850.  2.2.2.104  pathname resolution:  A concept of the underlying system, as
  4851.  follows.  [POSIX.1 {8}]
  4852.  
  4853.  Pathname resolution is performed for a process to resolve a pathname to a
  4854.  particular file in a file hierarchy.  There may be multiple pathnames
  4855.  that resolve to the same file.
  4856.  
  4857.  Each filename in the pathname is located in the directory specified by
  4858.  its predecessor (for example, in the pathname fragment ``a/b'', file
  4859.  ``b'' is located in directory ``a'').  Pathname resolution fails if this
  4860.  cannot be accomplished.  If the pathname begins with a slash, the
  4861.  predecessor of the first filename in the pathname is taken to be the root
  4862.  directory of the process (such pathnames are referred to as absolute
  4863.  pathnames).  If the pathname does not begin with a slash, the predecessor
  4864.  of the first filename of the pathname is taken to be the current working
  4865.  directory of the process (such pathnames are referred to as ``relative
  4866.  pathnames'').
  4867.  
  4868.  The interpretation of a pathname component is dependent on the values of
  4869.  {NAME_MAX} and {_POSIX_NO_TRUNC} associated with the path prefix of that
  4870.  component.  If any pathname component is longer than {NAME_MAX}, and
  4871.  {_POSIX_NO_TRUNC} is in effect for the path prefix of that component [see
  4872.  _p_a_t_h_c_o_n_f() in POSIX.1 {8} 5.7.1], the implementation shall consider this
  4873.  
  4874.  
  4875.                Copyright c 1991 IEEE.  All rights reserved.
  4876.       This is an unapproved IEEE Standards Draft, subject to change.
  4877.  
  4878.  
  4879.  
  4880.  
  4881.  
  4882.  44                                 2 Terminology and General Requirements
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  4889.  
  4890.  an error condition.  Otherwise, the implementation shall use the first
  4891.  {NAME_MAX} bytes of the pathname component.
  4892.  
  4893.  The special filename dot refers to the directory specified by its
  4894.  predecessor.  The special filename dot-dot refers to the parent directory
  4895.  of its predecessor directory.  As a special case, in the root directory,
  4896.  dot-dot may refer to the root directory itself.
  4897.  
  4898.  A pathname consisting of a single slash resolves to the root directory of
  4899.  the process.  A null pathname is invalid.
  4900.  
  4901.  
  4902.  2.2.2.105  path prefix:  A pathname, with an optional ending slash, that
  4903.  refers to a directory.  [POSIX.1 {8}]
  4904.  
  4905.  2.2.2.106  pattern:  A sequence of characters used either with regular
  4906.  expression notation (see 2.8) or for pathname expansion (see 3.6.6), as a
  4907.  means of selecting various character strings or pathnames, respectively.
  4908.  
  4909.  The syntaxes of the two patterns are similar, but not identical; this
  4910.  standard always indicates the type of pattern being referred to in the
  4911.  immediate context of the use of the term.
  4912.  
  4913.  
  4914.  2.2.2.107  period:  The character ``.''.
  4915.  
  4916.  The term _p_e_r_i_o_d is contrasted against _d_o_t (2.2.2.38), which is used to
  4917.  describe a specific directory entry.
  4918.  
  4919.  2.2.2.108  permissions:  See _f_i_l_e _a_c_c_e_s_s _p_e_r_m_i_s_s_i_o_n_s in 2.2.2.55.
  4920.  
  4921.  
  4922.  2.2.2.109  pipe:  An object accessed by one of the pair of file
  4923.  descriptors created by the POSIX.1 {8} _p_i_p_e() function.
  4924.  
  4925.  Once created, the file descriptors can be used to manipulate it, and it
  4926.  behaves identically to a FIFO special file when accessed in this way.  It
  4927.  has no name in the file hierarchy.  [POSIX.1 {8}]
  4928.  
  4929.  2.2.2.110  portable character set:  The set of characters described in
  4930.  2.4 that is supported on all conforming systems.
  4931.  
  4932.  This term is contrasted against the smaller _p_o_r_t_a_b_l_e _f_i_l_e_n_a_m_e _c_h_a_r_a_c_t_e_r
  4933.  _s_e_t; see 2.2.2.111.
  4934.  
  4935.  
  4936.  2.2.2.111  portable filename character set:  The set of characters from
  4937.  which portable filenames are constructed.
  4938.  
  4939.  
  4940.  
  4941.                Copyright c 1991 IEEE.  All rights reserved.
  4942.       This is an unapproved IEEE Standards Draft, subject to change.
  4943.  
  4944.  
  4945.  
  4946.  
  4947.  
  4948.  2.2 Definitions                                                        45
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  4955.  
  4956.  For a filename to be portable across conforming implementations of this
  4957.  standard, it shall consist only of the following characters:
  4958.  
  4959.        A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  4960.        a b c d e f g h i j k l m n o p q r s t u v w x y z
  4961.        0 1 2 3 4 5 6 7 8 9 . _ -
  4962.  
  4963.  The last three characters are the period, underscore, and hyphen
  4964.  characters, respectively.  The hyphen shall not be used as the first
  4965.  character of a portable filename.  Upper- and lowercase letters shall
  4966.  retain their unique identities between conforming implementations.  In
  4967.  the case of a portable pathname, the slash character may also be used.
  4968.  [POSIX.1 {8}]
  4969.  
  4970.  
  4971.  2.2.2.112  printable character:  One of the characters included in the
  4972.  print character classification of the LC_CTYPE category in the current
  4973.  locale; see 2.5.2.1.
  4974.  
  4975.  2.2.2.113  privilege:  See _a_p_p_r_o_p_r_i_a_t_e _p_r_i_v_i_l_e_g_e_s in 2.2.2.6.
  4976.  [POSIX.1 {8}]
  4977.  
  4978.  
  4979.  2.2.2.114  process:  An address space and single thread of control that
  4980.  executes within that address space, and its required system resources.
  4981.  
  4982.  A process is created by another process issuing the POSIX.1 {8} _f_o_r_k()
  4983.  function.  The process that issues _f_o_r_k() is known as the parent process,
  4984.  and the new process created by the _f_o_r_k() is known as the child process.
  4985.  [POSIX.1 {8}]
  4986.  
  4987.  The attributes of processes required by POSIX.2 form a subset of those in
  4988.  POSIX.1 {8}; see 2.9.1.
  4989.  
  4990.  2.2.2.115  process group:  A collection of processes that permits the
  4991.  signaling of related processes.
  4992.  
  4993.  Each process in the system is a member of a process group that is
  4994.  identified by a process group ID.  A newly created process joins the
  4995.  process group of its creator.  [POSIX.1 {8}]
  4996.  
  4997.  
  4998.  2.2.2.116  process group ID:  The unique identifier representing a
  4999.  process group during its lifetime.
  5000.  
  5001.  A process group ID is a positive integer that can be contained in a
  5002.  _p_i_d__t.  It shall not be reused by the system until the process group
  5003.  lifetime ends.  [POSIX.1 {8}]
  5004.  
  5005.  
  5006.  
  5007.                Copyright c 1991 IEEE.  All rights reserved.
  5008.       This is an unapproved IEEE Standards Draft, subject to change.
  5009.  
  5010.  
  5011.  
  5012.  
  5013.  
  5014.  46                                 2 Terminology and General Requirements
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  5021.  
  5022.  2.2.2.117  process group leader:  A process whose process ID is the same
  5023.  as its process group ID.  [POSIX.1 {8}]
  5024.  
  5025.  
  5026.  2.2.2.118  process ID:  The unique identifier representing a process.
  5027.  
  5028.  A process ID is a positive integer that can be contained in a _p_i_d__t.  A
  5029.  process ID shall not be reused by the system until the process lifetime
  5030.  ends.  In addition, if there exists a process group whose process group
  5031.  ID is equal to that process ID, the process ID shall not be reused by the
  5032.  system until the process group lifetime ends.  A process that is not a
  5033.  system process shall not have a process ID of 1.  [POSIX.1 {8}]
  5034.  
  5035.  2.2.2.119  program:  A prepared sequence of instructions to the system to
  5036.  accomplish a defined task.
  5037.  
  5038.  The term _p_r_o_g_r_a_m in POSIX.2 encompasses applications written in the Shell
  5039.  Command Language, complex utility input languages (for example, awk, lex,
  5040.  sed, etc.), and high-level languages.
  5041.  
  5042.  
  5043.  2.2.2.120  read-only file system:  A file system that has
  5044.  implementation-defined characteristics restricting modifications.
  5045.  [POSIX.1 {8}]
  5046.  
  5047.  2.2.2.121  real group ID:  The attribute of a process that, at the time
  5048.  of process creation, identifies the group of the user who created the
  5049.  process.
  5050.  
  5051.  See _g_r_o_u_p _I_D in 2.2.2.75.  This value is subject to change during the
  5052.  process lifetime, as described in POSIX.1 {8} 4.2.2 [_s_e_t_g_i_d()].
  5053.  [POSIX.1 {8}]
  5054.  
  5055.  
  5056.  2.2.2.122  real user ID:  The attribute of a process that, at the time of
  5057.  process creation, identifies the user who created the process.
  5058.  
  5059.  See _u_s_e_r _I_D in 2.2.2.154.  This value is subject to change during the
  5060.  process lifetime, as described in POSIX.1 {8} 4.2.2 [_s_e_t_u_i_d()].
  5061.  [POSIX.1 {8}]
  5062.  
  5063.  2.2.2.123  regular expression:  A pattern (sequence of characters or       1
  5064.  symbols) constructed according to the rules defined in 2.8.                1
  5065.  
  5066.  
  5067.  2.2.2.124  regular file:  A file that is a randomly accessible sequence
  5068.  of bytes, with no further structure imposed by the system.  [POSIX.1 {8}]
  5069.  
  5070.  
  5071.  
  5072.  
  5073.                Copyright c 1991 IEEE.  All rights reserved.
  5074.       This is an unapproved IEEE Standards Draft, subject to change.
  5075.  
  5076.  
  5077.  
  5078.  
  5079.  
  5080.  2.2 Definitions                                                        47
  5081.  
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  5087.  
  5088.  2.2.2.125  relative pathname:  See _p_a_t_h_n_a_m_e _r_e_s_o_l_u_t_i_o_n in 2.2.2.104.
  5089.  [POSIX.1 {8}]
  5090.  
  5091.  
  5092.  2.2.2.126  root directory:  A directory, associated with a process, that
  5093.  is used in pathname resolution for pathnames that begin with a slash.
  5094.  [POSIX.1 {8}]
  5095.  
  5096.  2.2.2.127  saved set-group-ID:  An attribute of a process that allows
  5097.  some flexibility in the assignment of the effective group ID attribute,
  5098.  when the saved set-user-ID option is implemented, as described in
  5099.  POSIX.1 {8} 3.1.2 (_e_x_e_c) and 4.2.2 [_s_e_t_g_i_d()].  [POSIX.1 {8}]
  5100.  
  5101.  
  5102.  2.2.2.128  saved set-user-ID:  An attribute of a process that allows some
  5103.  flexibility in the assignment of the effective user ID attribute, when
  5104.  the saved set-user-ID option is implemented, as described in POSIX.1 {8}
  5105.  3.1.2 and 4.2.2 [_s_e_t_u_i_d()].  [POSIX.1 {8}]
  5106.  
  5107.  2.2.2.129  seconds since the Epoch:  A value to be interpreted as the
  5108.  number of seconds between a specified time and the Epoch.
  5109.  
  5110.  A Coordinated Universal Time name [specified in terms of seconds
  5111.  (_t_m__s_e_c), minutes (_t_m__m_i_n), hours (_t_m__h_o_u_r), days since January 1 of the
  5112.  year (_t_m__y_d_a_y), and calendar year minus 1900 (_t_m__y_e_a_r)] is related to a
  5113.  time represented as seconds since the Epoch, according to the expression
  5114.  below.
  5115.  
  5116.  If the year < 1970 or the value is negative, the relationship is
  5117.  undefined.  If the year _> 1970 and the value is nonnegative, the value is
  5118.  related to a Coordinated Universal Time name according to the expression:
  5119.  
  5120.        _t_m__s_e_c + _t_m__m_i_n*60 + _t_m__h_o_u_r*3600 + _t_m__y_d_a_y*86400 +
  5121.            (_t_m__y_e_a_r-70)*31536000 + ((_t_m__y_e_a_r-69)/4)*86400
  5122.  
  5123.  [POSIX.1 {8}]
  5124.  
  5125.  
  5126.  2.2.2.130  session:  A collection of process groups established for job
  5127.  control purposes.
  5128.  
  5129.  Each process group is a member of a session.  A process is considered to
  5130.  be a member of the session of which its process group is a member.  A
  5131.  newly created process joins the session of its creator.  A process can
  5132.  alter its session membership (see POSIX.1 {8} 4.3.2 [_s_e_t_s_i_d()].
  5133.  Implementations that support the POSIX.1 {8} _s_e_t_p_g_i_d() function (see
  5134.  POSIX.1 {8} 4.3.3) can have multiple process groups in the same session.
  5135.  [POSIX.1 {8}]
  5136.  
  5137.  
  5138.  
  5139.                Copyright c 1991 IEEE.  All rights reserved.
  5140.       This is an unapproved IEEE Standards Draft, subject to change.
  5141.  
  5142.  
  5143.  
  5144.  
  5145.  
  5146.  48                                 2 Terminology and General Requirements
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  5153.  
  5154.  2.2.2.131  session leader:  A process that has created a session; see
  5155.  POSIX.1 {8} 4.3.2 [_s_e_t_s_i_d()].  [POSIX.1 {8}]
  5156.  
  5157.  
  5158.  2.2.2.132  session lifetime:  The period between when a session is
  5159.  created and the end of the lifetime of all the process groups that remain
  5160.  as members of the session.  [POSIX.1 {8}]
  5161.  
  5162.  2.2.2.133  shell:  A program that interprets sequences of text input as
  5163.  commands.
  5164.  
  5165.  It may operate on an input stream or it may interactively prompt and read
  5166.  commands from a terminal.
  5167.  
  5168.  
  5169.  2.2.2.134  Shell, The:  The Shell Command Language Interpreter (see
  5170.  4.56), a specific instance of a shell.
  5171.  
  5172.  2.2.2.135  shell script:  A file containing shell commands.
  5173.  
  5174.  If the file is made executable, it can be executed by specifying its name
  5175.  as a simple command (see the description of _s_i_m_p_l_e _c_o_m_m_a_n_d in 3.9.1).
  5176.  Execution of a shell script causes a shell to execute the commands within
  5177.  the script.  Alternately, a shell can be requested to execute the
  5178.  commands in a shell script by specifying the name of the shell script as
  5179.  the operand to the sh utility.
  5180.  
  5181.  
  5182.  2.2.2.136  signal:  A mechanism by which a process may be notified of, or
  5183.  affected by, an event occurring in the system.
  5184.  
  5185.  Examples of such events include hardware exceptions and specific actions
  5186.  by processes.  The term _s_i_g_n_a_l is also used to refer to the event itself.
  5187.  [POSIX.1 {8}]
  5188.  
  5189.  2.2.2.137  single-quote:  The character ``''', also known as _a_p_o_s_t_r_o_p_h_e.
  5190.  
  5191.  
  5192.  2.2.2.138  slash:  The character ``/'', also known as _s_o_l_i_d_u_s.
  5193.  
  5194.  2.2.2.139  source code:  When dealing with the Shell Command Language,
  5195.  source code is input to the command language interpreter.
  5196.  
  5197.  The term _s_h_e_l_l _s_c_r_i_p_t is synonymous with this meaning.
  5198.  
  5199.  When dealing with the C Language Bindings Option, source code is input to
  5200.  a C compiler conforming to the C Standard {7}.
  5201.  
  5202.  
  5203.  
  5204.  
  5205.                Copyright c 1991 IEEE.  All rights reserved.
  5206.       This is an unapproved IEEE Standards Draft, subject to change.
  5207.  
  5208.  
  5209.  
  5210.  
  5211.  
  5212.  2.2 Definitions                                                        49
  5213.  
  5214.  
  5215.  
  5216.  
  5217.  
  5218.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  5219.  
  5220.  When dealing with another ISO/IEC conforming language, source code is
  5221.  input to a compiler conforming to that ISO/IEC standard.
  5222.  
  5223.  Source code also refers to the input statements prepared for the
  5224.  following standard utilities:  awk, bc, ed, lex, localedef, make, sed,
  5225.  and yacc.
  5226.  
  5227.  Source code can also refer to a collection of sources meeting any or all
  5228.  of these meanings.
  5229.  
  5230.  
  5231.  _2._2._2._1_4_0  <space>:  The character defined in 2.4 as <space>.
  5232.  
  5233.  The <space> character is a member of the space character class of the
  5234.  current locale, but represents the single character, and not all of the
  5235.  possible members of the class.  (See 2.2.2.158.)
  5236.  
  5237.  2.2.2.141  standard error:  An output stream usually intended to be used
  5238.  for diagnostic messages.
  5239.  
  5240.  
  5241.  2.2.2.142  standard input:  An input stream usually intended to be used
  5242.  for primary data input.
  5243.  
  5244.  2.2.2.143  standard output:  An output stream usually intended to be used
  5245.  for primary data output.
  5246.  
  5247.  
  5248.  2.2.2.144  standard utilities:  The utilities defined by this standard,
  5249.  in the Sections 4, 5, and 6, and Annex A, and Annex C, and in similar
  5250.  sections of utility definitions introduced in future revisions of, and
  5251.  supplements to, this standard.
  5252.  
  5253.  2.2.2.145  stream:  An ordered sequence of characters, as described by
  5254.  the C Standard {7}.
  5255.  
  5256.  
  5257.  2.2.2.146  supplementary group ID:  An attribute of a process used in
  5258.  determining file access permissions.
  5259.  
  5260.  A process has up to {NGROUPS_MAX} supplementary group IDs in addition to
  5261.  the effective group ID.  The supplementary group IDs of a process are set
  5262.  to the supplementary group IDs of the parent process when the process is
  5263.  created.  Whether a process's effective group ID is included in or
  5264.  omitted from its list of supplementary group IDs is unspecified.
  5265.  [POSIX.1 {8}]
  5266.  
  5267.  
  5268.  
  5269.  
  5270.  
  5271.                Copyright c 1991 IEEE.  All rights reserved.
  5272.       This is an unapproved IEEE Standards Draft, subject to change.
  5273.  
  5274.  
  5275.  
  5276.  
  5277.  
  5278.  50                                 2 Terminology and General Requirements
  5279.  
  5280.  
  5281.  
  5282.  
  5283.  
  5284.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  5285.  
  5286.  2.2.2.147  system:  An implementation of this standard.
  5287.  
  5288.  
  5289.  2.2.2.148  <tab>:  The horizontal tab character.
  5290.  
  5291.  2.2.2.149  terminal [terminal device]:  A character special file that
  5292.  obeys the specifications of the POSIX.1 {8} General Terminal Interface.
  5293.  [POSIX.1 {8}]
  5294.  
  5295.  
  5296.  2.2.2.150  text column:  A roughly rectangular block of characters
  5297.  capable of being laid out side-by-side next to other text columns on an
  5298.  output page or terminal screen.
  5299.  
  5300.  The widths of text columns are measured in column positions.
  5301.  
  5302.  2.2.2.151  text file:  A file that contains characters organized into one
  5303.  or more lines.
  5304.  
  5305.  The lines shall not contain NUL characters and none shall exceed
  5306.  {LINE_MAX} bytes in length, including the <newline>.  Although
  5307.  POSIX.1 {8} does not distinguish between text files and binary files (see
  5308.  the C Standard {7}), many utilities only produce predictable or
  5309.  meaningful output when operating on text files.  The standard utilities
  5310.  that have such restrictions always specify _t_e_x_t _f_i_l_e_s in their Standard
  5311.  Input or Input Files subclauses.
  5312.  
  5313.  
  5314.  2.2.2.152  tilde:  The character ``~''.
  5315.  
  5316.  2.2.2.153  user database:  See Section 9 in POSIX.1 {8}.
  5317.  
  5318.  
  5319.  2.2.2.154  user ID:  A nonnegative integer, which can be contained in an
  5320.  object of type _u_i_d__t, that is used to identify a system user.
  5321.  
  5322.  When the identity of a user is associated with a process, a user ID value
  5323.  is referred to as a real user ID, an effective user ID, or an (optional)
  5324.  saved set-user-ID.  [POSIX.1 {8}]
  5325.  
  5326.  2.2.2.155  user name:  A string that is used to identify a user, as
  5327.  described in POSIX.1 {8} 9.1.  [POSIX.1 {8}]
  5328.  
  5329.  
  5330.  2.2.2.156  utility:  A program that can be called by name from a shell to
  5331.  perform a specific task, or related set of tasks.
  5332.  
  5333.  This program shall either be an executable file, such as might be
  5334.  produced by a compiler/linker system from computer source code, or a file
  5335.  of shell source code, directly interpreted by the shell.  The program may
  5336.  
  5337.                Copyright c 1991 IEEE.  All rights reserved.
  5338.       This is an unapproved IEEE Standards Draft, subject to change.
  5339.  
  5340.  
  5341.  
  5342.  
  5343.  
  5344.  2.2 Definitions                                                        51
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  5351.  
  5352.  have been produced by the user, provided by the implementor of this
  5353.  standard, or acquired from an independent distributor.  The term _u_t_i_l_i_t_y
  5354.  does not apply to the special built-in utilities provided as part of the
  5355.  shell command language; see 3.14.  The system may implement certain
  5356.  utilities as shell functions (see 3.9.5) or built-ins (see 2.3), but only
  5357.  an application that is aware of the command search order described in
  5358.  3.9.1.1 or of performance characteristics can discern differences between
  5359.  the behavior of such a function or built-in and that of a true executable
  5360.  file.
  5361.  
  5362.  
  5363.  _2._2._2._1_5_7  <vertical-tab>:  The vertical tab character.
  5364.  
  5365.  2.2.2.158  white space:  A sequence of one or more characters that belong
  5366.  to the space character class as defined via the LC_CTYPE category in the
  5367.  current locale.
  5368.  
  5369.  In the POSIX Locale, white space consists of one or more <blank>s
  5370.  (<space>s and <tab>s), <newline>s, <carriage-return>s, <form-feed>s, and
  5371.  <vertical-tab>s.
  5372.  
  5373.  
  5374.  2.2.2.159  working directory [current working directory]:  A directory,
  5375.  associated with a process, that is used in pathname resolution for
  5376.  pathnames that do not begin with a slash.
  5377.  
  5378.  2.2.2.160  write:  To output characters to a file, such as standard
  5379.  output or standard error.
  5380.  
  5381.  Unless otherwise stated, standard output is the default output
  5382.  destination for all uses of the term _w_r_i_t_e.
  5383.  
  5384.  BEGIN_RATIONALE
  5385.  
  5386.  
  5387.  2.2.2.161  General Terms Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  5388.             _P_1_0_0_3._2)
  5389.  
  5390.  Many of the terms originated in POSIX.1 {8} and are duplicated in this
  5391.  standard to meet editorial requirements.  In some cases, there is
  5392.  supplementary text that presents additional information concerning
  5393.  POSIX.2 aspects of the concept.
  5394.  
  5395.  This standard uses the term _c_h_a_r_a_c_t_e_r to mean a sequence of one or more
  5396.  bytes representing a single graphic symbol, as defined in POSIX.1 {8}.     1
  5397.  The deviation in the exact text of the C Standard {7} definition for _b_y_t_e  1
  5398.  meets the intent of the C Standard {7} Rationale and the developers of     1
  5399.  POSIX.1 {8}, but clears up the ambiguity raised by the term _b_a_s_i_c          1
  5400.  _e_x_e_c_u_t_i_o_n _c_h_a_r_a_c_t_e_r _s_e_t, which is not defined in POSIX.1 {8}.  It is       1
  5401.  expected that a future version of POSIX.1 {8} will align with the text     1
  5402.  
  5403.                Copyright c 1991 IEEE.  All rights reserved.
  5404.       This is an unapproved IEEE Standards Draft, subject to change.
  5405.  
  5406.  
  5407.  
  5408.  
  5409.  
  5410.  52                                 2 Terminology and General Requirements
  5411.  
  5412.  
  5413.  
  5414.  
  5415.  
  5416.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  5417.  
  5418.  used here.  The octet-minimum requirement is merely a reflection of the    1
  5419.  {CHAR_BIT} value in POSIX.1 {8} and the C Standard {7}.                    1
  5420.  
  5421.  The POSIX.1 {8} term _f_i_l_e _m_o_d_e is a superset of the POSIX.2 _f_i_l_e _m_o_d_e
  5422.  _b_i_t_s.  POSIX.1 {8} defines the file mode as the entire _m_o_d_e__t object
  5423.  (which includes the file type in historically the upper four bits, the
  5424.  sticky bit on most implementations, and potentially other nonstandardized
  5425.  attributes), while POSIX.2 file mode bits include only the eleven defined
  5426.  bits.
  5427.  
  5428.  The terms _c_o_m_m_a_n_d and _u_t_i_l_i_t_y are related but have distinct meanings.
  5429.  Command is defined as ``a directive to a shell to perform a specific
  5430.  task.''  The directive can be in the form of a single utility name (for
  5431.  example, ls), or the directive can take the form of a compound command
  5432.  (for example, ls | grep name | pr).
  5433.  
  5434.  A utility is a program that is callable by name from a shell.  Issuing
  5435.  only the utility's name to a shell is the equivalent of a one-word
  5436.  command.  A utility may be invoked as a separate program that executes in
  5437.  a different process than the command language interpreter, or may be
  5438.  implemented as a part of the command language interpreter.  For example,
  5439.  the echo command (the directive to perform a specific task) may be
  5440.  implemented such that the echo utility (the logic that performs the task
  5441.  of echoing) is in a separate program; and therefore, is executed in a
  5442.  process that is different than the command language interpreter.
  5443.  Conversely, the logic that performs the echo utility could be built into
  5444.  the command language interpreter; and therefore, execute in the same
  5445.  process as the command language interpreter.
  5446.  
  5447.  The terms _t_o_o_l and _a_p_p_l_i_c_a_t_i_o_n can be thought of as being synonymous with
  5448.  _u_t_i_l_i_t_y from the perspective of the operating system kernel.  Tools,
  5449.  applications, and utilities have historically run, typically, in
  5450.  processes above the kernel level.  Tools and utilities have been
  5451.  historically a part of the operating system nonkernel code, and performed
  5452.  system related functions such as listing directory contents, checking
  5453.  file systems, repairing file systems, or extracting system status
  5454.  information.  Applications have not generally been a part of the
  5455.  operating system, and perform nonsystem related functions such as word
  5456.  processing, architectural design, mechanical design, workstation
  5457.  publishing, or financial analysis.  Utilities have most frequently been
  5458.  provided by the operating system vendor, applications by third party
  5459.  software vendors or by the users themselves.  Nevertheless, the standard
  5460.  does not differentiate between tools, utilities, and applications when it
  5461.  comes to receiving services from the system, a shell, or the standard
  5462.  utilities.  (For example, the xargs utility invokes another utility; it
  5463.  would be of fairly limited usefulness if the users couldn't run their own
  5464.  applications in place of the standard utilities.)  Utilities are not
  5465.  applications in the sense that they are not themselves subjects to the
  5466.  restrictions of this standard or any other standard--there is no
  5467.  
  5468.  
  5469.                Copyright c 1991 IEEE.  All rights reserved.
  5470.       This is an unapproved IEEE Standards Draft, subject to change.
  5471.  
  5472.  
  5473.  
  5474.  
  5475.  
  5476.  2.2 Definitions                                                        53
  5477.  
  5478.  
  5479.  
  5480.  
  5481.  
  5482.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  5483.  
  5484.  requirement for grep, stty, or any of the utilities defined here to be
  5485.  any of the classes of Conforming POSIX.2 Applications.
  5486.  
  5487.  The term _t_e_x_t _f_i_l_e does not prevent the inclusion of control or other
  5488.  nonprintable characters (other than NUL).  Therefore, standard utilities
  5489.  that list text files as inputs or outputs are either able to process the
  5490.  special characters gracefully or they explicitly describe their
  5491.  limitations within their individual subclauses.  The definition of _t_e_x_t
  5492.  _f_i_l_e has caused a good deal of controversy.  The only difference between
  5493.  text and binary here is that text files have lines of (less than
  5494.  {LINE_MAX}) bytes, with no NUL characters, each terminated by a <newline>
  5495.  character.  The definition allows a file with a single <newline>, but not
  5496.  a totally empty file, to be called a text file.  If a file ends with an
  5497.  incomplete line it is not strictly a text file by this definition.  A
  5498.  related point is that the <newline> character referred to in this
  5499.  standard is not some generic line separator, but a single character;
  5500.  files created on systems where they use multiple characters for ends of
  5501.  lines are not portable to all POSIX systems without some translation
  5502.  process unspecified by this standard.
  5503.  
  5504.  The term _h_a_r_d _l_i_n_k is historically-derived.  In systems without
  5505.  extensions to ln, it is a synonym for _l_i_n_k.  The concept of a _s_y_m_b_o_l_i_c
  5506.  _l_i_n_k originated with BSD systems and the term _h_a_r_d is used to
  5507.  differentiate between the two types of links.
  5508.  
  5509.  There are some terms used that are undefined in POSIX.2, POSIX.1 {8}, or
  5510.  the C Standard {7}.  The working group believes that these terms have a
  5511.  ``common usage,'' and that a definition in POSIX.2 would not be
  5512.  appropriate.  Terms in this category include, but are not limited to, the
  5513.  following:  _a_p_p_l_i_c_a_t_i_o_n, _c_h_a_r_a_c_t_e_r _s_e_t, _l_o_g_i_n _s_e_s_s_i_o_n, _u_s_e_r.  Good
  5514.  sources for general terms of this type are the _I_S_O/_A_F_N_O_R _D_i_c_t_i_o_n_a_r_y _o_f
  5515.  _C_o_m_p_u_t_e_r _S_c_i_e_n_c_e {B12} and _I_E_E_E _D_i_c_t_i_o_n_a_r_y {B18}.
  5516.  
  5517.  The term _f_i_l_e _n_a_m_e was defined in previous drafts to be a synonym for
  5518.  _p_a_t_h_n_a_m_e.  It was removed in the face of objections that it was too close
  5519.  to _f_i_l_e_n_a_m_e, which means something different (a pathname component).  The
  5520.  general solution to this has been to use the term _f_i_l_e in parameter
  5521.  names, rather than _f_i_l_e__n_a_m_e, and to make more liberal use of the correct
  5522.  term, _p_a_t_h_n_a_m_e; an alternate solution has been to replace _f_i_l_e _n_a_m_e with
  5523.  _t_h_e _n_a_m_e _o_f _t_h_e _f_i_l_e.
  5524.  
  5525.  Many character names are included in this subclause.  Because of
  5526.  historical usage, some of these names are a bit different than the ones
  5527.  used in international standards for character sets, such as ISO/IEC 646
  5528.  {1}.  It was felt that many more UNIX system people than character set
  5529.  lawyers would be reading and reviewing the standard, so the former group
  5530.  was the one accommodated.  On the other hand, the precise definitions of
  5531.  <space>, <blank>, and _w_h_i_t_e _s_p_a_c_e have replaced common usage (where they
  5532.  have been used virtually interchangeably), as the standard attempts to
  5533.  
  5534.  
  5535.                Copyright c 1991 IEEE.  All rights reserved.
  5536.       This is an unapproved IEEE Standards Draft, subject to change.
  5537.  
  5538.  
  5539.  
  5540.  
  5541.  
  5542.  54                                 2 Terminology and General Requirements
  5543.  
  5544.  
  5545.  
  5546.  
  5547.  
  5548.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  5549.  
  5550.  balance readability against precision.
  5551.  
  5552.  In earlier drafts, the names for the character pairs ( ), [ ], and { }
  5553.  were referred to as ``opening'' and ``closing'' parentheses, brackets,
  5554.  and braces.  These were changed to the current ``left'' and right.''
  5555.  When the characters are used to express natural language, the terms
  5556.  ``open'' and ``close'' imply text direction more strongly than ``left''
  5557.  and ``right.''  By POSIX.2 definition, the character <open-parenthesis>
  5558.  will always be mapped to the glyph '(' regardless of the locale.  But
  5559.  when reading right-to-left, the opening punctuation of a parenthesized
  5560.  text segment would be ')'.  The <left-parenthesis> and <right-
  5561.  parenthesis> forms are the correct ones because the punctuation appears
  5562.  on the left and right, respectively, of the parenthesized text regardless
  5563.  of the direction one might be reading the text.
  5564.  
  5565.  The <backspace> character and the ERASE special character defined in
  5566.  POSIX.1 {8} should not be confused.  The use of the <backspace> character
  5567.  and the ERASE special character defined in the POSIX.1 {8} _t_e_r_m_i_o_s clause
  5568.  on special characters (7.1.1.9) are distinct even though the ERASE
  5569.  special character may be set to <backspace>.
  5570.  
  5571.  In most one-byte character sets, such as ASCII, the concepts of column
  5572.  positions is identical to character positions and to bytes.  Therefore,
  5573.  it has been historically acceptable for some implementations to describe
  5574.  line folding or tab stops or table column alignment in terms of bytes or
  5575.  character positions.  Other character sets pose complications, as they
  5576.  can have internal representations longer than one octet and they can have
  5577.  displayable characters that have different widths on the terminal screen
  5578.  or printer.
  5579.  
  5580.  In this standard the term _c_o_l_u_m_n _p_o_s_i_t_i_o_n_s has been defined to mean
  5581.  character--not byte--positions in input files (such as ``column position
  5582.  7 of the FORTRAN input'').  Output files describe the column position in
  5583.  terms of the display width of the narrowest printable character in the
  5584.  character set, adjusted to fit the characteristics of the output device.
  5585.  It is very possible that _n column positions will not be able to hold _n
  5586.  characters in some character sets, unless all of those characters are of
  5587.  the narrowest width.  It is assumed that the implementation is aware of
  5588.  the width of the various characters, deriving this information from the
  5589.  value of LC_CTYPE, and thus can determine how many column positions to
  5590.  allot for each character in those utilities where it is important.  This
  5591.  information is not available to the portable application writer because
  5592.  POSIX.2 provides no interface specification to retrieve such information.
  5593.  
  5594.  The term _c_o_l_u_m_n _p_o_s_i_t_i_o_n was used instead of the more natural _c_o_l_u_m_n as
  5595.  the latter is frequently used in the standard in the different contexts
  5596.  of columns of figures, columns of table values, etc.  Wherever confusion
  5597.  might result, these latter types of columns are referred to as _t_e_x_t
  5598.  _c_o_l_u_m_n_s.
  5599.  
  5600.  
  5601.                Copyright c 1991 IEEE.  All rights reserved.
  5602.       This is an unapproved IEEE Standards Draft, subject to change.
  5603.  
  5604.  
  5605.  
  5606.  
  5607.  
  5608.  2.2 Definitions                                                        55
  5609.  
  5610.  
  5611.  
  5612.  
  5613.  
  5614.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  5615.  
  5616.  The definition of _b_i_n_a_r_y _f_i_l_e was removed, as the term is not used in the
  5617.  standard.
  5618.  
  5619.  The ISO/IEC 646 {1} character set standard permits substitution of
  5620.  national currency symbols for the character $ in the ``reference
  5621.  character set'' (which is the same as ASCII).  This standard permits the
  5622.  substitution only of the actual characters shown in ISO/IEC 646 {1}:
  5623.  currency sign for the dollar sign and pound sign for the number sign.
  5624.  This document uses the latter names and their symbols, but it is valid
  5625.  for an implementation to accept, for instance, the pound sign () as a
  5626.  comment character in the shell, if that is what the locale's character
  5627.  set uses instead of the number sign (#).  Other variation of national
  5628.  currency symbols are not allowed, per the request of the WG15 POSIX
  5629.  working group.
  5630.  
  5631.  The term _s_t_r_e_a_m is not related to System V's STREAMS communications
  5632.  facility; it is derived from historical UNIX system usage and has been
  5633.  made official by the C Standard {7}.  The POSIX.2 standard makes no
  5634.  differentiation between C's _t_e_x_t _s_t_r_e_a_m and _b_i_n_a_r_y _s_t_r_e_a_m.
  5635.  
  5636.  The formula used in the POSIX.1 {8} definition of _s_e_c_o_n_d_s _s_i_n_c_e _t_h_e _E_p_o_c_h  1
  5637.  is not perfect in all cases.  See the related rationale in POSIX.1 {8}.    1
  5638.  
  5639.  END_RATIONALE                                                              1
  5640.  
  5641.  
  5642.  
  5643.  
  5644.  
  5645.  
  5646.  
  5647.  
  5648.  
  5649.  
  5650.  
  5651.  
  5652.  
  5653.  
  5654.  
  5655.  
  5656.  
  5657.  
  5658.  
  5659.  
  5660.  
  5661.  
  5662.  
  5663.  
  5664.  
  5665.  
  5666.  
  5667.                Copyright c 1991 IEEE.  All rights reserved.
  5668.       This is an unapproved IEEE Standards Draft, subject to change.
  5669.  
  5670.  
  5671.  
  5672.  
  5673.  
  5674.  56                                 2 Terminology and General Requirements
  5675.  
  5676.  
  5677.  
  5678.  
  5679.  
  5680.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  5681.  
  5682.  2.2.3  Abbreviations
  5683.  
  5684.  For the purposes of this standard, the following abbreviations apply:
  5685.  
  5686.  
  5687.  2.2.3.1  C Standard:  ISO/IEC 9899: ..., _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g _s_y_s_t_e_m_s-
  5688.  -_P_r_o_g_r_a_m_m_i_n_g _l_a_n_g_u_a_g_e_s--_C {7}.
  5689.  
  5690.  2.2.3.2  ERE:  An Extended Regular Expression, as defined in 2.8.4.
  5691.  
  5692.  
  5693.  2.2.3.3  LC_*:  An abbreviation used to represent all of the environment
  5694.  variables named in 2.6 whose names begin with the characters ``LC_''.
  5695.  
  5696.  2.2.3.4  POSIX.1:  ISO/IEC 9945-1: 1990:  _I_n_f_o_r_m_a_t_i_o_n _t_e_c_h_n_o_l_o_g_y--
  5697.  _P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e (_P_O_S_I_X)--_P_a_r_t _1: _S_y_s_t_e_m _A_p_p_l_i_c_a_t_i_o_n
  5698.  _P_r_o_g_r_a_m _I_n_t_e_r_f_a_c_e (_A_P_I) [_C _L_a_n_g_u_a_g_e] {8}.
  5699.  
  5700.  
  5701.  2.2.3.5  POSIX.2:  This standard.
  5702.  
  5703.  2.2.3.6  RE [BRE]:  A Basic Regular Expression, as defined in 2.8.3.
  5704.  
  5705.  
  5706.  
  5707.  
  5708.  
  5709.  
  5710.  
  5711.  
  5712.  
  5713.  
  5714.  
  5715.  
  5716.  
  5717.  
  5718.  
  5719.  
  5720.  
  5721.  
  5722.  
  5723.  
  5724.  
  5725.  
  5726.  
  5727.  
  5728.  
  5729.  
  5730.  
  5731.  
  5732.  
  5733.                Copyright c 1991 IEEE.  All rights reserved.
  5734.       This is an unapproved IEEE Standards Draft, subject to change.
  5735.  
  5736.  
  5737.  
  5738.  
  5739.  
  5740.  2.2 Definitions                                                        57
  5741.  
  5742.  
  5743.  
  5744.  
  5745.  
  5746.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  5747.  
  5748.  2.3  Built-in Utilities
  5749.  
  5750.  Any of the standard utilities may be implemented as _r_e_g_u_l_a_r _b_u_i_l_t-_i_n
  5751.  utilities within the command language interpreter.  This is usually done
  5752.  to increase the performance of frequently-used utilities or to achieve
  5753.  functionality that would be more difficult in a separate environment.
  5754.  The utilities named in Table 2-2 are frequently provided in built-in
  5755.  form.  All of the utilities named in the table have special properties in
  5756.  terms of command search order within the shell, as described in 3.9.1.1.
  5757.  
  5758.  
  5759.                  Table 2-2  -  Regular Built-in Utilities
  5760.  __________________________________________________________________________________________________________________________________________________
  5761.  
  5762.               cd        false     kill      true      wait
  5763.               command   getopts   read      umask
  5764.  __________________________________________________________________________________________________________________________________________________
  5765.  
  5766.  
  5767.  However, all of the standard utilities, including the regular built-ins
  5768.  in the table, but not the special built-ins described in 3.14, shall be
  5769.  implemented in a manner so that they can be accessed via the POSIX.1 {8}
  5770.  _e_x_e_c family of functions (if the underlying operating system provides the
  5771.  services of such a family to application programs) and can be invoked
  5772.  directly by those standard utilities that require it (env, find, nohup,
  5773.  xargs).
  5774.  
  5775.  Since versions shall be provided for all utilities except for those
  5776.  listed previously, an application running on a system that conforms to
  5777.  both POSIX.1 {8} and Section 7 of this standard can use the _e_x_e_c family
  5778.  of functions, in addition to the shell command interface in 7.1 [such as
  5779.  the _s_y_s_t_e_m() and _p_o_p_e_n() functions in the C binding] defined by this
  5780.  standard, to execute any of these utilities.
  5781.  
  5782.  BEGIN_RATIONALE
  5783.  
  5784.  
  5785.  2.3.1  Built-in Utilities Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  5786.         _P_1_0_0_3._2)
  5787.  
  5788.  In earlier drafts, the table of built-ins implied two things to a
  5789.  conforming application:  these may be built-ins and these need not be
  5790.  executable.  The second implication has now been removed and all
  5791.  utilities can be _e_x_e_c-ed.  There is no requirement that these be actually
  5792.  built into the shell itself, but many shells will want to do so because
  5793.  3.9.1.1 requires that they be found prior to the PATH search.  The shell
  5794.  could satisfy its requirements by keeping a list of the names and
  5795.  directly accessing the file-system versions regardless of PATH.
  5796.  Providing all of the required functionality for those such as cd or read
  5797.  
  5798.  
  5799.                Copyright c 1991 IEEE.  All rights reserved.
  5800.       This is an unapproved IEEE Standards Draft, subject to change.
  5801.  
  5802.  
  5803.  
  5804.  
  5805.  
  5806.  58                                 2 Terminology and General Requirements
  5807.  
  5808.  
  5809.  
  5810.  
  5811.  
  5812.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  5813.  
  5814.  would be more difficult.
  5815.  
  5816.  There were originally three justifications for allowing the omission of
  5817.  _e_x_e_c-able versions:
  5818.  
  5819.      (1)  This would require wasting space in the file system, at the
  5820.           expense of very small systems.  However, it has been pointed out
  5821.           that all nine in the table can be provided with nine links to a
  5822.           single-line shell script:
  5823.  
  5824.                 $0 "$@"
  5825.  
  5826.      (2)  There is no sense in requiring invocation of utilities like cd
  5827.           because they have no value outside the shell environment or
  5828.           cannot be useful in a child process.  However, counter-examples
  5829.           always seemed to be available for even the strangest cases:
  5830.  
  5831.                 find . -type d -exec cd {} ; -exec foo {} ;
  5832.                     (which invokes foo on accessible directories)
  5833.  
  5834.                 ps ... | sed ... | xargs kill
  5835.  
  5836.                 find . -exec true ; -a ...
  5837.                     (where true is used for temporary debugging)
  5838.  
  5839.      (3)  It is confusing to have something such as kill that can easily
  5840.           be in the file system in the base standard, but requires built-
  5841.           in status for the UPE (for the % job control job ID notation).
  5842.           It was decided that it was more appropriate to describe the
  5843.           required functionality (rather than the implementation) to the
  5844.           system implementors and let them decide how to satisfy it.
  5845.  
  5846.  On the other hand, there were objections raised during balloting that any
  5847.  distinction like this between utilities was not useful to applications
  5848.  and that the cost to correct it was small.  These arguments were
  5849.  ultimately the most effective.
  5850.  
  5851.  There were varying reasons for including utilities in the table of
  5852.  built-ins:
  5853.  
  5854.     cd, getopts, read, umask, wait
  5855.                 The functionality of these utilities is performed more
  5856.                 simply within the context of the current process.  An
  5857.                 example can be taken from the usage of the cd utility.
  5858.                 The purpose of the utility is to change the working
  5859.                 directory for subsequent operations.  The actions of cd
  5860.                 affect the process in which cd is executed and all
  5861.                 subsequent child processes of that process.  Based on the
  5862.                 POSIX.1 {8} process model, changes in the process
  5863.  
  5864.  
  5865.                Copyright c 1991 IEEE.  All rights reserved.
  5866.       This is an unapproved IEEE Standards Draft, subject to change.
  5867.  
  5868.  
  5869.  
  5870.  
  5871.  
  5872.  2.3 Built-in Utilities                                                 59
  5873.  
  5874.  
  5875.  
  5876.  
  5877.  
  5878.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  5879.  
  5880.                 environment of a child process have no effect on the
  5881.                 parent process.  If the cd utility were executed from a
  5882.                 child process, the working directory change would be
  5883.                 effective only in the child process.  Child processes
  5884.                 initiated subsequent to the child process that executed
  5885.                 the cd utility would not have a changed working directory
  5886.                 relative to the parent process.
  5887.  
  5888.     command     This utility was placed in the table primarily to protect
  5889.                 scripts that are concerned about their PATH being
  5890.                 manipulated.  The ``secure'' shell script example in
  5891.                 4.12.10 would not be possible if a PATH change retrieved
  5892.                 an alien version of command.  (An alternative would have
  5893.                 been to implement getconf as a built-in, but it was felt
  5894.                 that it carried too many changing configuration strings to
  5895.                 require in the shell.)
  5896.  
  5897.     kill        Since common extensions to kill (including the planned
  5898.                 User Portability Extension) provide optional job control
  5899.                 functionality using shell notation (%1, %2, etc.), some
  5900.                 implementations would find it extremely difficult to
  5901.                 provide this outside the shell.
  5902.  
  5903.     true, false
  5904.                 These are in the table as a courtesy to programmers who
  5905.                 wish to use the ``while true'' shell construct without
  5906.                 protecting true from PATH searches.  (It is acknowledged
  5907.                 that ``while :'' also works, but the idiom with true is
  5908.                 historically pervasive.)
  5909.  
  5910.  All utilities, including those in the table, are accessible via the
  5911.  functions in 7.1.1 or 7.1.2 [such as _s_y_s_t_e_m() or _p_o_p_e_n()].  There are
  5912.  situations where the return functionality of _s_y_s_t_e_m() and _p_o_p_e_n() is not
  5913.  desirable.  Applications that require the exit status of the invoked
  5914.  utility will not be able to use _s_y_s_t_e_m() or _p_o_p_e_n(), since the exit
  5915.  status returned is that of the command language interpreter rather than
  5916.  that of the invoked utility.  The alternative for such applications is
  5917.  the use of the _e_x_e_c family.  (The text concerning conformance to
  5918.  POSIX.1 {8} was included because where _e_x_e_c is not provided in the
  5919.  underlying system, there is no way to require that utilities be _e_x_e_c-
  5920.  able).
  5921.  
  5922.  END_RATIONALE
  5923.  
  5924.  
  5925.  
  5926.  
  5927.  
  5928.  
  5929.  
  5930.  
  5931.                Copyright c 1991 IEEE.  All rights reserved.
  5932.       This is an unapproved IEEE Standards Draft, subject to change.
  5933.  
  5934.  
  5935.  
  5936.  
  5937.  
  5938.  60                                 2 Terminology and General Requirements
  5939.  
  5940.  
  5941.  
  5942.  
  5943.  
  5944.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  5945.  
  5946.  2.4  Character Set
  5947.  
  5948.  Conforming implementations shall support one or more coded character
  5949.  sets.  Each supported coded character set shall include the _p_o_r_t_a_b_l_e
  5950.  _c_h_a_r_a_c_t_e_r _s_e_t specified in Table 2-3.  The table defines the characters
  5951.  in the portable character set and the corresponding symbolic character
  5952.  names used to identify each character in a character set description
  5953.  file.  The names are chosen to correspond closely with character names
  5954.  defined in other international standards.  The table contains more than
  5955.  one symbolic character name for characters whose traditional name differs
  5956.  from the chosen name.
  5957.  
  5958.  This standard places only the following requirements on the encoded
  5959.  values of the characters in the portable character set:
  5960.  
  5961.      (1)  If the encoded values associated with each member of the
  5962.           portable character set are not invariant across all locales
  5963.           supported by the implementation, the results achieved by an
  5964.           application accessing those locales are unspecified.
  5965.  
  5966.      (2)  The encoded values associated with the digits '0' to '9' shall
  5967.           be such that the value of each character after '0' shall be one
  5968.           greater than the value of the previous character.
  5969.  
  5970.      (3)  A null character, NUL, which has all bits set to zero, shall be
  5971.           in the set of characters.
  5972.  
  5973.  Conforming implementations shall support certain character and character
  5974.  set attributes, as defined in 2.5.1.
  5975.  
  5976.  
  5977.  2.4.1  Character Set Description File
  5978.  
  5979.  Implementations shall provide a character set description file for at
  5980.  least one coded character set supported by the implementation.  These
  5981.  files are referred to elsewhere in this standard as _c_h_a_r_m_a_p files.  It is
  5982.  implementation defined whether or not users or applications can provide
  5983.  additional character set description files.  If such a capability is
  5984.  supported, the system documentation shall describe the rules for the
  5985.  creation of such files.
  5986.  
  5987.  Each character set description file shall define characteristics for the
  5988.  coded character set and the encoding for the characters specified in
  5989.  Table 2-3, and may define encoding for additional characters supported by
  5990.  the implementation.  Other information about the coded character set may
  5991.  also be in the file.  Coded character set character values shall be
  5992.  defined using symbolic character names followed by character encoding
  5993.  values.
  5994.  
  5995.  
  5996.  
  5997.                Copyright c 1991 IEEE.  All rights reserved.
  5998.       This is an unapproved IEEE Standards Draft, subject to change.
  5999.  
  6000.  
  6001.  
  6002.  
  6003.  
  6004.  2.4 Character Set                                                      61
  6005.  
  6006.  
  6007.  
  6008.  
  6009.  
  6010.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  6011.  
  6012.  
  6013.               Table 2-3  -  Character Set and Symbolic Names
  6014.  __________________________________________________________________________________________________________________________________________________
  6015.       Symbolic                  Symbolic                  Symbolic
  6016.         Name        Glyph         Name         Glyph        Name         Glyph
  6017.  _____________________________________________________________________________
  6018.  
  6019.  <NUL>                   <colon>                 :  <circumflex>           ^
  6020.  <alert>                 <semicolon>             ;  <circumflex-accent>    ^
  6021.  <backspace>             <less-than-sign>        <  <underscore>           _
  6022.  <tab>                   <equals-sign>           =  <low-line>             _
  6023.  <newline>               <greater-than-sign>     >  <grave-accent>         `
  6024.  <vertical-tab>          <question-mark>         ?  <a>                    a
  6025.  <form-feed>             <commercial-at>         @  <b>                    b
  6026.  <carriage-return>       <A>                     A  <c>                    c
  6027.  <space>                 <B>                     B  <d>                    d
  6028.  <exclamation-mark>   !  <C>                     C  <e>                    e
  6029.  <quotation-mark>     "  <D>                     D  <f>                    f
  6030.  <number-sign>        #  <E>                     E  <g>                    g
  6031.  <dollar-sign>        $  <F>                     F  <h>                    h
  6032.  <percent-sign>       %  <G>                     G  <i>                    i
  6033.  <ampersand>          &  <H>                     H  <j>                    j
  6034.  <apostrophe>         '  <I>                     I  <k>                    k
  6035.  <left-parenthesis>   (  <J>                     J  <l>                    l
  6036.  <right-parenthesis>  )  <K>                     K  <m>                    m
  6037.  <asterisk>           *  <L>                     L  <n>                    n
  6038.  <plus-sign>          +  <M>                     M  <o>                    o
  6039.  <comma>              ,  <N>                     N  <p>                    p
  6040.  <hyphen>             -  <O>                     O  <q>                    q
  6041.  <hyphen-minus>       -  <P>                     P  <r>                    r
  6042.  <period>             .  <Q>                     Q  <s>                    s
  6043.  <full-stop>          .  <R>                     R  <t>                    t
  6044.  <slash>              /  <S>                     S  <u>                    u
  6045.  <solidus>            /  <T>                     T  <v>                    v
  6046.  <zero>               0  <U>                     U  <w>                    w
  6047.  <one>                1  <V>                     V  <x>                    x
  6048.  <two>                2  <W>                     W  <y>                    y
  6049.  <three>              3  <X>                     X  <z>                    z
  6050.  <four>               4  <Y>                     Y  <left-brace>           {
  6051.  <five>               5  <Z>                     Z  <left-curly-bracket>   {
  6052.  <six>                6  <left-square-bracket>   [  <vertical-line>        |
  6053.  <seven>              7  <backslash>             \  <right-brace>          }
  6054.  <eight>              8  <reverse-solidus>       \  <right-curly-bracket>  }
  6055.  <nine>               9  <right-square-bracket>  ]  <tilde>                ~
  6056.  __________________________________________________________________________________________________________________________________________________
  6057.  
  6058.  
  6059.  Each symbolic name specified in Table 2-3 shall be included in the file
  6060.  and shall be mapped to a unique encoding value (except for those symbolic  1
  6061.  names that are shown with identical glyphs).  If the control characters    1
  6062.  
  6063.                Copyright c 1991 IEEE.  All rights reserved.
  6064.       This is an unapproved IEEE Standards Draft, subject to change.
  6065.  
  6066.  
  6067.  
  6068.  
  6069.  
  6070.  62                                 2 Terminology and General Requirements
  6071.  
  6072.  
  6073.  
  6074.  
  6075.  
  6076.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  6077.  
  6078.  commonly associated with the symbolic names in Table 2-4 are supported by
  6079.  the implementation, the symbolic names and their corresponding encoding
  6080.  values shall be included in the file.  Some of the values associated with  1
  6081.  the symbolic names in this table also may be contained in Table 2-3.       1
  6082.  
  6083.  
  6084.                     Table 2-4  -  Control Character Set
  6085.  __________________________________________________________________________________________________________________________________________________
  6086.  
  6087.                <ACK>   <DC2>   <ENQ>   <FS>    <IS4>   <SOH>                1
  6088.                <BEL>   <DC3>   <EOT>   <GS>    <LF>    <STX>                1
  6089.                <BS>    <DC4>   <ESC>   <HT>    <NAK>   <SUB>                1
  6090.                <CAN>   <DEL>   <ETB>   <IS1>   <RS>    <SYN>                1
  6091.                <CR>    <DLE>   <ETX>   <IS2>   <SI>    <US>                 1
  6092.                <DC1>   <EM>    <FF>    <IS3>   <SO>    <VT>                 1
  6093.  __________________________________________________________________________________________________________________________________________________
  6094.  
  6095.  
  6096.  The following declarations can precede the character definitions.  Each
  6097.  shall consist of the symbol shown in the following list, starting in
  6098.  column 1, including the surrounding brackets, followed by one of more
  6099.  <blank>s, followed by the value to be assigned to the symbol.
  6100.  
  6101.     <code_set_name>     The name of the coded character set for which the
  6102.                         character set description file is defined.  The
  6103.                         characters of the name shall be taken from the set
  6104.                         of characters with visible glyphs defined in        1
  6105.                         Table 2-3.                                          1
  6106.  
  6107.     <mb_cur_max>        The maximum number of bytes in a multibyte
  6108.                         character.  This shall default to 1.
  6109.  
  6110.     <mb_cur_min>        An unsigned positive integer value that shall
  6111.                         define the minimum number of bytes in a character
  6112.                         for the encoded character set.  The value shall be
  6113.                         less than or equal to mb_cur_max.  If not
  6114.                         specified, the minimum number shall be equal to
  6115.                         mb_cur_max.
  6116.  
  6117.     <escape_char>       The escape character used to indicate that the
  6118.                         characters following shall be interpreted in a
  6119.                         special way, as defined later in this subclause.
  6120.                         This shall default to backslash (\), which is the
  6121.                         character glyph used in all the following text and
  6122.                         examples, unless otherwise noted.
  6123.  
  6124.     <comment_char>      The character, that when placed in column 1 of a
  6125.                         charmap line, is used to indicate that the line
  6126.                         shall be ignored.  The default character shall be
  6127.  
  6128.  
  6129.                Copyright c 1991 IEEE.  All rights reserved.
  6130.       This is an unapproved IEEE Standards Draft, subject to change.
  6131.  
  6132.  
  6133.  
  6134.  
  6135.  
  6136.  2.4 Character Set                                                      63
  6137.  
  6138.  
  6139.  
  6140.  
  6141.  
  6142.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  6143.  
  6144.                         the number-sign (#).
  6145.  
  6146.  The character set mapping definitions shall be all the lines immediately
  6147.  following an identifier line containing the string CHARMAP starting in
  6148.  column 1, and preceding a trailer line containing the string END CHARMAP
  6149.  starting in column 1.  Empty lines and lines containing a comment_char in
  6150.  the first column shall be ignored.  Each noncomment line of the character
  6151.  set mapping definition (i.e., between the CHARMAP and END CHARMAP lines
  6152.  of the file) shall be in either of two forms:
  6153.  
  6154.        "%s %s %s\n", <_s_y_m_b_o_l_i_c-_n_a_m_e>, <_e_n_c_o_d_i_n_g>, <_c_o_m_m_e_n_t_s>
  6155.  
  6156.  or
  6157.  
  6158.        "%s...%s %s %s\n", <_s_y_m_b_o_l_i_c-_n_a_m_e>, <_s_y_m_b_o_l_i_c-_n_a_m_e>, <_e_n_c_o_d_i_n_g>,
  6159.        <_c_o_m_m_e_n_t_s>
  6160.  
  6161.  In the first format, the line in the character set mapping definition
  6162.  defines a single symbolic name and a corresponding encoding.  A symbolic
  6163.  name is one or more characters from the set shown with visible glyphs in
  6164.  Table 2-3, enclosed between angle brackets.  A character following an
  6165.  escape character shall be interpreted as itself; for example, the
  6166.  sequence ``<\\\>>'' represents the symbolic name ``\>'' enclosed between
  6167.  angle brackets.
  6168.  
  6169.  In the second format, the line in the character set mapping definition
  6170.  defines a range of one or more symbolic names.  In this form, the
  6171.  symbolic names shall consist of zero or more nonnumeric characters from
  6172.  the set shown with visible glyphs in Table 2-3, followed by an integer
  6173.  formed by one or more decimal digits.  The characters preceding the
  6174.  integer shall be identical in the two symbolic names, and the integer
  6175.  formed by the digits in the second symbolic name shall be equal to or
  6176.  greater than the integer formed by the digits in the first name.  This
  6177.  shall be interpreted as a series of symbolic names formed from the common
  6178.  part and each of the integers between the first and the second integer,
  6179.  inclusive.  As an example, <j0101>...<j0104> is interpreted as the
  6180.  symbolic names <j0101>, <j0102>, <j0103>, and <j0104>, in that order.
  6181.  
  6182.  A character set mapping definition line shall exist for all symbolic
  6183.  names specified in Table 2-3, and shall define the coded character value
  6184.  that corresponds with the character glyph indicated in the table, or the
  6185.  coded character value that corresponds with the control character
  6186.  symbolic name.  If the control characters commonly associated with the
  6187.  symbolic names in Table 2-4 are supported by the implementation, the
  6188.  symbolic name and the corresponding encoding value shall be included in
  6189.  the file.  Additional unique symbolic names may be included.  A coded
  6190.  character value can be represented by more than one symbolic name.
  6191.  
  6192.  
  6193.  
  6194.  
  6195.                Copyright c 1991 IEEE.  All rights reserved.
  6196.       This is an unapproved IEEE Standards Draft, subject to change.
  6197.  
  6198.  
  6199.  
  6200.  
  6201.  
  6202.  64                                 2 Terminology and General Requirements
  6203.  
  6204.  
  6205.  
  6206.  
  6207.  
  6208.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  6209.  
  6210.  The encoding part shall be expressed as one (for single-byte character     1
  6211.  values) or more concatenated decimal, octal, or hexadecimal constants in   1
  6212.  the following formats:
  6213.  
  6214.        "%cd%d", <_e_s_c_a_p_e__c_h_a_r>, <_d_e_c_i_m_a_l _b_y_t_e _v_a_l_u_e>
  6215.  
  6216.        "%cx%x", <_e_s_c_a_p_e__c_h_a_r>, <_h_e_x_a_d_e_c_i_m_a_l _b_y_t_e _v_a_l_u_e>
  6217.  
  6218.        "%c%o", <_e_s_c_a_p_e__c_h_a_r>, <_o_c_t_a_l _b_y_t_e _v_a_l_u_e>
  6219.  
  6220.  Decimal constants shall be represented by two or three decimal digits,     2
  6221.  preceded by the escape character and the lowercase letter d; for example,  2
  6222.  \d05, \d97, or \d143.  Hexadecimal constants shall be represented by two   2
  6223.  hexadecimal digits, preceded by the escape character and the lowercase     2
  6224.  letter x; for example, \x05, \x61, or \x8f.  Octal constants shall be      2
  6225.  represented by two or three octal digits, preceded by the escape           2
  6226.  character; for example, \05, \141, or \217.  In a portable charmap file,   2
  6227.  each constant shall represent an 8-bit byte.  Implementations supporting   2
  6228.  other byte sizes may allow constants to represent values larger than       2
  6229.  those that can be represented in 8-bit bytes, and to allow additional      2
  6230.  digits in constants.  When constants are concatenated for multibyte        2
  6231.  character values, they shall be of the same type, and interpreted in byte  2
  6232.  order from left to right.  The manner in which constants are represented   2
  6233.  in the character is implementation defined.  Omitting bytes from a         2
  6234.  multibyte character definition produces undefined results.                 2
  6235.  
  6236.  In lines defining ranges of symbolic names, the encoded value is the
  6237.  value for the first symbolic name in the range (the symbolic name
  6238.  preceding the ellipsis).  Subsequent symbolic names defined by the range
  6239.  shall have encoding values in increasing order.  For example, the line
  6240.  
  6241.        <j0101>...<j0104>       \d129\d254
  6242.  
  6243.  shall be interpreted as
  6244.  
  6245.        <j0101>                 \d129\d254
  6246.        <j0102>                 \d129\d255
  6247.        <j0103>                 \d130\d0
  6248.        <j0104>                 \d130\d1
  6249.  
  6250.  The comment is optional.
  6251.  
  6252.  For the interpretation of the dollar-sign and the number-sign, see
  6253.  2.2.2.37 and 2.2.2.93.
  6254.  
  6255.  BEGIN_RATIONALE
  6256.  
  6257.  
  6258.  
  6259.  
  6260.  
  6261.                Copyright c 1991 IEEE.  All rights reserved.
  6262.       This is an unapproved IEEE Standards Draft, subject to change.
  6263.  
  6264.  
  6265.  
  6266.  
  6267.  
  6268.  2.4 Character Set                                                      65
  6269.  
  6270.  
  6271.  
  6272.  
  6273.  
  6274.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  6275.  
  6276.  2.4.2  Character Set Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  6277.  
  6278.  The portable character set is listed in full so there is no dependency on
  6279.  the ISO/IEC 646 {1} (or historically ASCII) encoded character set,
  6280.  although the set is identical to the characters defined in the
  6281.  International Reference Version of ISO/IEC 646 {1}.
  6282.  
  6283.  This standard poses no requirement that multiple character sets or code
  6284.  sets be supported, leaving this as a marketing differentiation for
  6285.  implementors.  Although multiple _c_h_a_r_m_a_p files are supported, it is the
  6286.  responsibility of the implementation to provide the file(s); if only one
  6287.  is provided, only that one will be accessible using the localedef
  6288.  utility's -f option (although in the case of just one file on the system,
  6289.  -f is not useful).
  6290.  
  6291.  The statement about invariance in code sets for the portable character
  6292.  set is worded as it is to avoid precluding implementations where multiple
  6293.  incompatible code sets are available (say, ASCII and EBCDIC).  The
  6294.  standard utilities cannot be expected to produce predictable results if
  6295.  they access portable characters that vary on the same implementation.
  6296.  
  6297.  The character set description file provides:
  6298.  
  6299.      - the capability to describe character set attributes (such as
  6300.        collation order or character classes) independent of character set
  6301.        encoding, and using only the characters in the portable character
  6302.        set.  This makes it possible to create ``generic'' localedef source
  6303.        files for all code sets that share the portable character set (such
  6304.        as the ISO 8859 family or IBM Extended ASCII).
  6305.  
  6306.      - standardized symbolic names for all characters in the portable
  6307.        character set, making it possible to refer to any such character
  6308.        regardless of encoding.
  6309.  
  6310.  Implementations are free to describe more than one code set in a
  6311.  character set description file, as long as only one encoding exists for
  6312.  the characters in Table 2-3.  For example, if an implementation defines
  6313.  ISO 8859-1 {5} as the primary code set, and ISO 8859-2 {6} as an
  6314.  alternate set, with each character from the alternate code set preceded
  6315.  in data by a shift code, a character set description file could contain a
  6316.  complete description of the primary set and those characters from the
  6317.  secondary that are not identical, the encoding of the latter including
  6318.  the shift code.
  6319.  
  6320.  Implementations are free to choose their own symbolic names, as long as
  6321.  the names identified by this standard are also defined; this provides
  6322.  support for already existing ``character names.''
  6323.  
  6324.  
  6325.  
  6326.  
  6327.                Copyright c 1991 IEEE.  All rights reserved.
  6328.       This is an unapproved IEEE Standards Draft, subject to change.
  6329.  
  6330.  
  6331.  
  6332.  
  6333.  
  6334.  66                                 2 Terminology and General Requirements
  6335.  
  6336.  
  6337.  
  6338.  
  6339.  
  6340.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  6341.  
  6342.  The names selected for the members of the portable character set follow
  6343.  the ISO 8859 {5} and the ISO/IEC 10646 {B11} standards.  However, several
  6344.  commonly used UNIX system names occur as synonyms in the list:
  6345.  
  6346.      - The traditional UNIX system names are used for control characters.
  6347.  
  6348.      - The word ``slash'' is in addition to ``solidus.''                    1
  6349.  
  6350.      - The word ``backslash'' is in addition to ``reverse-solidus.''        1
  6351.  
  6352.      - The word ``hyphen'' in addition to ``hyphen-minus.''
  6353.  
  6354.      - The word ``period'' in addition to ``full-stop.''
  6355.  
  6356.      - For the digits, the word ``digit'' is eliminated.
  6357.  
  6358.      - For letters, the words ``Latin Capital Letter'' and ``Latin Small
  6359.        Letter'' are eliminated.
  6360.  
  6361.      - The words ``left-brace'' and ``right-brace'' in addition to
  6362.        ``left-curly-bracket'' and ``right-curly-bracket.''
  6363.  
  6364.      - The names of the digits are preferred over the numbers, to avoid
  6365.        possible confusion between ``0'' and ``O'', and between ``1'' and
  6366.        ``l'' (one and the letter ell).
  6367.  
  6368.  The names for the control characters in Table 2-4 were taken from
  6369.  ISO 4873 {4}.
  6370.  
  6371.  The charmap file was introduced to resolve problems with the portability
  6372.  of, especially, localedef sources.  This standard assumes that the         1
  6373.  portable character set is constant across all locales, but does not        1
  6374.  prohibit implementations from supporting two incompatible codings, such    1
  6375.  as both ASCII and EBCDIC.  Such ``dual-support'' implementations should    1
  6376.  have all charmaps and localedef sources encoded using one portable         1
  6377.  character set, in effect ``cross-compiling'' for the other environment.    1
  6378.  Naturally, charmaps (and localedef sources) are only portable without      1
  6379.  transformation between systems using the same encodings for the portable   1
  6380.  character set.  They can, however, be transformed between two sets using   1
  6381.  only a subset of the actual characters (the portable set).  However, the   1
  6382.  particular coded character set used for an application or an               1
  6383.  implementation does not necessarily imply different characteristics or
  6384.  collation:  on the contrary, these attributes should in many cases be
  6385.  identical, regardless of code set.  The charmap provides the capability
  6386.  to define a common locale definition for multiple code sets (the same
  6387.  localedef source can be used for code sets with different extended
  6388.  characters; the ability in the charmap to define ``empty'' names allows
  6389.  for characters missing in certain code sets).
  6390.  
  6391.  
  6392.  
  6393.                Copyright c 1991 IEEE.  All rights reserved.
  6394.       This is an unapproved IEEE Standards Draft, subject to change.
  6395.  
  6396.  
  6397.  
  6398.  
  6399.  
  6400.  2.4 Character Set                                                      67
  6401.  
  6402.  
  6403.  
  6404.  
  6405.  
  6406.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  6407.  
  6408.  In addition, several implementors have expressed an interest in using the
  6409.  charmap concept to provide the information required for support of
  6410.  multiple character sets.  Examples of such information is encoding
  6411.  mechanism, string parsing rules, default font information, etc.  Such
  6412.  extensions are not described here.
  6413.  
  6414.  The <escape_char> declaration was added at the request of the
  6415.  international community to ease the creation of portable _c_h_a_r_m_a_p files on
  6416.  terminals not implementing the default backslash escape.  (This approach
  6417.  was adopted because this is a new interface invented by POSIX.2.
  6418.  Historical interfaces, such as the shell command language and awk, have
  6419.  not been modified to accommodate this type of terminal.)  The
  6420.  <comment_char> declaration was added at the request of the international
  6421.  community to eliminate the potential confusion between the number sign
  6422.  and the pound sign.
  6423.  
  6424.  The octal number notation with no leading zero required was selected to    1
  6425.  match those of awk and tr and is consistent with that used by localedef.   1
  6426.  To avoid confusion between an octal constant and the backreferences used   1
  6427.  in localedef source, the octal, hexadecimal, and decimal constants must    1
  6428.  contain at least two digits.  As single-digit constants are relatively     1
  6429.  rare, this should not impose any significant hardship.  Each of the        1
  6430.  constants includes ``two or more'' digits to account for systems in which  1
  6431.  the byte size is larger than eight bits.  For example, a Unicode system    1
  6432.  that has defined 16-bit bytes may require six octal, four hexadecimal,     1
  6433.  and five decimal digits.                                                   1
  6434.  
  6435.  The decimal notation is supported because some newer international
  6436.  standards define character values in decimal, rather than in the old
  6437.  column/row notation.
  6438.  
  6439.  The charmap identifies the coded character sets supported by an
  6440.  implementation.  At least one charmap must be provided, but no
  6441.  implementation is required to provide more than one.  Likewise,
  6442.  implementations can allow users to generate new charmaps (for instance
  6443.  for a new version of the 8859 family of coded character sets), but does
  6444.  not have to do so.  If users are allowed to create new charmaps, the
  6445.  system documentation must describe the rules that apply (for instance:
  6446.  ``only coded character sets that are supersets of ISO/IEC 646 {1} IRV, no
  6447.  multibyte characters, etc.'')
  6448.  
  6449.  END_RATIONALE
  6450.  
  6451.  
  6452.  
  6453.  
  6454.  
  6455.  
  6456.  
  6457.  
  6458.  
  6459.                Copyright c 1991 IEEE.  All rights reserved.
  6460.       This is an unapproved IEEE Standards Draft, subject to change.
  6461.  
  6462.  
  6463.  
  6464.  
  6465.  
  6466.  68                                 2 Terminology and General Requirements
  6467.  
  6468.  
  6469.  
  6470.  
  6471.  
  6472.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  6473.  
  6474.  2.5  Locale
  6475.  
  6476.  A _l_o_c_a_l_e is the definition of the subset of a user's environment that
  6477.  depends on language and cultural conventions.  It is made up from one or
  6478.  more categories.  Each category is identified by its name and controls
  6479.  specific aspects of the behavior of components of the system.  Category
  6480.  names correspond to the following environment variable names:
  6481.  
  6482.     LC_CTYPE         Character classification and case conversion.
  6483.  
  6484.     LC_COLLATE       Collation order.
  6485.  
  6486.     LC_TIME          Date and time formats.
  6487.  
  6488.     LC_NUMERIC       Numeric, nonmonetary formatting.
  6489.  
  6490.     LC_MONETARY      Monetary formatting.
  6491.  
  6492.     LC_MESSAGES      Formats of informative and diagnostic messages and
  6493.                      interactive responses.
  6494.  
  6495.  Conforming implementations shall provide the standard utilities and the    1
  6496.  interfaces in Annex B (if that option is supported) with the capability    1
  6497.  to modify their behavior based on the current locale, as defined in the    1
  6498.  Environment Variables subclause for each utility and interface.            1
  6499.  
  6500.  Locales other than those supplied by the implementation can be created
  6501.  via the localedef utility (see 4.35), provided that the
  6502.  {POSIX2_LOCALEDEF} symbol is defined on the system; see 2.13.2.
  6503.  Otherwise, only the implementation-provided locale(s) can be used.  The
  6504.  input to the utility is described in 2.5.2.  The value that shall be used
  6505.  to specify a locale when using environment variables shall be the string
  6506.  specified as the _n_a_m_e operand to the localedef utility when the locale
  6507.  was created.  The strings "C" and "POSIX" are reserved as identifiers for
  6508.  the POSIX Locale (see 2.5.1.)  When the value of a locale environment
  6509.  variable begins with a slash (/), it shall be interpreted as the pathname
  6510.  of the locale definition.  If the value of the locale value does not
  6511.  begin with a slash, the mechanism used to locate the locale is
  6512.  implementation defined.
  6513.  
  6514.  If different character sets are used by the locale categories, the
  6515.  results achieved by an application utilizing these categories is
  6516.  undefined.  Likewise, if different code sets are used for the data being
  6517.  processed by interfaces whose behavior is dependent on the current
  6518.  locale, or the code set is different from the code set assumed when the
  6519.  locale was created, the result is also undefined.
  6520.  
  6521.  BEGIN_RATIONALE
  6522.  
  6523.  
  6524.  
  6525.                Copyright c 1991 IEEE.  All rights reserved.
  6526.       This is an unapproved IEEE Standards Draft, subject to change.
  6527.  
  6528.  
  6529.  
  6530.  
  6531.  
  6532.  2.5 Locale                                                             69
  6533.  
  6534.  
  6535.  
  6536.  
  6537.  
  6538.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  6539.  
  6540.  2.5.0.1  Locale Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  6541.  
  6542.  The description of locales is based on work performed in the UniForum
  6543.  Technical Committee Subcommittee on Internationalization.  Wherever
  6544.  appropriate, keywords were taken from the C Standard {7} or the _X/_O_p_e_n
  6545.  _P_o_r_t_a_b_i_l_i_t_y _G_u_i_d_e {B31}.
  6546.  
  6547.  The value that shall be used to specify a locale when using environment
  6548.  variables is the name specified as the _n_a_m_e operand to the localedef
  6549.  utility when the locale was created.  This provides a verifiable method
  6550.  to create and invoke a locale.
  6551.  
  6552.  The ``object'' definitions need not be portable, as long as ``source''
  6553.  definitions are.  Strictly speaking, ``source'' definitions are portable
  6554.  only between implementations using the same character set(s).  Such
  6555.  ``source'' definitions can, if they use symbolic names only, easily be
  6556.  ported between systems using different code sets as long as the
  6557.  characters in the portable character set (Table 2-3) have common values
  6558.  between the code sets; this is frequently the case in historical
  6559.  implementations.  Of course, this requires that the symbolic names used
  6560.  for characters outside the portable character set are identical between
  6561.  character sets.  The definition of symbolic names for characters is
  6562.  outside the scope of this standard, but is certainly within the scope of
  6563.  other standards organizations.  When such names are standardized, future
  6564.  versions of POSIX.2 should require the use of these names.
  6565.  
  6566.  Applications can select the desired locale by invoking the _s_e_t_l_o_c_a_l_e()
  6567.  function (or equivalent) with the appropriate value.  If the function is
  6568.  invoked with an empty string, the value of the corresponding environment
  6569.  variable is used.  If the environment variable is unset or is set to the
  6570.  empty string, the implementation sets the appropriate environment as
  6571.  defined in 2.6.
  6572.  
  6573.  END_RATIONALE
  6574.  
  6575.  
  6576.  2.5.1  POSIX Locale
  6577.  
  6578.  Conforming implementations shall provide a _P_O_S_I_X _L_o_c_a_l_e.  The behavior of
  6579.  standard utilities in the POSIX Locale shall be as if the locale was
  6580.  defined via the localedef utility with input data from Table 2-5,
  6581.  Table 2-7, Table 2-9, Table 2-10, Table 2-8, and Table 2-11, all in
  6582.  2.5.2.
  6583.  
  6584.  The tables describe the characteristics and behavior of the POSIX Locale
  6585.  for data consisting entirely of characters from the portable character
  6586.  set in Table 2-3 and the control characters in Table 2-4.  For characters
  6587.  other than those in the two tables, the behavior is unspecified.
  6588.  
  6589.  
  6590.  
  6591.                Copyright c 1991 IEEE.  All rights reserved.
  6592.       This is an unapproved IEEE Standards Draft, subject to change.
  6593.  
  6594.  
  6595.  
  6596.  
  6597.  
  6598.  70                                 2 Terminology and General Requirements
  6599.  
  6600.  
  6601.  
  6602.  
  6603.  
  6604.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  6605.  
  6606.  The POSIX Locale can be specified by assigning the appropriate
  6607.  environment variables the values "C" or "POSIX".
  6608.  
  6609.  Table 2-5 shows the definition for the LC_CTYPE category.
  6610.  
  6611.  Table 2-7 shows the definition for the LC_COLLATE category.
  6612.  
  6613.  Table 2-8 shows the definition for the LC_MONETARY category.
  6614.  
  6615.  Table 2-9 shows the definition for the LC_NUMERIC category.
  6616.  
  6617.  Table 2-10 shows the definition for the LC_TIME category.
  6618.  
  6619.  Table 2-11 shows the definition for the LC_MESSAGES category.
  6620.  
  6621.  BEGIN_RATIONALE
  6622.  
  6623.  
  6624.  2.5.1.1  POSIX Locale Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  6625.           _P_1_0_0_3._2)
  6626.  
  6627.  The POSIX Locale is equal to the "C" locale, as specified in POSIX.1 {8}.
  6628.  To avoid being classified as a C-language function, the name has been
  6629.  changed to the _P_O_S_I_X _L_o_c_a_l_e; the environment variable value can be either
  6630.  "POSIX", or, for historical reasons, "C".
  6631.  
  6632.  The POSIX definitions mirror the historical UNIX system behavior.
  6633.  
  6634.  The use of symbolic names for characters in the tables does not imply
  6635.  that the POSIX Locale must be described using symbolic character names,
  6636.  but merely that it may be advantageous to do so.
  6637.  
  6638.  Implementations must define a locale as the ``default'' locale, to be
  6639.  invoked when no environment variables are set, or set to the empty
  6640.  string.  This default locale can be the POSIX Locale or any other,
  6641.  implementation-defined locale.  Some implementations may provide
  6642.  facilities for local installation administrators to set the default
  6643.  locale, customizing it for each location.  This standard does not require
  6644.  such a facility.                                                           1
  6645.  
  6646.  END_RATIONALE                                                              1
  6647.  
  6648.  
  6649.  2.5.2  Locale Definition
  6650.  
  6651.  The capability to specify additional locales to those provided by an
  6652.  implementation is optional (see 2.13.2).  If the option is not supported,
  6653.  only implementation-supplied locales are available.  Such locales shall
  6654.  be documented using the format specified in this clause.
  6655.  
  6656.  
  6657.                Copyright c 1991 IEEE.  All rights reserved.
  6658.       This is an unapproved IEEE Standards Draft, subject to change.
  6659.  
  6660.  
  6661.  
  6662.  
  6663.  
  6664.  2.5 Locale                                                             71
  6665.  
  6666.  
  6667.  
  6668.  
  6669.  
  6670.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  6671.  
  6672.  Locales can be described with the file format presented in this
  6673.  subclause.  The file format is that accepted by the localedef utility
  6674.  (see 4.35).  For the purposes of this subclause, the file is referred to
  6675.  as the _l_o_c_a_l_e _d_e_f_i_n_i_t_i_o_n _f_i_l_e, but no locales shall be affected by this
  6676.  file unless it is processed by localedef or some similar mechanism.  Any   1
  6677.  requirements in this subclause imposed upon ``the utility'' shall apply    1
  6678.  to localedef or to any other similar utility used to install locale        1
  6679.  information using the locale definition file format described here.        1
  6680.  
  6681.  The locale definition file shall contain one or more locale category
  6682.  source definitions, and shall not contain more than one definition for
  6683.  the same locale category.  If the file contains source definitions for
  6684.  more than one category, implementation-defined categories, if present,
  6685.  shall appear after the categories defined by this clause (2.5).  A
  6686.  category source definition shall contain either the definition of a
  6687.  category or a copy directive.  For a description of the copy directive,
  6688.  see 4.35.  In the event that some of the information for a locale
  6689.  category, as specified in this standard, is missing from the locale
  6690.  source definition, the behavior of that category, if it is referenced, is
  6691.  unspecified.
  6692.  
  6693.  A category source definition shall consist of a category header, a
  6694.  category body, and a category trailer.  A category header shall consist
  6695.  of the character string naming of the category, beginning with the
  6696.  characters LC_.  The category trailer shall consist of the string END,     1
  6697.  followed by one or more <blank>s and the string used in the corresponding  1
  6698.  category header.
  6699.  
  6700.  The category body shall consist of one or more lines of text.  Each line
  6701.  shall contain an identifier, optionally followed by one or more operands.
  6702.  Identifiers shall be either keywords, identifying a particular locale
  6703.  element, or collating elements.  In addition to the keywords defined in
  6704.  this standard, the source can contain implementation-defined keywords.
  6705.  Each keyword within a locale shall have a unique name (i.e., two
  6706.  categories cannot have a commonly-named keyword); no keyword shall start
  6707.  with the characters LC_.  Identifiers shall be separated from the
  6708.  operands by one or more <blank>s.
  6709.  
  6710.  Operands shall be characters, collating elements, or strings of
  6711.  characters.  Strings shall be enclosed in double-quotes.  Literal          1
  6712.  double-quotes within strings shall be preceded by the <_e_s_c_a_p_e _c_h_a_r_a_c_t_e_r>,  1
  6713.  described below.  When a keyword is followed by more than one operand,     1
  6714.  the operands shall be separated by semicolons; <blank>s shall be allowed
  6715.  before and/or after a semicolon.
  6716.  
  6717.  The first category header in the file can be preceded by a line modifying
  6718.  the comment character.  It shall have the following format, starting in
  6719.  column 1:
  6720.  
  6721.  
  6722.  
  6723.                Copyright c 1991 IEEE.  All rights reserved.
  6724.       This is an unapproved IEEE Standards Draft, subject to change.
  6725.  
  6726.  
  6727.  
  6728.  
  6729.  
  6730.  72                                 2 Terminology and General Requirements
  6731.  
  6732.  
  6733.  
  6734.  
  6735.  
  6736.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  6737.  
  6738.        "comment_char %c\n", <_c_o_m_m_e_n_t _c_h_a_r_a_c_t_e_r>
  6739.  
  6740.  The comment character shall default to the number-sign (#).  Blank lines
  6741.  and lines containing the <_c_o_m_m_e_n_t _c_h_a_r> in the first position shall be
  6742.  ignored.
  6743.  
  6744.  The first category header in the file can be preceded by a line modifying
  6745.  the escape character to be used in the file.  It shall have the following
  6746.  format, starting in column 1:
  6747.  
  6748.        "escape_char %c\n", <_e_s_c_a_p_e _c_h_a_r_a_c_t_e_r>
  6749.  
  6750.  The escape character shall default to backslash, which is the character
  6751.  used in all examples shown in this standard.
  6752.  
  6753.  A line can be continued by placing an escape character as the last
  6754.  character on the line; this continuation character shall be discarded      1
  6755.  from the input.  Although the implementation need not accept any one       1
  6756.  portion of a continued line with a length exceeding {LINE_MAX} bytes, it   1
  6757.  shall place no limits on the accumulated length of the continued line.     1
  6758.  Comment lines shall not be continued on a subsequent line using an         1
  6759.  escaped <newline>.
  6760.  
  6761.  Individual characters, characters in strings, and collating elements       2
  6762.  shall be represented using symbolic names, as defined below.  In           2
  6763.  addition, characters can be represented using the characters themselves,   2
  6764.  or as octal, hexadecimal, or decimal constants.  When nonsymbolic          2
  6765.  notation is used, the resultant locale definitions need not be portable    2
  6766.  between systems.  The left angle bracket (<) is a reserved symbol,         2
  6767.  denoting the start of a symbolic name; when used to represent itself it    2
  6768.  shall be preceded by the escape character.  The following rules apply to   2
  6769.  character representation:                                                  2
  6770.  
  6771.      (1)  A character can be represented via a symbolic name, enclosed      2
  6772.           within angle brackets (< and >).  The symbolic name, including    2
  6773.           the angle brackets, shall exactly match a symbolic name defined   2
  6774.           in the charmap file specified via the localedef -f option, and    2
  6775.           shall be replaced by a character value determined from the value  2
  6776.           associated with the symbolic name in the charmap file.  The use   2
  6777.           of a symbolic name not found in the _c_h_a_r_m_a_p file shall            1
  6778.           constitute an error, unless the category is LC_CTYPE or
  6779.           LC_COLLATE, in which case it shall constitute a warning
  6780.           condition (see localedef in 4.35 for a description of action
  6781.           resulting from errors and warnings).  The specification of a
  6782.           symbolic name in a collating-element or collating-symbol clause
  6783.           that duplicates a symbolic name in the charmap file (if present)
  6784.           is an error.  Use of the escape character or a right angle
  6785.           bracket within a symbolic name shall be invalid unless the
  6786.           character is preceded by the escape character.
  6787.  
  6788.  
  6789.                Copyright c 1991 IEEE.  All rights reserved.
  6790.       This is an unapproved IEEE Standards Draft, subject to change.
  6791.  
  6792.  
  6793.  
  6794.  
  6795.  
  6796.  2.5 Locale                                                             73
  6797.  
  6798.  
  6799.  
  6800.  
  6801.  
  6802.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  6803.  
  6804.           _E_x_a_m_p_l_e:  <c>;<c-cedilla>  "<M><a><y>"
  6805.  
  6806.      (2)  A character can be represented by the character itself, in which  2
  6807.           case the value of the character is implementation defined.        2
  6808.           Within a string, the double-quote character, the escape           2
  6809.           character, and the right angle bracket character shall be         2
  6810.           escaped (preceded by the escape character) to be interpreted as   2
  6811.           the character itself.  Outside strings, the characters            2
  6812.  
  6813.                 ,     ;     <     >     _e_s_c_a_p_e__c_h_a_r                         2
  6814.  
  6815.           shall be escaped to be interpreted as the character itself.       2
  6816.  
  6817.           _E_x_a_m_p_l_e:  c    B   "May"
  6818.  
  6819.      (3)  A character can be represented as an octal constant.  An octal    2
  6820.           constant shall be specified as the escape character followed by   1
  6821.           two or more octal digits.  Each constant shall represent a byte   1
  6822.           value.  Multibyte characters can be represented by concatenated
  6823.           constants.
  6824.  
  6825.           _E_x_a_m_p_l_e:  \143;\347;\143\150   "\115\141\171"
  6826.  
  6827.      (4)  A character can be represented as a hexadecimal constant.  A      2
  6828.           hexadecimal constant shall be specified as the escape character   2
  6829.           followed by an x followed by two or more hexadecimal digits.      1
  6830.           Each constant shall represent a byte value.  Multibyte
  6831.           characters can be represented by concatenated constants.
  6832.  
  6833.           _E_x_a_m_p_l_e:  \x63;\xe7;\x63\x68   "\x4d\x61\x79"
  6834.  
  6835.      (5)  A character can be represented as a decimal constant.  A decimal  2
  6836.           constant shall be specified as the escape character followed by   2
  6837.           a d followed by two or more decimal digits.  Each constant shall  1
  6838.           represent a byte value.  Multibyte values can be represented by
  6839.           concatenated constants.
  6840.  
  6841.           _E_x_a_m_p_l_e:  \d99;\d231;\d99\d104  "\d77\d97\d121"
  6842.  
  6843.  Implementations may accept single-digit octal, decimal, or hexadecimal     1
  6844.  constants following the escape character.  Only characters existing in     1
  6845.  the character set for which the locale definition is created shall be      1
  6846.  specified, whether using symbolic names, the characters themselves, or     1
  6847.  octal, decimal, or hexadecimal constants.  If a charmap file is present,   2
  6848.  only characters defined in the charmap can be specified using octal,       2
  6849.  decimal, or hexadecimal constants.  Symbolic names not present in the      2
  6850.  charmap file can be specified and shall be ignored, as specified under     2
  6851.  item (1) above.                                                            2
  6852.  
  6853.  
  6854.  
  6855.                Copyright c 1991 IEEE.  All rights reserved.
  6856.       This is an unapproved IEEE Standards Draft, subject to change.
  6857.  
  6858.  
  6859.  
  6860.  
  6861.  
  6862.  74                                 2 Terminology and General Requirements
  6863.  
  6864.  
  6865.  
  6866.  
  6867.  
  6868.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  6869.  
  6870.  BEGIN_RATIONALE                                                            2
  6871.  
  6872.  2.5.2.0.1  Locale Definition Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  6873.             _P_1_0_0_3._2)
  6874.  
  6875.  The decision to separate the file format from the localedef utility        1
  6876.  description was only partially editorial.  Implementations may provide     1
  6877.  other interfaces than localedef.  Requirements on ``the utility,'' mostly  1
  6878.  concerning error messages, are described in this way because they are      1
  6879.  meant to affect the other interfaces implementations may provide as well   1
  6880.  as localedef.  (This is similar to the philosophy used by POSIX.1 {8}      1
  6881.  where the descriptions of the tar and cpio file formats impose             1
  6882.  requirements on any utilities processing them.)                            1
  6883.  
  6884.  The text about {POSIX2_LOCALEDEF} does not mean that internationalization
  6885.  is optional; only that the functionality of the localedef utility is.
  6886.  Regular expressions, for instance, must still be able to recognize e.g.,
  6887.  character class expressions such as [[:alpha:]].
  6888.  
  6889.  A possible analogy is with an applications development environment:
  6890.  while all conforming implementations must be capable of executing
  6891.  applications, not all need to have the development environment installed.
  6892.  The assumption is that the capability to modify the behavior of utilities
  6893.  (and applications) via locale settings must be supported.  If the
  6894.  localedef utility is not present, then the only choice is to select an
  6895.  existing (presumably implementation-documented) locale.  An
  6896.  implementation could, for example, chose to support only the POSIX
  6897.  Locale, which would in effect limit the amount of changes from historical
  6898.  implementations quite drastically.  The localedef utility is still
  6899.  required, but would always terminate with an exit code indicating that no
  6900.  locale could be created.  Supported locales must be documented using the
  6901.  syntax defined in 2.5.  (This ensures that users can accurately determine
  6902.  what capabilities are provided.  If the implementation decides to provide
  6903.  additional capabilities to the ones in 2.5, that is already provided
  6904.  for.)
  6905.  
  6906.  If the option is present (i.e., locales can be created), then the
  6907.  localedef utility must be capable of creating locales based on the syntax
  6908.  and rules defined in 2.5.  This does not mean that the implementation
  6909.  cannot also provide alternate means for creating locales.
  6910.  
  6911.  The octal, decimal, and hexadecimal notations are the same employed by     1
  6912.  the charmap facility (see 2.4.1).  To avoid confusion between an octal     1
  6913.  constant and a backreference, the octal, hexadecimal, and decimal          1
  6914.  constants must contain at least two digits.  As single-digit constants     1
  6915.  are relatively rare, this should not impose any significant hardship.      1
  6916.  Each of the constants includes ``two or more'' digits to account for       1
  6917.  systems in which the byte size is larger than eight bits.  For example, a  1
  6918.  Unicode system that has defined 16-bit bytes may require six octal, four   1
  6919.  
  6920.  
  6921.                Copyright c 1991 IEEE.  All rights reserved.
  6922.       This is an unapproved IEEE Standards Draft, subject to change.
  6923.  
  6924.  
  6925.  
  6926.  
  6927.  
  6928.  2.5 Locale                                                             75
  6929.  
  6930.  
  6931.  
  6932.  
  6933.  
  6934.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  6935.  
  6936.  hexadecimal, and five decimal digits.                                      1
  6937.  
  6938.  This standard is intended as an international (ISO/IEC) standard as well   1
  6939.  as an IEEE standard, and must therefore follow the ISO/IEC guidelines.     1
  6940.  One such rule is that characters outside the invariant part of             1
  6941.  ISO/IEC 646 {1} should not be used in portable specifications.  The        1
  6942.  backslash character is not in the invariant part; the number-sign is, but  1
  6943.  with multiple representations:  as a number-sign and as a pound sign.  As  1
  6944.  far as general usage of these symbols, they are covered by the             1
  6945.  ``grandfather clause,'' but for newly defined interfaces, ISO has          1
  6946.  requested that POSIX provides alternate representations.  Consequently,    1
  6947.  while the default escape character remains the backslash, and the default  1
  6948.  comment character is the number-sign, implementations are required to      1
  6949.  recognize alternative representations, identified in the applicable        1
  6950.  source file via the escape_char and comment_char keywords.                 1
  6951.  
  6952.  END_RATIONALE                                                              1
  6953.  
  6954.  
  6955.  2.5.2.1  LC_CTYPE
  6956.  
  6957.       Table 2-5  -  LC_CTYPE Category Definition in the POSIX Locale
  6958.  __________________________________________________________________________________________________________________________________________________
  6959.  LC_CTYPE
  6960.  # The following is the POSIX Locale LC_CTYPE.
  6961.  # "alpha" is by default "upper" and "lower"
  6962.  # "alnum" is by definition "alpha" and "digit"
  6963.  # "print" is by default "alnum", "punct" and the <space> character
  6964.  # "graph" is by default "alnum" and "punct"
  6965.  
  6966.  #
  6967.  upper    <A>;<B>;<C>;<D>;<E>;<F>;<G>;<H>;<I>;<J>;<K>;<L>;<M>;\
  6968.           <N>;<O>;<P>;<Q>;<R>;<S>;<T>;<U>;<V>;<W>;<X>;<Y>;<Z>
  6969.  #
  6970.  lower    <a>;<b>;<c>;<d>;<e>;<f>;<g>;<h>;<i>;<j>;<k>;<l>;<m>;\
  6971.           <n>;<o>;<p>;<q>;<r>;<s>;<t>;<u>;<v>;<w>;<x>;<y>;<z>
  6972.  #
  6973.  digit    <zero>;<one>;<two>;<three>;<four>;<five>;<six>;<seven>;<eight>;<nine>
  6974.  #
  6975.  space    <tab>;<newline>;<vertical-tab>;<form-feed>;<carriage-return>;<space>
  6976.  #
  6977.  cntrl    <alert>;<backspace>;<tab>;<newline>;<vertical-tab>;\
  6978.           <form-feed>;<carriage-return>;\
  6979.           <NUL>;<SOH>;<STX>;<ETX>;<EOT>;<ENQ>;<ACK>;<SO>;\
  6980.           <SI>;<DLE>;<DC1>;<DC2>;<DC3>;<DC4>;<NAK>;<SYN>;\
  6981.           <ETB>;<CAN>;<EM>;<SUB>;<ESC>;<IS4>;<IS3>;<IS2>;\
  6982.           <IS1>;<DEL>
  6983.  #
  6984.  punct    <exclamation-mark>;<quotation-mark>;<number-sign>;\
  6985.           <dollar-sign>;<percent-sign>;<ampersand>;<apostrophe>;\
  6986.  
  6987.                Copyright c 1991 IEEE.  All rights reserved.
  6988.       This is an unapproved IEEE Standards Draft, subject to change.
  6989.  
  6990.  
  6991.  
  6992.  
  6993.  
  6994.  76                                 2 Terminology and General Requirements
  6995.  
  6996.  
  6997.  
  6998.  
  6999.  
  7000.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  7001.  
  7002.           <left-parenthesis>;<right-parenthesis>;<asterisk>;\
  7003.           <plus-sign>;<comma>;<hyphen>;<period>;<slash>;\
  7004.           <colon>;<semicolon>;<less-than-sign>;<equals-sign>;\
  7005.           <greater-than-sign>;<question-mark>;<commercial-at>
  7006.           <left-square-bracket>;<backslash>;<right-square-bracket>;\
  7007.           <circumflex>;<underline>;<grave-accent>;\
  7008.           <left-curly-bracket>;<vertical-line>;<right-curly-bracket>;<tilde>
  7009.  #
  7010.  xdigit   <zero>;<one>;<two>;<three>;<four>;<five>;<six>;<seven>;<eight>;\
  7011.           <nine>;<A>;<B>;<C>;<D>;<E>;<F>;<a>;<b>;<c>;<d>;<e>;<f>
  7012.  #
  7013.  blank    <space>;<tab>
  7014.  #
  7015.  toupper  (<a>,<A>);(<b>,<B>);(<c>,<C>);(<d>,<D>);(<e>,<E>);\
  7016.           (<f>,<F>);(<g>,<G>);(<h>,<H>);(<i>,<I>);(<j>,<J>);\
  7017.           (<k>,<K>);(<l>,<L>);(<m>,<M>);(<n>,<N>);(<o>,<O>);\
  7018.           (<p>,<P>);(<q>,<Q>);(<r>,<R>);(<s>,<S>);(<t>,<T>);\
  7019.           (<u>,<U>);(<v>,<V>);(<w>,<W>);(<x>,<X>);(<y>,<Y>);(<z>,<Z>)
  7020.  #
  7021.  tolower  (<A>,<a>);(<B>,<b>);(<C>,<c>);(<D>,<d>);(<E>,<e>);\
  7022.           (<F>,<f>);(<G>,<g>);(<H>,<h>);(<I>,<i>);(<J>,<j>);\
  7023.           (<K>,<k>);(<L>,<l>);(<M>,<m>);(<N>,<n>);(<O>,<o>);\
  7024.           (<P>,<p>);(<Q>,<q>);(<R>,<r>);(<S>,<s>);(<T>,<t>);\
  7025.           (<U>,<u>);(<V>,<v>);(<W>,<w>);(<X>,<x>);(<Y>,<y>);(<Z>,<z>)
  7026.  END LC_CTYPE
  7027.  __________________________________________________________________________________________________________________________________________________
  7028.  
  7029.  The LC_CTYPE category shall define character classification, case
  7030.  conversion, and other character attributes.  In addition, a series of
  7031.  characters can be represented by three adjacent periods representing an    1
  7032.  ellipsis symbol (``...'').  The ellipsis specification shall be            1
  7033.  interpreted as meaning that all values between the values preceding and    1
  7034.  following it represent valid characters.  The ellipsis specification only  1
  7035.  shall be valid within a single encoded character set.  An ellipsis shall
  7036.  be interpreted as including in the list all characters with an encoded
  7037.  value higher than the encoded value of the character preceding the
  7038.  ellipsis and lower than the encoded value of the character following the
  7039.  ellipsis.
  7040.  
  7041.  _E_x_a_m_p_l_e:  \x30;...;\x39; includes in the character class all characters
  7042.  with encoded values between the endpoints.
  7043.  
  7044.  The following keywords shall be recognized.  In the descriptions, the
  7045.  term ``automatically included'' means that it shall not be an error to
  7046.  either include the referenced characters or to omit them; the
  7047.  implementation shall provide them if missing and accept them silently if
  7048.  present.
  7049.  
  7050.  
  7051.  
  7052.  
  7053.                Copyright c 1991 IEEE.  All rights reserved.
  7054.       This is an unapproved IEEE Standards Draft, subject to change.
  7055.  
  7056.  
  7057.  
  7058.  
  7059.  
  7060.  2.5 Locale                                                             77
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  7067.  
  7068.     copy         Specify the name of an existing locale to be used as the
  7069.                  source for the definition of this category.  If this
  7070.                  keyword is specified, no other keyword shall be
  7071.                  specified.
  7072.  
  7073.     upper        Define characters to be classified as uppercase letters.
  7074.                  No character specified for the keywords cntrl, digit,
  7075.                  punct, or space shall be specified.  If this keyword is    2
  7076.                  not specified, the uppercase letters A through Z, as       2
  7077.                  defined in Table 2-3 (see 2.4.1), shall automatically      2
  7078.                  belong to this class, with implementation-defined          2
  7079.                  character values.                                          2
  7080.  
  7081.     lower        Define characters to be classified as lowercase letters.
  7082.                  No character specified for the keywords cntrl, digit,
  7083.                  punct, or space shall be specified.  If this keyword is    2
  7084.                  not specified, the lowercase letters a through z, as       2
  7085.                  defined in Table 2-3 (see 2.4.1), shall automatically      2
  7086.                  belong to this class, with implementation-defined          2
  7087.                  character values.                                          2
  7088.  
  7089.     alpha        Define characters to be classified as letters.  No
  7090.                  character specified for the keywords cntrl, digit, punct,
  7091.                  or space shall be specified.  In addition, characters
  7092.                  classified as either upper or lower shall automatically
  7093.                  belong to this class.
  7094.  
  7095.     digit        Define the characters to be classified as numeric digits.  2
  7096.                  Only the digits 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9 shall be  2
  7097.                  specified, and in ascending sequence by numerical value.   2
  7098.                  If this keyword is not specified, the digits 0 through 9,  2
  7099.                  as defined in Table 2-3 (see 2.4.1), shall automatically   2
  7100.                  belong to this class, with implementation-defined          2
  7101.                  character values.                                          2
  7102.  
  7103.     space        Define characters to be classified as white-space
  7104.                  characters.  No character specified for the keywords
  7105.                  upper, lower, alpha, digit, graph, or xdigit shall be      1
  7106.                  specified.  If this keyword is not specified, the          2
  7107.                  characters <space>, <form-feed>, <newline>, <carriage-     2
  7108.                  return>, <tab>, and <vertical-tab>, as defined in          2
  7109.                  Table 2-3 (see 2.4.1), shall automatically belong to this  2
  7110.                  class, with implementation-defined character values.  Any  2
  7111.                  characters included in the class blank shall be            1
  7112.                  automatically included.                                    1
  7113.  
  7114.     cntrl        Define characters to be classified as control characters.
  7115.                  No character specified for the keywords upper, lower,
  7116.                  alpha, digit, punct, graph, print, or xdigit shall be      1
  7117.  
  7118.  
  7119.                Copyright c 1991 IEEE.  All rights reserved.
  7120.       This is an unapproved IEEE Standards Draft, subject to change.
  7121.  
  7122.  
  7123.  
  7124.  
  7125.  
  7126.  78                                 2 Terminology and General Requirements
  7127.  
  7128.  
  7129.  
  7130.  
  7131.  
  7132.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  7133.  
  7134.                  specified.                                                 1
  7135.  
  7136.     punct        Define characters to be classified as punctuation
  7137.                  characters.  No character specified for the keywords
  7138.                  upper, lower, alpha, digit, cntrl, xdigit, or as the
  7139.                  <space> character shall be specified.
  7140.  
  7141.     graph        Define characters to be classified as printable
  7142.                  characters, not including the <space> character.  If this
  7143.                  keyword is not specified, characters specified for the
  7144.                  keywords upper, lower, alpha, digit, xdigit, and punct
  7145.                  shall belong to this character class.  No character
  7146.                  specified for the keyword cntrl shall be specified.
  7147.  
  7148.     print        Define characters to be classified as printable
  7149.                  characters, including the <space> character.  If this
  7150.                  keyword is not provided, characters specified for the
  7151.                  keywords upper, lower, alpha, digit, xdigit, punct, and
  7152.                  the <space> character shall belong to this character
  7153.                  class.  No character specified for the keyword cntrl
  7154.                  shall be specified.
  7155.  
  7156.     xdigit       Define the characters to be classified as hexadecimal
  7157.                  digits.  Only the characters defined for the class digit   2
  7158.                  shall be specified, in ascending sequence by numerical     2
  7159.                  value, followed by one or more sets of six characters      2
  7160.                  representing the hexadecimal digits 10 through 15, with    2
  7161.                  each set in ascending order (for example A, B, C, D, E,    2
  7162.                  F, a, b, c, d, e, f).  If this keyword is not specified,   2
  7163.                  the digits 0 through 9, the uppercase letters A through    2
  7164.                  F, and the lowercase letters a through f, as defined in    2
  7165.                  Table 2-3 (see 2.4.1), shall automatically belong to this  2
  7166.                  class, with implementation-defined character values.       2
  7167.  
  7168.     blank        Define characters to be classified as <blank> characters.
  7169.                  If this keyword is unspecified, the characters <space>
  7170.                  and <tab> shall belong to this character class.
  7171.  
  7172.     toupper      Define the mapping of lowercase letters to uppercase
  7173.                  letters.  The operand shall consist of character pairs,
  7174.                  separated by semicolons.  The characters in each
  7175.                  character pair shall be separated by a comma and the pair
  7176.                  enclosed by parentheses.  The first character in each
  7177.                  pair shall be the lowercase letter, the second the
  7178.                  corresponding uppercase letter.  Only characters
  7179.                  specified for the keywords lower and upper shall be
  7180.                  specified.  If this keyword is not specified, the          2
  7181.                  lowercase letters a through z, and their corresponding     2
  7182.                  uppercase letters A through Z, as defined in Table 2-3     2
  7183.  
  7184.  
  7185.                Copyright c 1991 IEEE.  All rights reserved.
  7186.       This is an unapproved IEEE Standards Draft, subject to change.
  7187.  
  7188.  
  7189.  
  7190.  
  7191.  
  7192.  2.5 Locale                                                             79
  7193.  
  7194.  
  7195.  
  7196.  
  7197.  
  7198.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  7199.  
  7200.                  (see 2.4.1), shall automatically be included, with         2
  7201.                  implementation-defined character values.                   2
  7202.  
  7203.     tolower      Define the mapping of uppercase letters to lowercase
  7204.                  letters.  The operand shall consist of character pairs,
  7205.                  separated by semicolons.  The characters in each
  7206.                  character pair are separated by a comma and the pair
  7207.                  enclosed by parentheses.  The first character in each
  7208.                  pair shall be the uppercase letter, the second the
  7209.                  corresponding lowercase letter.  Only characters
  7210.                  specified for the keywords lower and upper shall be
  7211.                  specified.
  7212.  
  7213.                  The tolower keyword is optional.  If specified, the
  7214.                  uppercase letters A through Z, as defined in Table 2-3,
  7215.                  and their corresponding lowercase letter, shall be
  7216.                  specified.  If this keyword is not specified, the mapping
  7217.                  shall be the reverse mapping of the one specified for
  7218.                  toupper.
  7219.  
  7220.  Table 2-6 shows the allowed character class combinations.
  7221.  
  7222.  
  7223.  
  7224.  
  7225.  
  7226.  
  7227.  
  7228.  
  7229.  
  7230.  
  7231.  
  7232.  
  7233.  
  7234.  
  7235.  
  7236.  
  7237.  
  7238.  
  7239.  
  7240.  
  7241.  
  7242.  
  7243.  
  7244.  
  7245.  
  7246.  
  7247.  
  7248.  
  7249.  
  7250.  
  7251.                Copyright c 1991 IEEE.  All rights reserved.
  7252.       This is an unapproved IEEE Standards Draft, subject to change.
  7253.  
  7254.  
  7255.  
  7256.  
  7257.  
  7258.  80                                 2 Terminology and General Requirements
  7259.  
  7260.  
  7261.  
  7262.  
  7263.  
  7264.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  7265.  
  7266.  
  7267.              Table 2-6  -  Valid Character Class Combinations
  7268.  __________________________________________________________________________________________________________________________________________________
  7269.  _____________________________________________________________________________
  7270.  |  In   |_________________________C_a_n__A_l_s_o__B_e_l_o_n_g__T_o__________________________|
  7271.  |Class  | upper lower alpha digit space cntrl punct graph print xdigit blank |
  7272.  _|________|____________________________________________________________________|
  7273.  |upper  |   -     -     M     X     X     X     X     D     D     -      X   |
  7274.  |lower  |   -     -     M     X     X     X     X     D     D     -      X   |
  7275.  |alpha  |   -     -     -     X     X     X     X     D     D     -      X   |
  7276.  |digit  |   X     X     X     -     X     X     X     D     D     -      X   |
  7277.  |space  |   X     X     X     X     -     -     *     *     *     X      -  2|
  7278.  |cntrl  |   X     X     X     X     -     -     X     X     X     X      -  2|
  7279.  |punct  |   X     X     X     X     -     X     -     D     D     X      -   |
  7280.  |graph  |   -     -     -     -     -     X     -     -     -     -      -   |
  7281.  |print  |   -     -     -     -     -     X     -     -     -     -      -   |
  7282.  |xdigit |   -     -     -     -     X     X     X     D     D     -      X   |
  7283.  _||b_l_a_n_k____||___X______X______X______X______M______-______*______*______*______X_______-___2_||
  7284.  
  7285.  NOTES:
  7286.  
  7287.      (1)  Explanation of codes:
  7288.  
  7289.              M     Always
  7290.  
  7291.              D     Default; belongs to class if not specified
  7292.  
  7293.              -     Permitted
  7294.  
  7295.              X     Mutually exclusive
  7296.  
  7297.              *     See note (2)
  7298.  
  7299.      (2)  The <space> character, which is part of the space and blank
  7300.           classes, cannot belong to punct or graph, but automatically
  7301.           shall belong to the print class.  Other space or blank
  7302.           characters can be classified as punct, graph, and/or print.
  7303.  
  7304.  __________________________________________________________________________________________________________________________________________________
  7305.  
  7306.  
  7307.  BEGIN_RATIONALE
  7308.  
  7309.  2.5.2.1.1  LC_CTYPE Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  7310.  
  7311.  The LC_CTYPE category primarily is used to define the encoding-
  7312.  independent aspects of a character set, such as character classification.
  7313.  In addition, certain encoding-dependent characteristics are also defined
  7314.  for an application via the LC_CTYPE category.  POSIX.2 does not mandate
  7315.  
  7316.  
  7317.                Copyright c 1991 IEEE.  All rights reserved.
  7318.       This is an unapproved IEEE Standards Draft, subject to change.
  7319.  
  7320.  
  7321.  
  7322.  
  7323.  
  7324.  2.5 Locale                                                             81
  7325.  
  7326.  
  7327.  
  7328.  
  7329.  
  7330.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  7331.  
  7332.  that the encoding used in the locale is the same as the one used by the
  7333.  application, because an implementation may decide that it is advantageous
  7334.  to define locales in a system-wide encoding rather than having multiple,
  7335.  logically identical locales in different encodings, and to convert from
  7336.  the application encoding to the system-wide encoding on usage.  Other
  7337.  implementations could require encoding-dependent locales.
  7338.  
  7339.  In either case, the LC_CTYPE attributes that are directly dependent on
  7340.  the encoding, such as mb_cur_max and the display width of characters, are
  7341.  not user-specifiable in a locale source, and are consequently not defined
  7342.  as keywords.
  7343.  
  7344.  As the LC_CTYPE character classes are based on the C Standard {7}
  7345.  character-class definition, the category does not support multicharacter
  7346.  elements.  For instance, the German character <sharp-s> is traditionally
  7347.  classified as a lowercase letter.  There is no corresponding uppercase
  7348.  letter; in proper capitalization of German text the <sharp-s> will be
  7349.  replaced by SS; i.e., by two characters.  This kind of conversion is
  7350.  outside the scope of the toupper and tolower keywords.
  7351.  
  7352.  Where POSIX.2 specifies that only certain characters can be specified, as  1
  7353.  for the keywords digit and xdigit, the specified characters must be from   1
  7354.  the portable character set, as shown.  As an example, only the Arabic      1
  7355.  digits 0 through 9 are acceptable as digits.                               1
  7356.  
  7357.  The character classes digit, xdigit, lower, upper, and space have a set    2
  7358.  of automatically included characters.  These only need to be specified if  2
  7359.  the character values (i.e., encoding) differs from the implementation      2
  7360.  default values.                                                            2
  7361.  
  7362.  The definition of character class digit requires that only ten             2
  7363.  characters--the ones defining digits--can be specified; alternate digits   2
  7364.  (e.g., Hindi or Kanji) cannot be specified here.  However, the encoding    2
  7365.  may vary if an implementation supports more than one encoding.             2
  7366.  
  7367.  The definition of character class xdigit requires that the characters      2
  7368.  included in character class digit are included here also, and allows for   2
  7369.  different symbols for the hexadecimal digits 10 through 15.                2
  7370.  
  7371.  END_RATIONALE                                                              2
  7372.  
  7373.  
  7374.  2.5.2.2  LC_COLLATE
  7375.  
  7376.  A collation sequence definition shall define the relative order between
  7377.  collating elements (characters and multicharacter collating elements) in
  7378.  the locale.  This order is expressed in terms of collation values; i.e.,
  7379.  by assigning each element one or more collation values (also known as
  7380.  collation weights).  This does not imply that implementations shall
  7381.  assign such values, but that ordering of strings using the resultant
  7382.  
  7383.                Copyright c 1991 IEEE.  All rights reserved.
  7384.       This is an unapproved IEEE Standards Draft, subject to change.
  7385.  
  7386.  
  7387.  
  7388.  
  7389.  
  7390.  82                                 2 Terminology and General Requirements
  7391.  
  7392.  
  7393.  
  7394.  
  7395.  
  7396.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  7397.  
  7398.  collation definition in the locale shall behave as if such assignment is
  7399.  done and used in the collation process.  The collation sequence
  7400.  definition shall be used by regular expressions, pattern matching, and
  7401.  sorting.  The following capabilities are provided:
  7402.  
  7403.      (1)  Multicharacter collating elements.  Specification of
  7404.           multicharacter collating elements (i.e., sequences of two or
  7405.           more characters to be collated as an entity).
  7406.  
  7407.      (2)  User-defined ordering of collating elements.  Each collating
  7408.           element shall be assigned a collation value defining its order
  7409.           in the character (or basic) collation sequence.  This ordering
  7410.           is used by regular expressions and pattern matching and, unless
  7411.           collation weights are explicitly specified, also as the
  7412.           collation weight to be used in sorting.
  7413.  
  7414.      (3)  Multiple weights and equivalence classes.  Collating elements
  7415.           can be assigned one or more (up to the limit {COLL_WEIGHTS_MAX})
  7416.           collating weights for use in sorting.  The first weight is
  7417.           hereafter referred to as the primary weight.
  7418.  
  7419.      (4)  One-to-Many mapping.  A single character is mapped into a string
  7420.           of collating elements.
  7421.  
  7422.      (5)  Many-to-Many substitution.  A string of one or more characters
  7423.           is substituted by another string (or an empty string, i.e., the
  7424.           character or characters shall be ignored for collation
  7425.           purposes).
  7426.  
  7427.      (6)  Equivalence class definition.  Two or more collating elements
  7428.           have the same collation value (primary weight).
  7429.  
  7430.      (7)  Ordering by weights.  When two strings are compared to determine  2
  7431.           their relative order, the two strings are first broken up into a  2
  7432.           series of collating elements, and each successive pair of         2
  7433.           elements are compared according to the relative primary weights   2
  7434.           for the elements.  If equal, and more than one weight has been    2
  7435.           assigned, then the pairs of collating elements are recompared     2
  7436.           according to the relative subsequent weights, until either a      2
  7437.           pair of collating elements compare unequal or the weights are     2
  7438.           exhausted.                                                        2
  7439.  
  7440.  The following keywords shall be recognized in a collation sequence
  7441.  definition.  They are described in detail in the following subclauses.
  7442.  
  7443.     copy                  Specify the name of an existing locale to be
  7444.                           used as the source for the definition of this
  7445.                           category.  If this keyword is specified, no
  7446.                           other keyword shall be specified.
  7447.  
  7448.  
  7449.                Copyright c 1991 IEEE.  All rights reserved.
  7450.       This is an unapproved IEEE Standards Draft, subject to change.
  7451.  
  7452.  
  7453.  
  7454.  
  7455.  
  7456.  2.5 Locale                                                             83
  7457.  
  7458.  
  7459.  
  7460.  
  7461.  
  7462.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  7463.  
  7464.     collating-element     Define a collating-element symbol representing a  1
  7465.                           multicharacter collating element.  This keyword   1
  7466.                           is optional.
  7467.  
  7468.     collating-symbol      Define a collating symbol for use in collation    1
  7469.                           order statements.  This keyword is optional.      1
  7470.  
  7471.                                                                             2
  7472.  
  7473.     order_start           Define collation rules.  This statement is
  7474.                           followed by one or more collation order
  7475.                           statements, assigning character collation values
  7476.                           and collation weights to collating elements.
  7477.  
  7478.     order_end             Specify the end of the collation-order            1
  7479.                           statements.                                       1
  7480.  
  7481.      Table 2-7  -  LC_COLLATE Category Definition in the POSIX Locale
  7482.  __________________________________________________________________________________________________________________________________________________
  7483.  LC_COLLATE
  7484.  # This is the POSIX Locale definition for the LC_COLLATE category.
  7485.  # The order is the same as in the ASCII code set.
  7486.  order_start forward
  7487.  <NUL>
  7488.  <SOH>
  7489.  <STX>
  7490.  <ETX>
  7491.  <EOT>
  7492.  <ENQ>
  7493.  <ACK>
  7494.  <alert>
  7495.  <backspace>
  7496.  <tab>
  7497.  <newline>
  7498.  <vertical-tab>
  7499.  <form-feed>
  7500.  <carriage-return>
  7501.  <SO>
  7502.  <SI>
  7503.  <DLE>
  7504.  <DC1>
  7505.  <DC2>
  7506.  <DC3>
  7507.  <DC4>
  7508.  <NAK>
  7509.  <SYN>
  7510.  <ETB>
  7511.  <CAN>
  7512.  <EM>
  7513.  
  7514.  
  7515.                Copyright c 1991 IEEE.  All rights reserved.
  7516.       This is an unapproved IEEE Standards Draft, subject to change.
  7517.  
  7518.  
  7519.  
  7520.  
  7521.  
  7522.  84                                 2 Terminology and General Requirements
  7523.  
  7524.  
  7525.  
  7526.  
  7527.  
  7528.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  7529.  
  7530.  <SUB>
  7531.  <ESC>
  7532.  <IS4>
  7533.  <IS3>
  7534.  <IS2>
  7535.  <IS1>
  7536.  <space>
  7537.  <exclamation-mark>
  7538.  <quotation-mark>
  7539.  <number-sign>
  7540.  <dollar-sign>
  7541.  <percent-sign>
  7542.  <ampersand>
  7543.  <apostrophe>
  7544.  <left-parenthesis>
  7545.  <right-parenthesis>
  7546.  <asterisk>
  7547.  _________________________________________________________________________
  7548.  
  7549.  Table 2-7 - LC_COLLATE Category Definition in the POSIX Locale (_c_o_n_t_i_n_u_e_d)
  7550.  _________________________________________________________________________
  7551.  <plus-sign>
  7552.  <comma>
  7553.  <hyphen>
  7554.  <period>
  7555.  <slash>
  7556.  <zero>
  7557.  <one>
  7558.  <two>
  7559.  <three>
  7560.  <four>
  7561.  <five>
  7562.  <six>
  7563.  <seven>
  7564.  <eight>
  7565.  <nine>
  7566.  <colon>
  7567.  <semicolon>
  7568.  <less-than-sign>
  7569.  <equals-sign>
  7570.  <greater-than-sign>
  7571.  <question-mark>
  7572.  <commercial-at>
  7573.  <A>
  7574.  <B>
  7575.  <C>
  7576.  <D>
  7577.  <E>
  7578.  <F>
  7579.  
  7580.  
  7581.                Copyright c 1991 IEEE.  All rights reserved.
  7582.       This is an unapproved IEEE Standards Draft, subject to change.
  7583.  
  7584.  
  7585.  
  7586.  
  7587.  
  7588.  2.5 Locale                                                             85
  7589.  
  7590.  
  7591.  
  7592.  
  7593.  
  7594.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  7595.  
  7596.  <G>
  7597.  <H>
  7598.  <I>
  7599.  <J>
  7600.  <K>
  7601.  <L>
  7602.  <M>
  7603.  <N>
  7604.  <O>
  7605.  <P>
  7606.  <Q>
  7607.  <R>
  7608.  <S>
  7609.  <T>
  7610.  <U>
  7611.  <V>
  7612.  <W>
  7613.  <X>
  7614.  <Y>
  7615.  <Z>
  7616.  _________________________________________________________________________
  7617.  
  7618.  2.5.2.2.1  collating-element Keyword
  7619.  
  7620.  In addition to the collating elements in the character set, the
  7621.  collating-element keyword shall be used to define multicharacter
  7622.  collating elements.  The syntax is
  7623.  
  7624.        "collating-element %s from %s\n", <_c_o_l_l_a_t_i_n_g-_s_y_m_b_o_l>, <_s_t_r_i_n_g>
  7625.  
  7626.  The <_c_o_l_l_a_t_i_n_g-_s_y_m_b_o_l> operand shall be a symbolic name, enclosed between  1
  7627.  angle brackets (< and >), and shall not duplicate any symbolic name in
  7628.  the current charmap file (if any), or any other symbolic name defined in
  7629.  this collation definition.  The string operand shall be a string of two
  7630.  or more characters that shall collate as an entity.  A <_c_o_l_l_a_t_i_n_g-         1
  7631.  _e_l_e_m_e_n_t> defined via this keyword is only recognized with the LC_COLLATE   1
  7632.  category.
  7633.  
  7634.  _E_x_a_m_p_l_e:
  7635.  
  7636.        collating-element <ch> from <c><h>
  7637.        collating-element <e-acute> from <acute><e>
  7638.        collating-element <ll> from ll
  7639.  
  7640.  
  7641.  
  7642.  
  7643.  
  7644.  
  7645.  
  7646.  
  7647.                Copyright c 1991 IEEE.  All rights reserved.
  7648.       This is an unapproved IEEE Standards Draft, subject to change.
  7649.  
  7650.  
  7651.  
  7652.  
  7653.  
  7654.  86                                 2 Terminology and General Requirements
  7655.  
  7656.  
  7657.  
  7658.  
  7659.  
  7660.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  7661.  
  7662.  Table 2-7 - LC_COLLATE Category Definition in the POSIX Locale (_c_o_n_c_l_u_d_e_d)
  7663.  _________________________________________________________________________
  7664.  <left-square-bracket>
  7665.  <backslash>
  7666.  <right-square-bracket>
  7667.  <circumflex>
  7668.  <underline>
  7669.  <grave-accent>
  7670.  <a>
  7671.  <b>
  7672.  <c>
  7673.  <d>
  7674.  <e>
  7675.  <f>
  7676.  <g>
  7677.  <h>
  7678.  <i>
  7679.  <j>
  7680.  <k>
  7681.  <l>
  7682.  <m>
  7683.  <n>
  7684.  <o>
  7685.  <p>
  7686.  <q>
  7687.  <r>
  7688.  <s>
  7689.  <t>
  7690.  <u>
  7691.  <v>
  7692.  <w>
  7693.  <x>
  7694.  <y>
  7695.  <z>
  7696.  <left-curly-bracket>
  7697.  <vertical-line>
  7698.  <right-curly-bracket>
  7699.  <tilde>
  7700.  <DEL>
  7701.  order_end
  7702.  #
  7703.  END LC_COLLATE
  7704.  __________________________________________________________________________________________________________________________________________________
  7705.  
  7706.  _2._5._2._2._2  collating-symbol _K_e_y_w_o_r_d
  7707.  
  7708.  This keyword shall be used to define symbols for use in collation
  7709.  sequence statements; i.e., between the order_start and the order_end
  7710.  keywords.  The syntax is
  7711.  
  7712.  
  7713.                Copyright c 1991 IEEE.  All rights reserved.
  7714.       This is an unapproved IEEE Standards Draft, subject to change.
  7715.  
  7716.  
  7717.  
  7718.  
  7719.  
  7720.  2.5 Locale                                                             87
  7721.  
  7722.  
  7723.  
  7724.  
  7725.  
  7726.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  7727.  
  7728.        "collating-symbol %s\n", <_c_o_l_l_a_t_i_n_g-_s_y_m_b_o_l>
  7729.  
  7730.  The <_c_o_l_l_a_t_i_n_g-_s_y_m_b_o_l> shall be a symbolic name, enclosed between angle    1
  7731.  brackets (< and >), and shall not duplicate any symbolic name in the
  7732.  current charmap file (if any), or any other symbolic name defined in this
  7733.  collation definition.  A <_c_o_l_l_a_t_i_n_g-_s_y_m_b_o_l> defined via this keyword is
  7734.  only recognized with the LC_COLLATE category.
  7735.  
  7736.  _E_x_a_m_p_l_e:
  7737.  
  7738.        collating-symbol <UPPER_CASE>
  7739.        collating-symbol <HIGH>
  7740.  
  7741.                                                                             2
  7742.  
  7743.  _2._5._2._2._3  order_start _K_e_y_w_o_r_d
  7744.  
  7745.  The order_start keyword shall precede collation order entries and also
  7746.  defines the number of weights for this collation sequence definition and
  7747.  other collation rules.
  7748.  
  7749.  The syntax of the order_start keyword is:
  7750.  
  7751.        "order_start %s;%s;...;%s\n", <_s_o_r_t-_r_u_l_e_s>, <_s_o_r_t-_r_u_l_e_s> ...
  7752.  
  7753.  The operands to the order_start keyword are optional.  If present, the
  7754.  operands define rules to be applied when strings are compared.  The
  7755.  number of operands define how many weights each element is assigned; if
  7756.  no operands are present, one forward operand is assumed.  If present, the
  7757.  first operand defines rules to be applied when comparing strings using
  7758.  the first (primary) weight; the second when comparing strings using the
  7759.  second weight, and so on.  Operands shall be separated by semicolons (;).
  7760.  Each operand shall consist of one or more collation directives, separated
  7761.  by commas (,).  If the number or operands exceeds the {COLL_WEIGHTS_MAX}
  7762.  limit, the utility shall issue a warning message.  The following
  7763.  directives shall be supported:
  7764.  
  7765.     forward            Specifies that comparison operations for the weight
  7766.                        level shall proceed from start of string towards
  7767.                        the end of string.
  7768.  
  7769.     backward           Specifies that comparison operations for the weight
  7770.                        level shall proceed from end of string towards the
  7771.                        beginning of string.
  7772.  
  7773.                                                                             2
  7774.  
  7775.     position           Specifies that comparison operations for the weight
  7776.                        level will consider the relative position of non-    2
  7777.  
  7778.  
  7779.                Copyright c 1991 IEEE.  All rights reserved.
  7780.       This is an unapproved IEEE Standards Draft, subject to change.
  7781.  
  7782.  
  7783.  
  7784.  
  7785.  
  7786.  88                                 2 Terminology and General Requirements
  7787.  
  7788.  
  7789.  
  7790.  
  7791.  
  7792.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  7793.  
  7794.                        IGNOREd elements in the strings.  The string         2
  7795.                        containing a non-IGNOREd element after the fewest    2
  7796.                        IGNOREd collating elements from the start of the     2
  7797.                        compare shall collate first.  If both strings        2
  7798.                        contain a non-IGNOREd character in the same          2
  7799.                        relative position, the collating values assigned to  2
  7800.                        the elements shall determine the ordering.  In case  2
  7801.                        of equality, subsequent non-IGNOREd characters       2
  7802.                        shall be considered in the same manner.              2
  7803.  
  7804.  The directives forward and backward are mutually exclusive.
  7805.  
  7806.  _E_x_a_m_p_l_e:
  7807.  
  7808.        order_start     forward;backward                                     2
  7809.  
  7810.  If no operands are specified, a single forward operand shall be assumed.   1
  7811.  
  7812.  2.5.2.2.4  Collation Order
  7813.  
  7814.  The order_start keyword shall be followed by collating element entries.
  7815.  The syntax for the collating element entries is
  7816.  
  7817.        "%s %s;%s;...;%s\n", <_c_o_l_l_a_t_i_n_g-_e_l_e_m_e_n_t>, <_w_e_i_g_h_t>, <_w_e_i_g_h_t>, ...
  7818.  
  7819.  Each _c_o_l_l_a_t_i_n_g-_e_l_e_m_e_n_t shall consist of either a character (in any of the  1
  7820.  forms defined in 2.5.2), a <_c_o_l_l_a_t_i_n_g-_e_l_e_m_e_n_t>, a <_c_o_l_l_a_t_i_n_g-_s_y_m_b_o_l>, an   1
  7821.  ellipsis, or the special symbol UNDEFINED.  The order in which collating   1
  7822.  elements are specified determines the character collation sequence, such   1
  7823.  that each collating element shall compare less than the elements           1
  7824.  following it.  The NUL character shall compare lower than any other        1
  7825.  character.                                                                 1
  7826.  
  7827.  A <_c_o_l_l_a_t_i_n_g-_e_l_e_m_e_n_t> shall be used to specify multicharacter collating    1
  7828.  elements, and indicates that the character sequence specified via the      1
  7829.  <_c_o_l_l_a_t_i_n_g-_e_l_e_m_e_n_t> is to be collated as a unit and in the relative order  1
  7830.  specified by its place.                                                    1
  7831.  
  7832.  A <_c_o_l_l_a_t_i_n_g-_s_y_m_b_o_l> shall be used to define a position in the relative    1
  7833.  order for use in weights.                                                  1
  7834.  
  7835.  The ellipsis symbol (``...'') specifies that a sequence of characters      1
  7836.  shall collate according to their encoded character values.  It shall be    1
  7837.  interpreted as indicating that all characters with a coded character set
  7838.  value higher than the value of the character in the preceding line, and
  7839.  lower than the coded character set value for the character in the
  7840.  following line, in the current coded character set, shall be placed in
  7841.  the character collation order between the previous and the following
  7842.  character in ascending order according to their coded character set
  7843.  
  7844.  
  7845.                Copyright c 1991 IEEE.  All rights reserved.
  7846.       This is an unapproved IEEE Standards Draft, subject to change.
  7847.  
  7848.  
  7849.  
  7850.  
  7851.  
  7852.  2.5 Locale                                                             89
  7853.  
  7854.  
  7855.  
  7856.  
  7857.  
  7858.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  7859.  
  7860.  values.  An initial ellipsis shall be interpreted as if the preceding
  7861.  line specified the NUL character, and a trailing ellipsis as if the
  7862.  following line specified the highest coded character set value in the
  7863.  current coded character set.  An ellipsis shall be treated as invalid if
  7864.  the preceding or following lines do not specify characters in the current
  7865.  coded character set.  The use of the ellipsis symbol ties the definition   1
  7866.  to a specific coded character set and may preclude the definition from     1
  7867.  being portable between implementations.                                    1
  7868.  
  7869.  The symbol UNDEFINED shall be interpreted as including all coded
  7870.  character set values not specified explicitly or via the ellipsis symbol.
  7871.  Such characters shall be inserted in the character collation order at the
  7872.  point indicated by the symbol, and in ascending order according to their   1
  7873.  coded character set values.  If no UNDEFINED symbol is specified, and the  1
  7874.  current coded character set contains characters not specified in this
  7875.  clause, the utility shall issue a warning message and place such
  7876.  characters at the end of the character collation order.
  7877.  
  7878.  The optional operands for each collation-element shall be used to define
  7879.  the primary, secondary, or subsequent weights for the collating element.
  7880.  The first operand specifies the relative primary weight, the second the
  7881.  relative secondary weight, and so on.  Two or more collation-elements can
  7882.  be assigned the same weight; they belong to the same _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s if  1
  7883.  they have the same primary weight.  Collation shall behave as if, for      1
  7884.  each weight level, IGNOREd elements are removed.  Then each successive     2
  7885.  pair of elements shall be compared according to the relative weights for   1
  7886.  the elements.  If the two strings compare equal, the process shall be      1
  7887.  repeated for the next weight level, up to the limit {COLL_WEIGHTS_MAX}.    1
  7888.  
  7889.  Weights shall be expressed as characters (in any of the forms specified    1
  7890.  in 2.5.2), <_c_o_l_l_a_t_i_n_g-_s_y_m_b_o_l>s, <_c_o_l_l_a_t_i_n_g-_e_l_e_m_e_n_t>s, an ellipsis, or the  1
  7891.  special symbol IGNORE.  A single character, a <_c_o_l_l_a_t_i_n_g-_s_y_m_b_o_l>, or a     1
  7892.  <_c_o_l_l_a_t_i_n_g-_e_l_e_m_e_n_t> shall represent the relative order in the character    1
  7893.  collating sequence of the character or symbol, rather than the character   1
  7894.  or characters themselves.                                                  1
  7895.  
  7896.  One-to-many mapping is indicated by specifying two or more concatenated    1
  7897.  characters or symbolic names.  Thus, if the character ``<eszet>'' is       1
  7898.  given the string <s><s> as a weight, comparisons shall be performed as if  1
  7899.  all occurrences of the character <eszet> are replaced by <s><s>.  If it    1
  7900.  is desirable to define <eszet> and <s><s> as an equivalence class, then a  1
  7901.  collating-element must be defined for the string ``ss'', as in the         1
  7902.  example below.                                                             1
  7903.  
  7904.  All characters specified via an ellipsis shall by default be assigned      1
  7905.  unique weights, equal to the relative order of characters.  Characters     1
  7906.  specified via an explicit or implicit UNDEFINED special symbol shall by    1
  7907.  default be assigned the same primary weight (i.e., belong to the same      1
  7908.  equivalence class).  An ellipsis symbol as a weight shall be interpreted   1
  7909.  
  7910.  
  7911.                Copyright c 1991 IEEE.  All rights reserved.
  7912.       This is an unapproved IEEE Standards Draft, subject to change.
  7913.  
  7914.  
  7915.  
  7916.  
  7917.  
  7918.  90                                 2 Terminology and General Requirements
  7919.  
  7920.  
  7921.  
  7922.  
  7923.  
  7924.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  7925.  
  7926.  to mean that each character in the sequence shall have unique weights,     1
  7927.  equal to the relative order of their character in the character collation  1
  7928.  sequence.  Secondary and subsequent weights have unique values.  The use   1
  7929.  of the ellipsis as a weight shall be treated as an error if the collating  1
  7930.  element is neither an ellipsis nor the special symbol UNDEFINED.           1
  7931.  
  7932.  The special keyword IGNORE as a weight shall indicate that when strings
  7933.  are compared using the weights at the level where IGNORE is specified,
  7934.  the collating element shall be ignored; i.e., as if the string did not
  7935.  contain the collating element.  In regular expressions and pattern
  7936.  matching, all characters that are IGNOREd in their primary weight form an
  7937.  equivalence class.
  7938.  
  7939.  An empty operand shall be interpreted as the collating-element itself.
  7940.  
  7941.  For example, the order statement
  7942.  
  7943.        <a>     <a>;<a>
  7944.  
  7945.  is equal to
  7946.  
  7947.        <a>
  7948.  
  7949.  An ellipsis can be used as an operand if the collating-element was an
  7950.  ellipsis, and shall be interpreted as the value of each character defined
  7951.  by the ellipsis.
  7952.  
  7953.  The collation order as defined in this clause defines the interpretation   1
  7954.  of bracket expressions in regular expressions (see 2.8.3.2).               1
  7955.  
  7956.  
  7957.  
  7958.  
  7959.  
  7960.  
  7961.  
  7962.  
  7963.  
  7964.  
  7965.  
  7966.  
  7967.  
  7968.  
  7969.  
  7970.  
  7971.  
  7972.  
  7973.  
  7974.  
  7975.  
  7976.  
  7977.                Copyright c 1991 IEEE.  All rights reserved.
  7978.       This is an unapproved IEEE Standards Draft, subject to change.
  7979.  
  7980.  
  7981.  
  7982.  
  7983.  
  7984.  2.5 Locale                                                             91
  7985.  
  7986.  
  7987.  
  7988.  
  7989.  
  7990.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  7991.  
  7992.        _E_x_a_m_p_l_e:
  7993.  
  7994.        order_start   forward;backward
  7995.        UNDEFINED     IGNORE;IGNORE
  7996.        <LOW>
  7997.        <space>       <LOW>;<space>
  7998.        ...           <LOW>;...
  7999.        <a>           <a>;<a>
  8000.        <a-acute>     <a>;<a-acute>
  8001.        <a-grave>     <a>;<a-grave>
  8002.        <A>           <a>;<A>
  8003.        <A-acute>     <a>;<A-acute>
  8004.        <A-grave>     <a>;<A-grave>
  8005.        <ch>          <ch>;<ch>
  8006.        <Ch>          <ch>;<Ch>
  8007.        <s>           <s>;<s>
  8008.                                                                             2
  8009.        <eszet>       <s><s>;<eszet><eszet>
  8010.        ...           <HIGH>;...
  8011.        <HIGH>
  8012.        order_end
  8013.  
  8014.  This example is interpreted as follows:
  8015.  
  8016.      (1)  The UNDEFINED means that all characters not specified in this
  8017.           definition (explicitly or via the ellipsis) shall be ignored for
  8018.           collation purposes; for regular expression purposes they are
  8019.           ordered first.
  8020.  
  8021.      (2)  All characters between <space> and <a> shall have the same
  8022.           primary equivalence class and individual secondary weights based
  8023.           on their ordinal encoded values.
  8024.  
  8025.      (3)  All characters based on the upper- or lowercase character a
  8026.           belong to the same primary equivalence class.
  8027.  
  8028.      (4)  The multicharacter collating element <c><h> is represented by
  8029.           the collating symbol <ch> and belongs to the same primary
  8030.           equivalence class as the multicharacter collating element
  8031.           <C><h>.
  8032.  
  8033.      (5)  Note that it is not possible to use the collating element <ss>    1
  8034.           as a weight and expect it to be expanded to the string ``ss''.    1
  8035.           When used as a weight, any collating-element represents the       1
  8036.           relative order assigned to it in the character collation          1
  8037.           sequence, not the string from which it was derived (compare with  1
  8038.           <ch>).                                                            1
  8039.  
  8040.  
  8041.  
  8042.  
  8043.                Copyright c 1991 IEEE.  All rights reserved.
  8044.       This is an unapproved IEEE Standards Draft, subject to change.
  8045.  
  8046.  
  8047.  
  8048.  
  8049.  
  8050.  92                                 2 Terminology and General Requirements
  8051.  
  8052.  
  8053.  
  8054.  
  8055.  
  8056.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  8057.  
  8058.  2.5.2.2.5  order_end Keyword
  8059.  
  8060.  The collating order entries shall be terminated with an order_end
  8061.  keyword.
  8062.  
  8063.  BEGIN_RATIONALE
  8064.  
  8065.  2.5.2.2.6  LC_COLLATE Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  8066.             _P_1_0_0_3._2)
  8067.  
  8068.  The LC_COLLATE category governs the collation order in the locale, and
  8069.  thus the processing of the C Standard {7} _s_t_r_x_f_r_m() and _s_t_r_c_o_l_l()
  8070.  functions, as well as a number of POSIX.2 utilities.
  8071.  
  8072.  The rules governing collation depends to some extent on the use.  At
  8073.  least five different levels of increasingly complex collation rules can
  8074.  be distinguished:
  8075.  
  8076.      (1)  Byte/machine code order.  This is the historical collation order
  8077.           in the UNIX system and many proprietary operating systems.
  8078.           Collation is here done character by character, without any
  8079.           regard to context.  The primary virtue is that it usually is
  8080.           quite fast, and also completely deterministic; it works well
  8081.           when the native machine collation sequence matches the user
  8082.           expectations.
  8083.  
  8084.      (2)  Character order.  On this level, collation is also done
  8085.           character by character, without regard to context.  The order
  8086.           between characters is, however, not determined by the code
  8087.           values, but on the user's expectations of the ``correct'' order
  8088.           between characters.  In addition, such a (simple) collation
  8089.           order can specify that certain characters collate equal (e.g.,
  8090.           upper- and lowercase letters).
  8091.  
  8092.      (3)  String ordering.  On this level, entire strings are compared
  8093.           based on relatively straightforward rules.  At this level,
  8094.           several ``passes'' may be required to determine the order
  8095.           between two strings.  Characters may be ignored in some passes,
  8096.           but not in others; the strings may be compared in different
  8097.           directions; and simple string substitutions may be made before
  8098.           strings are compared.  This level is best described as
  8099.           ``dictionary'' ordering; it is based on the spelling, not the
  8100.           pronunciation, or meaning, of the words.
  8101.  
  8102.      (4)  Text search ordering.  This is a further refinement of the
  8103.           previous level, best described as ``telephone book ordering'';    1
  8104.           some common homonyms (words spelled differently but with same     1
  8105.           pronunciation) are collated together; numbers are collated as if
  8106.           spelled with words, and so on.
  8107.  
  8108.  
  8109.                Copyright c 1991 IEEE.  All rights reserved.
  8110.       This is an unapproved IEEE Standards Draft, subject to change.
  8111.  
  8112.  
  8113.  
  8114.  
  8115.  
  8116.  2.5 Locale                                                             93
  8117.  
  8118.  
  8119.  
  8120.  
  8121.  
  8122.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  8123.  
  8124.      (5)  Semantic level ordering.  Words and strings are collated based
  8125.           on their meaning; entire words (such as ``the'') are eliminated,
  8126.           the ordering is not deterministic.  This usually requires
  8127.           special software, and is highly dependent on the intended use.
  8128.  
  8129.  While the historical collation order formally is at level 1, for the
  8130.  English language it corresponds roughly to elements at level 2.  The user
  8131.  expects to see the output from the ls utility sorted very much as as it
  8132.  would be in a dictionary.  While telephone book ordering would be an
  8133.  optimal goal for standard collation, this was ruled out as the order
  8134.  would be language dependent.  Furthermore, a requirement was that the
  8135.  order must be determined solely from the text string and the collation
  8136.  rules; no external information (e.g., ``pronunciation dictionaries'')
  8137.  could be required.
  8138.  
  8139.  As a result, the goal for the collation support is at level 3.  This also
  8140.  matches the requirements for the proposed Canadian collation order, as
  8141.  well as other, known collation requirements for alphabetic scripts.  It
  8142.  specifically rules out collation based on pronunciation rules, or based
  8143.  on semantic analysis of the text.
  8144.  
  8145.  The syntax for the LC_COLLATE category source is the result of a
  8146.  cooperative effort between representatives for many countries and
  8147.  organizations working with international issues, such as UniForum,
  8148.  X/Open, and ISO, and it meets the requirements for level 3, and has been
  8149.  verified to produce the correct result with examples based on French,
  8150.  Canadian, and Danish collation order, as well as meeting the requirements
  8151.  in the X/Open Portability Guide, Issue 3.  {B31}.  Because it supports
  8152.  multicharacter collating elements, it is also capable of supporting
  8153.  collation in code sets where a character is expressed using nonspacing
  8154.  characters followed by the base character (such as ISO 6937 {B6}).
  8155.  
  8156.  The directives that can be specified in an operand to the order_start      2
  8157.  keyword are based on the requirements specified in several proposed        2
  8158.  standards and in customary use.  The following is a rephrasing of rules    2
  8159.  defined for ``lexical ordering in English and French'' by the Canadian     2
  8160.  Standards Association (text is brackets is rephrased):                     2
  8161.  
  8162.      (1)  Once special characters ([punctuation]) have been removed from    2
  8163.           original strings, the ordering is determined by scanning forward  2
  8164.           (left to right) [disregarding case and diacriticals].             2
  8165.  
  8166.      (2)  In case of equivalence, special characters are once again         2
  8167.           removed from original strings and the ordering is determined      2
  8168.           scanning backward (starting from the rightmost character of the   2
  8169.           string and back), character by character, [disregarding case but  2
  8170.           considering diacriticals].                                        2
  8171.  
  8172.  
  8173.  
  8174.  
  8175.                Copyright c 1991 IEEE.  All rights reserved.
  8176.       This is an unapproved IEEE Standards Draft, subject to change.
  8177.  
  8178.  
  8179.  
  8180.  
  8181.  
  8182.  94                                 2 Terminology and General Requirements
  8183.  
  8184.  
  8185.  
  8186.  
  8187.  
  8188.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  8189.  
  8190.      (3)  In case of repeated equivalence, special characters are removed   2
  8191.           again from original strings and the ordering is determined        2
  8192.           scanning forward, character by character, [considering both case  2
  8193.           and diacriticals].                                                2
  8194.  
  8195.      (4)  If there is still an ordering equivalence after rules (1)         2
  8196.           through (3) have been applied, then only special characters and   2
  8197.           the position they occupy in the string are considered to          2
  8198.           determine ordering.  The string that has a special character in   2
  8199.           the lowest position comes first.  If two strings have a special   2
  8200.           character in the same position, the character [with the lowest    2
  8201.           collation value] comes first.  In case of equality, the other     2
  8202.           special characters are considered until there is a difference or  2
  8203.           all special characters have been exhausted.                       2
  8204.  
  8205.  It is estimated that the standard covers the requirements for all
  8206.  European languages, and no particular problems are anticipated with
  8207.  Slavic or Middle East character sets.
  8208.  
  8209.  The Far East (particularly Japanese/Chinese) collations are often based
  8210.  on contextual information and pronunciation rules (the same ideogram can
  8211.  have different meanings and different pronunciations).  Such collation,
  8212.  in general, falls outside the desired goal of the standard.  There are,
  8213.  however, several other collation rules (stroke/radical, or ``most common
  8214.  pronunciation'') which can be supported with the mechanism described
  8215.  here.
  8216.  
  8217.  Previous drafts contained a substitute statement, which performed a        2
  8218.  regular expression style replacement before string compares.  It has been  2
  8219.  withdrawn based on balloter objections that it was not required for the    2
  8220.  types of ordering POSIX.2 is aimed at.                                     2
  8221.  
  8222.  The character (and collating element) order is defined by the order in     2
  8223.  which characters and elements are specified between the order_start and    2
  8224.  order_end keywords.  This character order is used in range expressions in  2
  8225.  regular expressions (see 2.8).  Weights assigned to the characters and     2
  8226.  elements defines the collation sequence; in the absence of weights, the    2
  8227.  character order is also the collation sequence.                            2
  8228.  
  8229.  The position keyword was introduced to provide the capability to           1
  8230.  consider, in a compare, the relative position of non-IGNORE_d characters.   1
  8231.  As an example, consider the two strings ``o-ring'' and ``or-ing''.         1
  8232.  Assuming the hyphen is IGNORE_d on the first pass, the two strings will     1
  8233.  compare equal, and the position of the hyphen is immaterial.  On second    1
  8234.  pass, all characters except the hyphen are IGNORE_d, and in the normal      1
  8235.  case the two strings would again compare equal.  By taking position into   1
  8236.  account, the first collates before the second.                             1
  8237.  
  8238.  
  8239.  
  8240.  
  8241.                Copyright c 1991 IEEE.  All rights reserved.
  8242.       This is an unapproved IEEE Standards Draft, subject to change.
  8243.  
  8244.  
  8245.  
  8246.  
  8247.  
  8248.  2.5 Locale                                                             95
  8249.  
  8250.  
  8251.  
  8252.  
  8253.  
  8254.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  8255.  
  8256.  END_RATIONALE                                                              1
  8257.  
  8258.  
  8259.  2.5.2.3  LC_MONETARY
  8260.  
  8261.      Table 2-8  -  LC_MONETARY Category Definition in the POSIX Locale
  8262.  __________________________________________________________________________________________________________________________________________________
  8263.  LC_MONETARY
  8264.  # This is the POSIX Locale definition for
  8265.  # the LC_MONETARY category.
  8266.  #
  8267.  int_curr_symbol         ""
  8268.  currency_symbol         ""
  8269.  mon_decimal_point       ""
  8270.  mon_thousands_sep       ""
  8271.  mon_grouping            ""
  8272.  positive_sign           ""
  8273.  negative_sign           ""
  8274.  int_frac_digits         -1
  8275.  p_cs_precedes           -1
  8276.  p_sep_by_space          -1
  8277.  n_cs_precedes           -1
  8278.  n_sep_by_space          -1
  8279.  p_sign_posn             -1
  8280.  n_sign_posn             -1
  8281.  #
  8282.  END LC_MONETARY
  8283.  __________________________________________________________________________________________________________________________________________________
  8284.  
  8285.  The LC_MONETARY category shall define the rules and symbols that shall be
  8286.  used to format monetary numeric information.  The operands are strings.
  8287.  For some keywords, the strings can contain only integers.  Keywords that
  8288.  are not provided, string values set to the empty string (""), or integer   1
  8289.  keywords set to -1, shall be used to indicate that the value is            1
  8290.  unspecified.  The following keywords shall be recognized:
  8291.  
  8292.     copy                  Specify the name of an existing locale to be
  8293.                           used as the source for the definition of this
  8294.                           category.  If this keyword is specified, no
  8295.                           other keyword shall be specified.
  8296.  
  8297.     int_curr_symbol       The international currency symbol.  The operand
  8298.                           shall be a four-character string, with the first
  8299.                           three characters containing the alphabetic
  8300.                           international currency symbol in accordance with
  8301.                           those specified in ISO 4217 {3} (_C_o_d_e_s _f_o_r _t_h_e
  8302.                           _r_e_p_r_e_s_e_n_t_a_t_i_o_n _o_f _c_u_r_r_e_n_c_i_e_s _a_n_d _f_u_n_d_s).  The
  8303.                           fourth character shall be the character used to
  8304.                           separate the international currency symbol from
  8305.                           the monetary quantity.
  8306.  
  8307.                Copyright c 1991 IEEE.  All rights reserved.
  8308.       This is an unapproved IEEE Standards Draft, subject to change.
  8309.  
  8310.  
  8311.  
  8312.  
  8313.  
  8314.  96                                 2 Terminology and General Requirements
  8315.  
  8316.  
  8317.  
  8318.  
  8319.  
  8320.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  8321.  
  8322.     currency_symbol       The string that shall be used as the local
  8323.                           currency symbol.
  8324.  
  8325.     mon_decimal_point     The operand is a string containing the symbol     2
  8326.                           that shall be used as the decimal delimiter in    2
  8327.                           monetary formatted quantities.  In contexts       2
  8328.                           where other standards limit the                   2
  8329.                           mon_decimal_point to a single byte, the result    2
  8330.                           of specifying a multibyte operand is              2
  8331.                           unspecified.                                      2
  8332.  
  8333.     mon_thousands_sep     The operand is a string containing the symbol     2
  8334.                           that shall be used as a separator for groups of   2
  8335.                           digits to the left of the decimal delimiter in    2
  8336.                           formatted monetary quantities.  In contexts       2
  8337.                           where other standards limit the                   2
  8338.                           mon_thousands_sep to a single byte, the result    2
  8339.                           of specifying a multibyte operand is              2
  8340.                           unspecified.                                      2
  8341.  
  8342.     mon_grouping          Define the size of each group of digits in
  8343.                           formatted monetary quantities.  The operand is a
  8344.                           sequence of integers separated by semicolons.
  8345.                           Each integer specifies the number of digits in
  8346.                           each group, with the initial integer defining
  8347.                           the size of the group immediately preceding the
  8348.                           decimal delimiter, and the following integers
  8349.                           defining the preceding groups.  If the last       2
  8350.                           integer is not -1, then the size of the previous  2
  8351.                           group (if any) shall be repeatedly used for the   2
  8352.                           remainder of the digits.  If the last integer is  2
  8353.                           -1, then no further grouping shall be performed.  2
  8354.  
  8355.     positive_sign         A string that shall be used to indicate a
  8356.                           nonnegative-valued formatted monetary quantity.
  8357.  
  8358.     negative_sign         A string that shall be used to indicate a
  8359.                           negative-valued formatted monetary quantity.
  8360.  
  8361.     int_frac_digits       An integer representing the number of fractional
  8362.                           digits (those to the right of the decimal
  8363.                           delimiter) to be written in a formatted monetary
  8364.                           quantity using int_curr_symbol.
  8365.  
  8366.     frac_digits           An integer representing the number of fractional
  8367.                           digits (those to the right of the decimal
  8368.                           delimiter) to be written in a formatted monetary
  8369.                           quantity using currency_symbol.
  8370.  
  8371.  
  8372.  
  8373.                Copyright c 1991 IEEE.  All rights reserved.
  8374.       This is an unapproved IEEE Standards Draft, subject to change.
  8375.  
  8376.  
  8377.  
  8378.  
  8379.  
  8380.  2.5 Locale                                                             97
  8381.  
  8382.  
  8383.  
  8384.  
  8385.  
  8386.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  8387.  
  8388.     p_cs_precedes         An integer set to 1 if the currency_symbol or
  8389.                           int_curr_symbol precedes the value for a
  8390.                           nonnegative formatted monetary quantity, and set
  8391.                           to 0 if the symbol succeeds the value.
  8392.  
  8393.     p_sep_by_space        An integer set to 0 if no space separates the
  8394.                           currency_symbol or int_curr_symbol from the
  8395.                           value for a nonnegative formatted monetary
  8396.                           quantity, set to 1 if a space separates the
  8397.                           symbol from the value, and set to 2 if a space
  8398.                           separates the symbol and the sign string, if
  8399.                           adjacent.
  8400.  
  8401.     n_cs_precedes         An integer set to 1 if the currency_symbol or
  8402.                           int_curr_symbol precedes the value for a
  8403.                           negative formatted monetary quantity, and set to
  8404.                           0 if the symbol succeeds the value.
  8405.  
  8406.     n_sep_by_space        An integer set to 0 if no space separates the
  8407.                           currency_symbol or int_curr_symbol from the
  8408.                           value for a negative formatted monetary
  8409.                           quantity, set to 1 if a space separates the
  8410.                           symbol from the value, and set to 2 if a space
  8411.                           separates the symbol and the sign string, if
  8412.                           adjacent.
  8413.  
  8414.     p_sign_posn           An integer set to a value indicating the
  8415.                           positioning of the positive_sign for a
  8416.                           nonnegative formatted monetary quantity.  The
  8417.                           following integer values shall be recognized:
  8418.  
  8419.                              0  Parentheses enclose the quantity and the
  8420.                                 currency_symbol or int_curr_symbol.
  8421.  
  8422.                              1  The sign string precedes the quantity and
  8423.                                 the currency_symbol or int_curr_symbol.
  8424.  
  8425.                              2  The sign string succeeds the quantity and
  8426.                                 the currency_symbol or int_curr_symbol.
  8427.  
  8428.                              3  The sign string immediately precedes the
  8429.                                 currency_symbol or int_curr_symbol.
  8430.  
  8431.                              4  The sign string immediately succeeds the
  8432.                                 currency_symbol or int_curr_symbol.
  8433.  
  8434.     n_sign_posn           An integer set to a value indicating the
  8435.                           positioning of the negative_sign for a negative   1
  8436.                           formatted monetary quantity.  The following
  8437.  
  8438.  
  8439.                Copyright c 1991 IEEE.  All rights reserved.
  8440.       This is an unapproved IEEE Standards Draft, subject to change.
  8441.  
  8442.  
  8443.  
  8444.  
  8445.  
  8446.  98                                 2 Terminology and General Requirements
  8447.  
  8448.  
  8449.  
  8450.  
  8451.  
  8452.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  8453.  
  8454.                           integer values shall be recognized:
  8455.  
  8456.                              0  Parentheses enclose the quantity and the
  8457.                                 currency_symbol or int_curr_symbol.
  8458.  
  8459.                              1  The sign string precedes the quantity and
  8460.                                 the currency_symbol or int_curr_symbol.
  8461.  
  8462.                              2  The sign string succeeds the quantity and
  8463.                                 the currency_symbol or int_curr_symbol.
  8464.  
  8465.                              3  The sign string immediately precedes the
  8466.                                 currency_symbol or int_curr_symbol.
  8467.  
  8468.                              4  The sign string immediately succeeds the
  8469.                                 currency_symbol or int_curr_symbol.
  8470.  
  8471.  BEGIN_RATIONALE
  8472.  
  8473.  2.5.2.3.1  LC_MONETARY Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  8474.             _P_1_0_0_3._2)
  8475.  
  8476.  The currency symbol does not appear in LC_MONETARY because it is not
  8477.  defined in the C Standard's {7} C locale.
  8478.  
  8479.  The C Standard {7} limits the size of decimal points and thousands         2
  8480.  delimiters to single-byte values.  In locales based on multibyte coded     2
  8481.  character sets this cannot be enforced, obviously; this standard does not  2
  8482.  prohibit such characters, but makes the behavior unspecified [in the text  2
  8483.  ``In contexts where other standards ...''].                                2
  8484.  
  8485.  The grouping specification is based on, but not identical to, the          2
  8486.  C Standard {7}.  The ``-1'' signals that no further grouping shall be      2
  8487.  performed, the equivalent of {CHAR_MAX} in the C Standard {7}).            2
  8488.  
  8489.  The locale definition is an extension of the C Standard {7} _l_o_c_a_l_e_c_o_n_v()
  8490.  specification.  In particular, rules on how currency_symbol is treated
  8491.  are extended to also cover int_curr_symbol, and p_set_by_space and
  8492.  n_sep_by_space have been augmented with the value 2, which places a space
  8493.  between the sign and the symbol (if they are adjacent; otherwise it
  8494.  should be treated as a 0).  The following table shows the result of
  8495.  various combinations:
  8496.  
  8497.  
  8498.  
  8499.  
  8500.  
  8501.  
  8502.  
  8503.  
  8504.  
  8505.                Copyright c 1991 IEEE.  All rights reserved.
  8506.       This is an unapproved IEEE Standards Draft, subject to change.
  8507.  
  8508.  
  8509.  
  8510.  
  8511.  
  8512.  2.5 Locale                                                             99
  8513.  
  8514.  
  8515.  
  8516.  
  8517.  
  8518.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  8519.  
  8520.                                                  p_sep_by_space
  8521.                                              2          1          0
  8522.  
  8523.     p_cs_precedes = 1   p_sign_posn = 0   ($1.25)    ($ 1.25)   ($1.25)
  8524.                         p_sign_posn = 1   + $1.25    +$ 1.25    +$1.25
  8525.                         p_sign_posn = 2   $1.25 +    $ 1.25+    $1.25+
  8526.                         p_sign_posn = 3   + $1.25    +$ 1.25    +$1.25
  8527.                         p_sign_posn = 4   $ +1.25    $+ 1.25    $+1.25
  8528.  
  8529.     p_cs_precedes = 0   p_sign_posn = 0   (1.25 $)   (1.25 $)   (1.25$)
  8530.                         p_sign_posn = 1   +1.25 $    +1.25 $    +1.25$
  8531.                         p_sign_posn = 2   1.25$ +    1.25 $+    1.25$+
  8532.                         p_sign_posn = 3   1.25+ $    1.25 +$    1.25+$
  8533.                         p_sign_posn = 4   1.25$ +    1.25 $+    1.25$+
  8534.  
  8535.  The following is an example of the interpretation of the mon_grouping
  8536.  keyword.  Assuming that the value to be formatted is 123456789 and the
  8537.  mon_thousands_sep is ', then the following table shows the result.  The    1
  8538.  third column shows the equivalent C Standard {7} string that would be      1
  8539.  used to accommodate this grouping.  It is the responsibility of the        1
  8540.  utility to perform mappings of the formats in this clause to those used    1
  8541.  by language bindings such as the C Standard {7}.                           1
  8542.  
  8543.           mon_grouping   Formatted Value   C Standard {7} String            1
  8544.           ____________   _______________   _____________________            1
  8545.           3;-1           123456'789        "\3\177"                         2
  8546.           3              123'456'789       "\3"                             2
  8547.           3;2;-1         1234'56'789       "\3\2\177"                       2
  8548.           3;2            12'34'56'789      "\3\2"                           2
  8549.           -1             123456789         "177"                            2
  8550.  
  8551.  In these examples, the octal value of {CHAR_MAX} is 177.                   2
  8552.  
  8553.  END_RATIONALE
  8554.  
  8555.  2.5.2.4  LC_NUMERIC
  8556.  
  8557.  The LC_NUMERIC category shall define the rules and symbols that shall be
  8558.  used to format nonmonetary numeric information.  The operands are
  8559.  strings.  For some keywords, the strings only can contain integers.
  8560.  Keywords that are not provided, string values set to the empty string      1
  8561.  (""), or integer keywords set to -1, shall be used to indicate that the    1
  8562.  value is unspecified.  The following keywords shall be recognized:
  8563.  
  8564.     copy               Specify the name of an existing locale to be used
  8565.                        as the source for the definition of this category.
  8566.                        If this keyword is specified, no other keyword
  8567.                        shall be specified.
  8568.  
  8569.  
  8570.  
  8571.                Copyright c 1991 IEEE.  All rights reserved.
  8572.       This is an unapproved IEEE Standards Draft, subject to change.
  8573.  
  8574.  
  8575.  
  8576.  
  8577.  
  8578.  100                                2 Terminology and General Requirements
  8579.  
  8580.  
  8581.  
  8582.  
  8583.  
  8584.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  8585.  
  8586.     decimal_point      The operand is a string containing the symbol that   2
  8587.                        shall be used as the decimal delimiter in numeric,   2
  8588.                        nonmonetary formatted quantities.  This keyword      2
  8589.                        cannot be omitted and cannot be set to the empty     2
  8590.                        string.  In contexts where other standards limit     2
  8591.                        the decimal_point to a single byte, the result of    2
  8592.                        specifying a multibyte operand is unspecified.       2
  8593.  
  8594.     thousands_sep      The operand is a string containing the symbol that   2
  8595.                        shall be used as a separator for groups of digits    2
  8596.                        to the left of the decimal delimiter in numeric,     2
  8597.                        nonmonetary formatted monetary quantities.  In       2
  8598.                        contexts where other standards limit the             2
  8599.                        thousands_sep to a single byte, the result of        2
  8600.                        specifying a multibyte operand is unspecified.       2
  8601.  
  8602.     grouping           Define the size of each group of digits in
  8603.                        formatted nonmonetary quantities.  The operand is a
  8604.                        sequence of integers separated by semicolons.  Each
  8605.                        integer specifies the number of digits in each
  8606.                        group, with the initial integer defining the size
  8607.                        of the group immediately preceding the decimal
  8608.                        delimiter, and the following integers defining the
  8609.                        preceding groups.  If the last integer is not -1,    2
  8610.                        then the size of the previous group (if any) shall   2
  8611.                        be repeatedly used for the remainder of the digits.  2
  8612.                        If the last integer is -1, then no further grouping  2
  8613.                        shall be performed.                                  2
  8614.  
  8615.      Table 2-9  -  LC_NUMERIC Category Definition in the POSIX Locale
  8616.  __________________________________________________________________________________________________________________________________________________
  8617.  LC_NUMERIC
  8618.  # This is the POSIX Locale definition for
  8619.  # the LC_NUMERIC category.
  8620.  #
  8621.  decimal_point           "<period>"                                         2
  8622.  thousands_sep           ""
  8623.  grouping                0
  8624.  #
  8625.  END LC_NUMERIC
  8626.  __________________________________________________________________________________________________________________________________________________
  8627.  
  8628.  BEGIN_RATIONALE
  8629.  
  8630.  
  8631.  
  8632.  
  8633.  
  8634.  
  8635.  
  8636.  
  8637.                Copyright c 1991 IEEE.  All rights reserved.
  8638.       This is an unapproved IEEE Standards Draft, subject to change.
  8639.  
  8640.  
  8641.  
  8642.  
  8643.  
  8644.  2.5 Locale                                                            101
  8645.  
  8646.  
  8647.  
  8648.  
  8649.  
  8650.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  8651.  
  8652.  2.5.2.4.1  LC_NUMERIC Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  8653.             _P_1_0_0_3._2)
  8654.  
  8655.  See the rationale for LC_MONETARY (2.5.2.3.1) for a description of the     1
  8656.  behavior of grouping.                                                      1
  8657.  
  8658.  END_RATIONALE                                                              1
  8659.  
  8660.  
  8661.  2.5.2.5  LC_TIME
  8662.  
  8663.  The LC_TIME category shall define the interpretation of the field
  8664.  descriptors supported by the date utility (see 4.15).
  8665.  
  8666.       Table 2-10  -  LC_TIME Category Definition in the POSIX Locale
  8667.  __________________________________________________________________________________________________________________________________________________
  8668.  LC_TIME
  8669.  # This is the POSIX Locale definition for
  8670.  # the LC_TIME category.
  8671.  #
  8672.  # Abbreviated weekday names (%a)
  8673.  abday   "<S><u><n>";"<M><o><n>";"<T><u><e>";"<W><e><d>";\
  8674.          "<T><h><u>";"<F><r><i>";"<S><a><t>"
  8675.  #
  8676.  # Full weekday names (%A)
  8677.  day     "<S><u><n><d><a><y>";"<M><o><n><d><a><y>";\
  8678.          "<T><u><e><s><d><a><y>";"<W><e><d><n><e><s><d><a><y>";\
  8679.          "<T><h><u><r><s><d><a><y>";"<F><r><i><d><a><y>";\
  8680.          "<S><a><t><u><r><d><a><y>"
  8681.  #
  8682.  # Abbreviated month names (%b)
  8683.  abmon   "<J><a><n>";"<F><e><b>";"<M><a><r>";\
  8684.          "<A><p><r>";"<M><a><y>";"<J><u><n>";\
  8685.          "<J><u><l>";"<A><u><g>";"<S><e><p>";\
  8686.          "<O><c><t>";"<N><o><v>";"<D><e><c>"
  8687.  #
  8688.  # Full month names (%B)
  8689.  mon     "<J><a><n><u><a><r><y>";"<F><e><b><r><u><a><r><y>";\
  8690.          "<M><a><r><c><h>";"<A><p><r><i><l>";\
  8691.          "<M><a><y>";"<J><u><n><e>";\
  8692.          "<J><u><l><y>";"<A><u><g><u><s><t>";\
  8693.          "<S><e><p><t><e><m><b><e><r>";"<O><c><t><o><b><e><r>";\
  8694.          "<N><o><v><e><m><b><e><r>";"<D><e><c><e><m><b><e><r>"
  8695.  #
  8696.  # Equivalent of AM/PM (%p)      "AM";"PM"
  8697.  am_pm   "<A><M>";"<P><M>"
  8698.  #
  8699.  # Appropriate date and time representation (%c)
  8700.  #       "%a %b %e %H:%M:%S %Y"                                             1
  8701.  d_t_fmt "<percent-sign><a><space><percent-sign><b><space><percent-sign><e>\1
  8702.  
  8703.                Copyright c 1991 IEEE.  All rights reserved.
  8704.       This is an unapproved IEEE Standards Draft, subject to change.
  8705.  
  8706.  
  8707.  
  8708.  
  8709.  
  8710.  102                                2 Terminology and General Requirements
  8711.  
  8712.  
  8713.  
  8714.  
  8715.  
  8716.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  8717.  
  8718.  <space><percent-sign><H><colon><percent-sign><M>\
  8719.  <colon><percent-sign><S><space><percent-sign><Y>"
  8720.  #
  8721.  # Appropriate date representation (%x)   "%m/%d/%y"
  8722.  d_fmt   "<percent-sign><m><slash><percent-sign><d><slash><percent-sign><y>"
  8723.  #
  8724.  # Appropriate time representation (%X)   "%H:%M:%S"
  8725.  t_fmt   "<percent-sign><H><colon><percent-sign><M><colon><percent-sign><S>"
  8726.  #
  8727.  # Appropriate 12-hour time representation (%r) "%I:%M:%S %p"
  8728.  t_fmt_ampm "<percent-sign><I><colon><percent-sign><M><colon>\
  8729.  <percent-sign><S> <percent_sign><p>"
  8730.  #
  8731.  END LC_TIME
  8732.  
  8733.  __________________________________________________________________________________________________________________________________________________
  8734.  
  8735.  
  8736.  
  8737.  
  8738.  The following mandatory keywords shall be recognized:
  8739.  
  8740.     copy       Specify the name of an existing locale to be used as the
  8741.                source for the definition of this category.  If this
  8742.                keyword is specified, no other keyword shall be specified.
  8743.  
  8744.     abday      Define the abbreviated weekday names, corresponding to the
  8745.                %a field descriptor.  The operand shall consist of seven
  8746.                semicolon-separated strings.  The first string shall be the
  8747.                abbreviated name of the first day of the week (Sunday), the
  8748.                second the abbreviated name of the second day, and so on.
  8749.  
  8750.     day        Define the full weekday names, corresponding to the %A
  8751.                field descriptor.  The operand shall consist of seven
  8752.                semicolon-separated strings.  The first string shall be the
  8753.                full name of the first day of the week (Sunday), the second
  8754.                the full name of the second day, and so on.
  8755.  
  8756.     abmon      Define the abbreviated month names, corresponding to the %b
  8757.                field descriptor.  The operand shall consist of twelve
  8758.                semicolon-separated strings.  The first string shall be the
  8759.                abbreviated name of the first month of the year (January),
  8760.                the second the abbreviated name of the second month, and so
  8761.                on.
  8762.  
  8763.     mon        Define the full month names, corresponding to the %B field
  8764.                descriptor.  The operand shall consist of twelve
  8765.                semicolon-separated strings.  The first string shall be the
  8766.                full name of the first month of the year (January), the
  8767.  
  8768.  
  8769.                Copyright c 1991 IEEE.  All rights reserved.
  8770.       This is an unapproved IEEE Standards Draft, subject to change.
  8771.  
  8772.  
  8773.  
  8774.  
  8775.  
  8776.  2.5 Locale                                                            103
  8777.  
  8778.  
  8779.  
  8780.  
  8781.  
  8782.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  8783.  
  8784.                second the full name of the second month, and so on.
  8785.  
  8786.     d_t_fmt    Define the appropriate date and time representation,
  8787.                corresponding to the %c field descriptor.  The operand
  8788.                shall consist of a string, and can contain any combination
  8789.                of characters and field descriptors.  In addition, the
  8790.                string can contain escape sequences defined in Table 2-15.   1
  8791.  
  8792.     d_fmt      Define the appropriate date representation, corresponding
  8793.                to the %x field descriptor.  The operand shall consist of a
  8794.                string, and can contain any combination of characters and
  8795.                field descriptors.  In addition, the string can contain
  8796.                escape sequences defined in Table 2-15.                      1
  8797.  
  8798.     t_fmt      Define the appropriate time representation, corresponding
  8799.                to the %X field descriptor.  The operand shall consist of a
  8800.                string, and can contain any combination of characters and
  8801.                field descriptors.  In addition, the string can contain
  8802.                escape sequences defined in Table 2-15.                      1
  8803.  
  8804.     am_pm      Define the appropriate representation of the _a_n_t_e _m_e_r_i_d_i_e_m
  8805.                and _p_o_s_t _m_e_r_i_d_i_e_m strings, corresponding to the %p field
  8806.                descriptor.  The operand shall consist of two strings,
  8807.                separated by a semicolon.  The first string shall represent
  8808.                the _a_n_t_e _m_e_r_i_d_i_e_m designation, the last string the _p_o_s_t
  8809.                _m_e_r_i_d_i_e_m designation.
  8810.  
  8811.     t_fmt_ampm
  8812.                Define the appropriate time representation in the 12-hour
  8813.                clock format with am_pm, corresponding to the %r field
  8814.                descriptor.  The operand shall consist of a string and can
  8815.                contain any combination of characters and field
  8816.                descriptors.  If the string is empty, the 12-hour format is
  8817.                not supported in the locale.
  8818.  
  8819.  It is implementation defined whether the following optional keywords
  8820.  shall be recognized.  If they are not supported, but present in a
  8821.  localedef source, they shall be ignored.
  8822.  
  8823.     era            Shall be used to define alternate Eras, corresponding
  8824.                    to the %E field descriptor modifier.  The format of the
  8825.                    operand is unspecified, but shall support the
  8826.                    definition of the %EC and %Ey field descriptors, and
  8827.                    may also define the era_year format (%EY).
  8828.  
  8829.     era_year       Shall be used to define the format of the year in
  8830.                    alternate Era format, corresponding to the %EY field
  8831.                    descriptor.
  8832.  
  8833.  
  8834.  
  8835.                Copyright c 1991 IEEE.  All rights reserved.
  8836.       This is an unapproved IEEE Standards Draft, subject to change.
  8837.  
  8838.  
  8839.  
  8840.  
  8841.  
  8842.  104                                2 Terminology and General Requirements
  8843.  
  8844.  
  8845.  
  8846.  
  8847.  
  8848.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  8849.  
  8850.     era_d_fmt      Shall be used to define the format of the date in
  8851.                    alternate Era notation, corresponding to the %Ex field
  8852.                    descriptor.
  8853.  
  8854.     alt_digits     Shall be used to define alternate symbols for digits,
  8855.                    corresponding to the %O field descriptor modifier.  The
  8856.                    operand shall consist of semicolon-separated strings.
  8857.                    The first string shall be the alternate symbol
  8858.                    corresponding with zero, the second string the symbol
  8859.                    corresponding with one, and so on.  Up to 100 alternate
  8860.                    symbol strings can be specified.  The %O modifier
  8861.                    indicates that the string corresponding to the value
  8862.                    specified via the field descriptor shall be used
  8863.                    instead of the value.
  8864.  
  8865.  BEGIN_RATIONALE
  8866.  
  8867.  2.5.2.5.1  LC_TIME Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  8868.  
  8869.  Although certain of the field descriptors in the POSIX Locale (such as
  8870.  the name of the month) are shown with initial capital letters, this need
  8871.  not be the case in other locales.  Programs using these fields may need
  8872.  to adjust the capitalization if the output is going to be used at the
  8873.  beginning of a sentence.
  8874.  
  8875.  The LC_TIME descriptions of abday, daya, and abmon imply a Gregorian       1
  8876.  style calendar (7-day weeks, 12-month years, leap years, etc.).            1
  8877.  Formatting time strings for other types of calendars is outside the scope  1
  8878.  of this standard.                                                          1
  8879.  
  8880.  As specified under the date command, the field descriptors corresponding
  8881.  to the optional keywords consist of a modifier followed by a traditional
  8882.  field descriptor (for instance %Ex).  If the optional keywords are not
  8883.  supported by the implementation or are unspecified for the current
  8884.  locale, these field descriptors shall be treated as the traditional field
  8885.  descriptor.  For instance, assume the following keywords:
  8886.  
  8887.        alt_digits      "0th";"1st";"2nd";"3rd";"4th";"5th";\                1
  8888.                        "6th";"7th";"8th";"9th";"10th"                       1
  8889.  
  8890.        d_fmt           "The %Od day of %B in %Y"                            1
  8891.  
  8892.  On 7/4/1776, the %x field descriptor would result in ``The 4th day of      1
  8893.  July in 1776,'' while 7/14/1789 would come out as ``The 14 day of July in
  8894.  1789.''  It can be noted that the above example is for illustrative
  8895.  purposes only; the %O modifier is primarily intended to provide for Kanji
  8896.  or Hindi digits in date formats.
  8897.  
  8898.  
  8899.  
  8900.  
  8901.                Copyright c 1991 IEEE.  All rights reserved.
  8902.       This is an unapproved IEEE Standards Draft, subject to change.
  8903.  
  8904.  
  8905.  
  8906.  
  8907.  
  8908.  2.5 Locale                                                            105
  8909.  
  8910.  
  8911.  
  8912.  
  8913.  
  8914.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  8915.  
  8916.  While it is clear that an alternate year format is required, there is no
  8917.  consensus on the format or the requirements.  As a result, while these
  8918.  keywords are reserved, the details are left unspecified.  It is expected
  8919.  that National Standards Bodies will provide specifications.
  8920.  
  8921.  END_RATIONALE
  8922.  
  8923.  
  8924.  2.5.2.6  LC_MESSAGES
  8925.  
  8926.  The LC_MESSAGES category shall define the format and values for
  8927.  affirmative and negative responses.  The operands shall be strings or
  8928.  extended regular expressions; see 2.8.4.  The following keywords shall be
  8929.  recognized:
  8930.  
  8931.     copy       Specify the name of an existing locale to be used as the
  8932.                source for the definition of this category.  If this
  8933.                keyword is specified, no other keyword shall be specified.
  8934.  
  8935.     yesexpr    The operand shall consist of an extended regular expression
  8936.                that describes the acceptable affirmative response to a
  8937.                question expecting an affirmative or negative response.
  8938.  
  8939.     noexpr     The operand shall consist of an extended regular expression
  8940.                that describes the acceptable negative response to a
  8941.                question expecting an affirmative or negative response.
  8942.  
  8943.     Table 2-11  -  LC_MESSAGES Category Definition in the POSIX Locale
  8944.  __________________________________________________________________________________________________________________________________________________
  8945.  LC_MESSAGES
  8946.  # This is the POSIX Locale definition for
  8947.  # the LC_MESSAGES category.
  8948.  #
  8949.  yesexpr "<circumflex><left-square-bracket><y><Y><right-square-bracket>"
  8950.  #
  8951.  noexpr  "<circumflex><left-square-bracket><n><N><right-square-bracket>"
  8952.  END LC_MESSAGES
  8953.  __________________________________________________________________________________________________________________________________________________
  8954.  
  8955.  
  8956.  BEGIN_RATIONALE
  8957.  
  8958.  2.5.2.6.1  LC_MESSAGES Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  8959.             _P_1_0_0_3._2)
  8960.  
  8961.  The LC_MESSAGES category is described in 2.6 as affecting the language
  8962.  used by utilities for their output.  The mechanism used by the
  8963.  implementation to accomplish this, other than the responses shown here in
  8964.  the locale definition file, is not specified by this version of this
  8965.  standard.  The POSIX.1 working group is developing an interface that
  8966.  
  8967.                Copyright c 1991 IEEE.  All rights reserved.
  8968.       This is an unapproved IEEE Standards Draft, subject to change.
  8969.  
  8970.  
  8971.  
  8972.  
  8973.  
  8974.  106                                2 Terminology and General Requirements
  8975.  
  8976.  
  8977.  
  8978.  
  8979.  
  8980.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  8981.  
  8982.  would allow applications (and, presumably some of the standard utilities)
  8983.  to access messages from various message catalogs, tailored to a user's
  8984.  LC_MESSAGES value.
  8985.  
  8986.  END_RATIONALE
  8987.  
  8988.  
  8989.  2.5.3  Locale Definition Grammar                                           1
  8990.  
  8991.  The grammar and lexical conventions in this subclause shall together       1
  8992.  describe the syntax for the locale definition source.  The general         1
  8993.  conventions for this style of grammar are described in 2.1.2.  Any         1
  8994.  discrepancies found between this grammar and other descriptions in this    1
  8995.  clause shall be resolved in favor of this grammar.                         1
  8996.  
  8997.  
  8998.  2.5.3.1  Locale Lexical Conventions                                        1
  8999.  
  9000.  The lexical conventions for the locale definition grammar are described    1
  9001.  in this subclause.                                                         1
  9002.  
  9003.  The following tokens shall be processed (in addition to those string       1
  9004.  constants shown in the grammar):                                           1
  9005.  
  9006.     LOC_NAME       A string of characters representing the name of a        1
  9007.                    locale.                                                  1
  9008.  
  9009.     CHAR           Any single character.                                    1
  9010.  
  9011.     NUMBER         A decimal number, represented by one or more decimal     2
  9012.                    digits.                                                  2
  9013.  
  9014.     COLLSYMBOL     A symbolic name, enclosed between angle brackets.  The   1
  9015.                    string shall not duplicate any charmap symbol defined    1
  9016.                    in the current charmap (if any), or a COLLELEMENT        1
  9017.                    symbol.                                                  1
  9018.  
  9019.     COLLELEMENT    A symbolic name, enclosed between angle brackets, which  1
  9020.                    shall not duplicate either any charmap symbol or a       1
  9021.                    CHARSYMBOL symbol.                                       1
  9022.  
  9023.     CHARSYMBOL     A symbolic name, enclosed between angle brackets, from   1
  9024.                    the current charmap (if any).                            1
  9025.  
  9026.     OCTAL_CHAR     One or more octal representations of the encoding of     1
  9027.                    each byte in a single character.  The octal              1
  9028.                    representation consists of an escape_char (normally a    1
  9029.                    backslash) followed by two or more octal digits.         1
  9030.  
  9031.  
  9032.  
  9033.                Copyright c 1991 IEEE.  All rights reserved.
  9034.       This is an unapproved IEEE Standards Draft, subject to change.
  9035.  
  9036.  
  9037.  
  9038.  
  9039.  
  9040.  2.5 Locale                                                            107
  9041.  
  9042.  
  9043.  
  9044.  
  9045.  
  9046.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  9047.  
  9048.     HEX_CHAR       One or more hexadecimal representations of the encoding  1
  9049.                    of each byte in a single character.  The hexadecimal     1
  9050.                    representation consists of an escape_char followed by    1
  9051.                    the constant 'x' and two or more hexadecimal digits.     1
  9052.  
  9053.     DECIMAL_CHAR   One or more decimal representations of the encoding of   1
  9054.                    each byte in a single character.  The decimal            1
  9055.                    representation consists of an escape_char and followed   1
  9056.                    by a 'd' and two or more decimal digits.                 1
  9057.  
  9058.     ELLIPSIS       The string ``...''.                                      1
  9059.  
  9060.                                                                             2
  9061.  
  9062.     EXTENDED_REG_EXP                                                        1
  9063.                    An extended regular expression as defined in the         1
  9064.                    grammar in 2.8.5.2.                                      1
  9065.  
  9066.                                                                             2
  9067.  
  9068.     EOL            The line termination character <newline>.                1
  9069.  
  9070.  
  9071.  2.5.3.2  Locale Grammar                                                    1
  9072.  
  9073.  This subclause presents the grammar for the locale definition.             1
  9074.  
  9075.  %token          LOC_NAME                                                   1
  9076.  %token          CHAR                                                       1
  9077.  %token          NUMBER                                                     2
  9078.  %token          COLLSYMBOL COLLELEMENT                                     1
  9079.  %token          CHARSYMBOL OCTAL_CHAR HEX_CHAR DECIMAL_CHAR                1
  9080.  %token          ELLIPSIS                                                   1
  9081.  %token          EXTENDED_REG_EXP                                           2
  9082.  %token          EOL                                                        1
  9083.  
  9084.  %start  locale_definition                                                  1
  9085.  
  9086.  %%                                                                         1
  9087.  
  9088.  locale_definition       : global_statements locale_categories              2
  9089.                          |                   locale_categories              2
  9090.                          ;                                                  1
  9091.  
  9092.  global_statements       : global_statements symbol_redefine                2
  9093.                          | symbol_redefine                                  2
  9094.                          ;                                                  1
  9095.  
  9096.  
  9097.  
  9098.  
  9099.                Copyright c 1991 IEEE.  All rights reserved.
  9100.       This is an unapproved IEEE Standards Draft, subject to change.
  9101.  
  9102.  
  9103.  
  9104.  
  9105.  
  9106.  108                                2 Terminology and General Requirements
  9107.  
  9108.  
  9109.  
  9110.  
  9111.  
  9112.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  9113.  
  9114.  symbol_redefine         : '#escape_char'  CHAR EOL                         1
  9115.                          | '#comment_char' CHAR EOL                         1
  9116.                          ;                                                  1
  9117.  
  9118.  locale_categories       : locale_categories locale_category                2
  9119.                          | locale_category                                  2
  9120.                          ;                                                  1
  9121.  
  9122.  locale_category         : lc_ctype | lc_collate | lc_messages              1
  9123.                          | lc_monetary | lc_numeric | lc_time               1
  9124.                          ;                                                  1
  9125.  
  9126.  /*      The following grammar rules are common to all categories */        1
  9127.  
  9128.  char_list               : char_list char_symbol                            2
  9129.                          | char_symbol                                      2
  9130.                          ;                                                  1
  9131.  
  9132.  char_symbol             : CHAR | CHARSYMBOL                                1
  9133.                          | OCTAL_CHAR | HEX_CHAR | DECIMAL_CHAR             1
  9134.                          ;                                                  1
  9135.  
  9136.  locale_name             : LOC_NAME                                         1
  9137.                          | '"' LOC_NAME '"'                                 1
  9138.                          ;                                                  1
  9139.  
  9140.  /*      The following is the LC_CTYPE category grammar */                  1
  9141.  
  9142.  lc_ctype                : ctype_hdr ctype_keywords         ctype_tlr       2
  9143.                          | ctype_hdr 'copy' locale_name EOL ctype_tlr       2
  9144.                          ;                                                  2
  9145.  
  9146.  ctype_hdr               : 'LC_CTYPE' EOL                                   2
  9147.                          ;                                                  2
  9148.  
  9149.  ctype_keywords          : ctype_keywords ctype_keyword                     2
  9150.                          | ctype_keyword                                    2
  9151.                          ;                                                  1
  9152.  
  9153.  ctype_keyword           : charclass_keyword charclass_list EOL             1
  9154.                          | charconv_keyword charconv_list EOL               1
  9155.                          ;                                                  1
  9156.  
  9157.  charclass_keyword       : 'upper' | 'lower' | 'alpha' | 'digit'            1
  9158.                          | 'alnum' | 'xdigit' | 'space' | 'print'           1
  9159.                          | 'graph' | 'blank' | 'cntrl'                      1
  9160.                          ;                                                  1
  9161.  
  9162.  
  9163.  
  9164.  
  9165.                Copyright c 1991 IEEE.  All rights reserved.
  9166.       This is an unapproved IEEE Standards Draft, subject to change.
  9167.  
  9168.  
  9169.  
  9170.  
  9171.  
  9172.  2.5 Locale                                                            109
  9173.  
  9174.  
  9175.  
  9176.  
  9177.  
  9178.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  9179.  
  9180.  charclass_list          : charclass_list ';' char_symbol                   2
  9181.                          | charclass_list ';' ELLIPSIS ';' char_symbol      1
  9182.                          | char_symbol                                      2
  9183.                          ;                                                  1
  9184.  
  9185.  charconv_keyword        : 'toupper'                                        1
  9186.                          | 'tolower'                                        1
  9187.                          ;                                                  1
  9188.  
  9189.  charconv_list           : charconv_list ';' charconv_entry                 2
  9190.                          | charconv_entry                                   2
  9191.                          ;                                                  1
  9192.  
  9193.  charconv_entry          : '(' char_symbol ',' char_symbol ')'              1
  9194.                          ;                                                  1
  9195.  
  9196.  ctype_tlr               : 'END' 'LC_CTYPE' EOL                             2
  9197.                          ;                                                  1
  9198.  
  9199.  /*      The following is the LC_COLLATE category grammar */                1
  9200.  
  9201.  lc_collate              : collate_hdr collate_keywords       collate_tlr   2
  9202.                          | collate_hdr 'copy' locale_name EOL collate_tlr   2
  9203.                          ;                                                  2
  9204.  
  9205.  collate_hdr             : 'LC_COLLATE' EOL                                 2
  9206.                          ;                                                  2
  9207.  
  9208.  collate_keywords        :                order_statements                  2
  9209.                          | opt_statements order_statements                  2
  9210.                          ;                                                  1
  9211.  
  9212.  opt_statements          : opt_statements collating_symbols                 2
  9213.                          | opt_statements collating_elements                2
  9214.                          | collating_symbols                                1
  9215.                          | collating_elements                               1
  9216.                          ;                                                  1
  9217.  
  9218.  collating_symbols       : 'collating-symbol' COLLSYMBOL EOL                1
  9219.                          ;                                                  1
  9220.  
  9221.  collating_elements      : 'collating-element' COLLELEMENT                  1
  9222.                            'from' '"' char_list '"' EOL                     2
  9223.                          ;                                                  1
  9224.                                                                             2
  9225.  
  9226.  order_statements        : order_start collation_order order_end            1
  9227.                          ;                                                  1
  9228.  
  9229.  
  9230.  
  9231.                Copyright c 1991 IEEE.  All rights reserved.
  9232.       This is an unapproved IEEE Standards Draft, subject to change.
  9233.  
  9234.  
  9235.  
  9236.  
  9237.  
  9238.  110                                2 Terminology and General Requirements
  9239.  
  9240.  
  9241.  
  9242.  
  9243.  
  9244.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  9245.  
  9246.  order_start             : 'order_start' EOL                                1
  9247.                          | 'order_start' order_opts EOL                     1
  9248.                          ;                                                  1
  9249.  
  9250.  order_opts              : order_opts ';' order_opt                         2
  9251.                          | order_opt                                        2
  9252.                          ;                                                  1
  9253.  
  9254.  order_opt               : order_opt ',' opt_word                           2
  9255.                          | opt_word                                         2
  9256.                          ;                                                  1
  9257.  
  9258.  opt_word                : 'forward' | 'backward' | 'position'              2
  9259.                          ;                                                  1
  9260.  
  9261.  collation_order         : collation_order collation_entry                  2
  9262.                          | collation_entry                                  2
  9263.                          ;                                                  1
  9264.  
  9265.  collation_entry         : COLLSYMBOL EOL                                   1
  9266.                          | collation_element weight_list EOL                1
  9267.                          | collation_element             EOL                2
  9268.                          ;                                                  1
  9269.  
  9270.  collation_element       : char_symbol                                      1
  9271.                          | COLLELEMENT                                      1
  9272.                          | ELLIPSIS                                         1
  9273.                          | 'UNDEFINED'                                      1
  9274.                          ;                                                  1
  9275.  
  9276.  weight_list             : weight_list ';' weight_symbol                    2
  9277.                          | weight_list ';'                                  2
  9278.                          | weight_symbol                                    2
  9279.                          ;                                                  1
  9280.  
  9281.  weight_symbol           : char_symbol                                      2
  9282.                          | COLLSYMBOL                                       1
  9283.                          | '"' char_list '"'                                1
  9284.                          | ELLIPSIS                                         1
  9285.                          | 'IGNORE'                                         1
  9286.                          ;                                                  1
  9287.  
  9288.  order_end               : 'order_end' EOL                                  1
  9289.                          ;                                                  1
  9290.  
  9291.  collate_tlr             : 'END' 'LC_COLLATE' EOL                           2
  9292.                          ;                                                  1
  9293.  
  9294.  
  9295.  
  9296.  
  9297.                Copyright c 1991 IEEE.  All rights reserved.
  9298.       This is an unapproved IEEE Standards Draft, subject to change.
  9299.  
  9300.  
  9301.  
  9302.  
  9303.  
  9304.  2.5 Locale                                                            111
  9305.  
  9306.  
  9307.  
  9308.  
  9309.  
  9310.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  9311.  
  9312.  /*      The following is the LC_MESSAGES category grammar */               1
  9313.  
  9314.  lc_messages             : messages_hdr messages_keywords      messages_tlr 2
  9315.                          | messages_hdr 'copy' locale_name EOL messages_tlr 2
  9316.                          ;                                                  2
  9317.  
  9318.  messages_hdr            : 'LC_MESSAGES' EOL                                2
  9319.                          ;                                                  2
  9320.  
  9321.  messages_keywords       : messages_keywords messages_keyword               2
  9322.                          | messages_keyword                                 2
  9323.                          ;                                                  1
  9324.  
  9325.  messages_keyword        : 'yesexpr' '"' EXTENDED_REG_EXP '"' EOL           2
  9326.                          | 'noexpr'  '"' EXTENDED_REG_EXP '"' EOL           2
  9327.                          ;                                                  2
  9328.  
  9329.  messages_tlr            : 'END' 'LC_MESSAGES' EOL                          2
  9330.                          ;                                                  1
  9331.  
  9332.  /*      The following is the LC_MONETARY category grammar */               1
  9333.  
  9334.  lc_monetary             : monetary_hdr monetary_keywords       monetary_tlr2
  9335.                          | monetary_hdr 'copy' locale_name EOL  monetary_tlr2
  9336.                          ;                                                  2
  9337.  
  9338.  monetary_hdr            : 'LC_MONETARY' EOL                                2
  9339.                          ;                                                  2
  9340.  
  9341.  monetary_keywords       : monetary_keywords monetary_keyword               2
  9342.                          | monetary_keyword                                 2
  9343.                          ;                                                  1
  9344.  
  9345.  monetary_keyword        : mon_keyword_string mon_string EOL                1
  9346.                          | mon_keyword_char NUMBER EOL                      2
  9347.                          | mon_keyword_char '-1'   EOL                      2
  9348.                          | mon_keyword_grouping mon_group_list EOL          1
  9349.                          ;                                                  1
  9350.  
  9351.  mon_keyword_string      : 'int_curr_symbol' | 'currency_symbol'            1
  9352.                          | 'mon_decimal_point' | 'mon_thousands_sep'        1
  9353.                          | 'positive_sign' | 'negative_sign'                1
  9354.                          ;                                                  1
  9355.  
  9356.  mon_string              : '"' char_list '"'                                1
  9357.                          | '""'                                             1
  9358.                          ;                                                  1
  9359.  
  9360.  
  9361.  
  9362.  
  9363.                Copyright c 1991 IEEE.  All rights reserved.
  9364.       This is an unapproved IEEE Standards Draft, subject to change.
  9365.  
  9366.  
  9367.  
  9368.  
  9369.  
  9370.  112                                2 Terminology and General Requirements
  9371.  
  9372.  
  9373.  
  9374.  
  9375.  
  9376.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  9377.  
  9378.  mon_keyword_char        : 'int_frac_digits' | 'frac_digits'                1
  9379.                          | 'p_cs_precedes' | 'p_sep_by_space'               1
  9380.                          | 'n_cs_precedes' | 'n_sep_by_space'               1
  9381.                          | 'p_sign_posn' | 'n_sign_posn'                    1
  9382.                          ;                                                  1
  9383.                                                                             2
  9384.  
  9385.  mon_keyword_grouping    : 'mon_grouping'                                   1
  9386.                          ;                                                  1
  9387.  
  9388.  mon_group_list          : NUMBER                                           2
  9389.                          | mon_group_list ';' NUMBER                        2
  9390.                          ;                                                  2
  9391.  
  9392.  monetary_tlr            : 'END' 'LC_MONETARY' EOL                          2
  9393.                          ;                                                  2
  9394.  
  9395.  /*      The following is the LC_NUMERIC category grammar */                2
  9396.  
  9397.  lc_numeric              : numeric_hdr numeric_keywords       numeric_tlr   2
  9398.                          | numeric_hdr 'copy' locale_name EOL numeric_tlr   2
  9399.                          ;                                                  2
  9400.  
  9401.  numeric_hdr             : 'LC_NUMERIC' EOL                                 2
  9402.                          ;                                                  2
  9403.  
  9404.  numeric_keywords        : numeric_keywords numeric_keyword                 2
  9405.                          | numeric_keyword                                  2
  9406.                          ;                                                  1
  9407.  
  9408.  numeric_keyword         : num_keyword_string num_string EOL                1
  9409.                          | num_keyword_grouping num_group_list EOL          1
  9410.                          ;                                                  1
  9411.  
  9412.  num_keyword_string      : 'decimal_point'                                  1
  9413.                          | 'thousands_sep'                                  1
  9414.                          ;                                                  1
  9415.  
  9416.  num_string              : '"' char_list '"'                                1
  9417.                          | '""'                                             1
  9418.                          ;                                                  1
  9419.  
  9420.  num_keyword_grouping    : 'num_grouping'                                   1
  9421.                          ;                                                  1
  9422.  
  9423.  num_group_list          : NUMBER                                           2
  9424.                          | num_group_list ';' NUMBER                        2
  9425.                          ;                                                  1
  9426.                                                                             2
  9427.  
  9428.  
  9429.                Copyright c 1991 IEEE.  All rights reserved.
  9430.       This is an unapproved IEEE Standards Draft, subject to change.
  9431.  
  9432.  
  9433.  
  9434.  
  9435.  
  9436.  2.5 Locale                                                            113
  9437.  
  9438.  
  9439.  
  9440.  
  9441.  
  9442.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  9443.  
  9444.  numeric_tlr             : 'END' 'LC_NUMERIC' EOL                           2
  9445.                          ;                                                  1
  9446.  
  9447.  /*      The following is the LC_TIME category grammar */                   1
  9448.  
  9449.  lc_time                 : time_hdr time_keywords          time_tlr         2
  9450.                          | time_hdr 'copy' locale_name EOL time_tlr         2
  9451.                          ;                                                  1
  9452.  
  9453.  time_hdr                : 'LC_TIME' EOL                                    2
  9454.                          ;                                                  1
  9455.  
  9456.  time_keywords           : time_keywords time_keyword                       2
  9457.                          | time_keyword                                     2
  9458.                          ;                                                  1
  9459.  
  9460.  time_keyword            : time_keyword_name time_list EOL                  2
  9461.                          | time_keyword_fmt time_string EOL                 1
  9462.                          | time_keyword_opt time_list EOL                   1
  9463.                          ;                                                  1
  9464.  
  9465.  time_keyword_name       : 'abday' | 'day' | 'abmon' | 'mon'                2
  9466.                          ;                                                  1
  9467.  
  9468.  time_keyword_fmt        : 'd_t_fmt' | 'd_fmt' | 't_fmt' | 'am_pm' | 't_fmt_ampm'1
  9469.                          ;                                                  1
  9470.  
  9471.  time_keyword_opt        : 'era' | 'era_year' | 'era_d_fmt' | 'alt_digits'  1
  9472.                          ;                                                  1
  9473.  
  9474.  time_list               : time_list ';' time_string                        2
  9475.                          | time_string                                      2
  9476.                          ;                                                  1
  9477.  
  9478.  time_string             : '"' char_list '"'                                1
  9479.                          ;                                                  1
  9480.  
  9481.  time_tlr                : 'END' 'LC_TIME' EOL                              2
  9482.                          ;                                                  1
  9483.  
  9484.  BEGIN_RATIONALE                                                            1
  9485.  
  9486.  
  9487.  
  9488.  
  9489.  
  9490.  
  9491.  
  9492.  
  9493.  
  9494.  
  9495.                Copyright c 1991 IEEE.  All rights reserved.
  9496.       This is an unapproved IEEE Standards Draft, subject to change.
  9497.  
  9498.  
  9499.  
  9500.  
  9501.  
  9502.  114                                2 Terminology and General Requirements
  9503.  
  9504.  
  9505.  
  9506.  
  9507.  
  9508.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  9509.  
  9510.  2.5.4  Locale Definition Example. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  9511.         _P_1_0_0_3._2)
  9512.  
  9513.  The following is an example of a locale definition file that could be
  9514.  used as input to the localedef utility.  It assumes that the utility is
  9515.  executed with the -f option, naming a _c_h_a_r_m_a_p file with (at least) the
  9516.  following content:
  9517.  
  9518.  CHARMAP
  9519.  <space>        \x20
  9520.  <dollar>       \x24
  9521.  <A>            \101
  9522.  <a>            \141
  9523.  <A-acute>      \346
  9524.  <a-acute>      \365
  9525.  <A-grave>      \300                                                        1
  9526.  <a-grave>      \366
  9527.  <b>            \142
  9528.  <C>            \103
  9529.  <c>            \143
  9530.  <c-cedilla>    \347
  9531.  <d>            \x64
  9532.  <H>            \110
  9533.  <h>            \150
  9534.  <eszet>        \xb7
  9535.  <s>            \x73
  9536.  <z>            \x7a
  9537.  END CHARMAP
  9538.  
  9539.  It should not be taken as complete or to represent any actual locale, but
  9540.  only to illustrate the syntax.
  9541.  
  9542.  A further set of examples is offered as part of Annex F.
  9543.  
  9544.  #
  9545.  LC_CTYPE
  9546.  lower   <a>;<b>;<c>;<c-cedilla>;<d>;...;<z>
  9547.  upper   A;B;C;C,;...;Z
  9548.  space   \x20;\x09;\x0a;\x0b;\x0c;\x0d                                      1
  9549.  blank   \040;\011
  9550.  toupper (<a>,<A>);(b,B);(c,C);(c,,C,);(d,D);(z,Z)
  9551.  END LC_CTYPE
  9552.  #
  9553.  LC_COLLATE
  9554.  #
  9555.  # The following example of collation is based on the proposed              1
  9556.  # Canadian standard Z243.4.1-1990, "Canadian Alphanumeric                  1
  9557.  # Ordering Standard For Character sets of CSA Z234.4 Standard".            1
  9558.  # (Other parts of this example locale definition file do not               1
  9559.  
  9560.  
  9561.                Copyright c 1991 IEEE.  All rights reserved.
  9562.       This is an unapproved IEEE Standards Draft, subject to change.
  9563.  
  9564.  
  9565.  
  9566.  
  9567.  
  9568.  2.5 Locale                                                            115
  9569.  
  9570.  
  9571.  
  9572.  
  9573.  
  9574.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  9575.  
  9576.  # purport to relate to Canada, or to any other real culture.)              1
  9577.  # The proposed standard defines a 4-weight collation, such that
  9578.  # in the first pass, characters are compared without regard to
  9579.  # case or accents; in second pass, backwards compare without
  9580.  # regard to case; in the third pass, forward compare without
  9581.  # regard to diacriticals.  In the 3 first passes, non-alphabetic           2
  9582.  # characters are ignored; in the fourth pass, only special
  9583.  # characters are considered, such that "The string that has a
  9584.  # special character in the lowest position comes first.  If two
  9585.  # strings have a special character in the same position, the
  9586.  # collation value of the special character determines ordering.
  9587.  #
  9588.  # Only a subset of the character set is used here; mostly to
  9589.  # illustrate the set-up.
  9590.  #
  9591.                                                                             2
  9592.  #
  9593.  collating-symbol <LOW_VALUE>                                               2
  9594.  collating-symbol <LOWER-CASE>
  9595.  collating-symbol <SUBSCRIPT-LOWER>
  9596.  collating-symbol <SUPERSCRIPT-LOWER>
  9597.  collating-symbol <UPPER-CASE>
  9598.  collating-symbol <NO-ACCENT>
  9599.  collating-symbol <PECULIAR>
  9600.  collating-symbol <LIGATURE>
  9601.  collating-symbol <ACUTE>
  9602.  collating-symbol <GRAVE>
  9603.  # Further collating-symbols follow.
  9604.  #
  9605.  # Properly, the standard does not include any multi-character
  9606.  # collating elements; the one below is added for completeness.
  9607.  #
  9608.  collating_element <ch> from <c><h>
  9609.  collating_element <CH> from <C><H>
  9610.  collating_element <Ch> from <C><h>
  9611.  #
  9612.  order_start forward;backward;forward;forward,position
  9613.  #
  9614.  # Collating symbols are specified first in the sequence to allocate
  9615.  # basic collation values to them, lower that than of any character.
  9616.        
  9617.  <LOW_VALUE>                                                            2
  9618.  <LOWER-CASE>
  9619.  <SUBSCRIPT-LOWER>
  9620.  <SUPERSCRIPT-LOWER>
  9621.  <UPPER-CASE>
  9622.  <NO-ACCENT>
  9623.  <PECULIAR>
  9624.  <LIGATURE>
  9625.  
  9626.  
  9627.                Copyright c 1991 IEEE.  All rights reserved.
  9628.       This is an unapproved IEEE Standards Draft, subject to change.
  9629.  
  9630.  
  9631.  
  9632.  
  9633.  
  9634.  116                                2 Terminology and General Requirements
  9635.  
  9636.  
  9637.  
  9638.  
  9639.  
  9640.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  9641.  
  9642.  <ACUTE>
  9643.  <GRAVE>
  9644.  <RING-ABOVE>
  9645.  <DIAERESIS>
  9646.  <TILDE>
  9647.  # Further collating symbols are given a basic collating value here.
  9648.  #
  9649.  # Here follows special characters.
  9650.  <space>        IGNORE;IGNORE;IGNORE;<space>
  9651.  # Other special characters follow here.
  9652.  #
  9653.  # Here comes the regular characters.
  9654.  <a>            <a>;<NO-ACCENT>;<LOWER-CASE>;IGNORE
  9655.  <A>            <a>;<NO-ACCENT>;<UPPER-CASE>;IGNORE
  9656.  <a-acute>      <a>;<ACUTE>;<LOWER-CASE>;IGNORE
  9657.  <A-acute>      <a>;<ACUTE>;<UPPER-CASE>;IGNORE
  9658.  <a-grave>      <a>;<GRAVE>;<LOWER-CASE>;IGNORE
  9659.  <A-grave>      <a>;<GRAVE>;<UPPER-CASE>;IGNORE
  9660.  <ae>           <a><e>;<LIGATURE><LIGATURE>;<LOWER-CASE><LOWER-CASE>;IGNORE
  9661.  <AE>           <a><e>;<LIGATURE><LIGATURE>;<UPPER-CASE><UPPER-CASE>;IGNORE
  9662.  <b>            <b>;<NO-ACCENT>;<LOWER-CASE>;IGNORE
  9663.  <B>            <b>;<NO-ACCENT>;<UPPER-CASE>;IGNORE
  9664.  <c>            <c>;<NO-ACCENT>;<LOWER-CASE>;IGNORE
  9665.  <C>            <c>;<NO-ACCENT>;<UPPER-CASE>;IGNORE
  9666.  <ch>           <ch>;<NO-ACCENT>;<LOWER-CASE>;IGNORE
  9667.  <Ch>           <ch>;<NO-ACCENT>;<PECULIAR>;IGNORE
  9668.  <CH>           <ch>;<NO-ACCENT>;<UPPER-CASE>;IGNORE
  9669.  #
  9670.  # As an example, the strings "Bach" and "bach" could be encoded (for
  9671.  # compare purposes) as:
  9672.  # "Bach"  <b>;<a>;<ch>;<LOW_VALUE>;<NO_ACCENT>;<NO_ACCENT>;\               2
  9673.  #              <NO_ACCENT>;<LOW_VALUE>;<UPPER>;<LOWER>;<LOWER>;<NULL>      2
  9674.  # "bach"  <b>;<a>;<ch>;<LOW_VALUE>;<NO_ACCENT>;<NO_ACCENT>;\               2
  9675.  #              <NO_ACCENT>;<LOW_VALUE>;<LOWER>;<LOWER>;<LOWER>;<NULL>      2
  9676.  #
  9677.  # The two strings are equal in pass 1 and 2, but differ in pass 3.
  9678.  #
  9679.  # Further characters follow.
  9680.  #
  9681.  UNDEFINED      IGNORE;IGNORE;IGNORE;IGNORE
  9682.  #
  9683.  order_end
  9684.  #
  9685.  END LC_COLLATE
  9686.  #
  9687.  LC_MONETARY
  9688.  int_curr_symbol         "USD "
  9689.  currency_symbol         "$"
  9690.  mon_decimal_point       "."
  9691.  
  9692.  
  9693.                Copyright c 1991 IEEE.  All rights reserved.
  9694.       This is an unapproved IEEE Standards Draft, subject to change.
  9695.  
  9696.  
  9697.  
  9698.  
  9699.  
  9700.  2.5 Locale                                                            117
  9701.  
  9702.  
  9703.  
  9704.  
  9705.  
  9706.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  9707.  
  9708.  mon_grouping            3;0
  9709.  positive_sign           ""
  9710.  negative_sign           "-"
  9711.  p_cs_precedes           1
  9712.  n_sign_posn             0
  9713.  END LC_MONETARY
  9714.  #
  9715.  LC_NUMERIC
  9716.  copy "US_en.ASCII"                                                         1
  9717.  END LC_NUMERIC
  9718.  #
  9719.  LC_TIME
  9720.  abday       "Sun";"Mon";"Tue";"Wed";"Thu";"Fri";"Sat"
  9721.  #
  9722.  day         "Sunday";"Monday";"Tuesday";"Wednesday";\
  9723.              "Thursday";"Friday";"Saturday"
  9724.  #
  9725.  abmon       "Jan";"Feb";"Mar";"Apr";"May";"Jun";\
  9726.              "Jul";"Aug";"Sep";"Oct";"Nov";"Dec"
  9727.  #
  9728.  mon         "January";"February";"March";"April";\
  9729.              "May";"June";"July";"August";"September";\
  9730.              "October";"November";"December"
  9731.  #
  9732.  d_t_fmt     "%a %b %d %T %Z %Y\n"
  9733.  END LC_TIME
  9734.  #
  9735.  LC_MESSAGES
  9736.  yesexpr     "^([yY][[:alpha:]]*)|(OK)"                                     1
  9737.  #
  9738.  noexpr      "^[nN][[:alpha:]]*"                                            1
  9739.  END LC_MESSAGES
  9740.  
  9741.  END_RATIONALE
  9742.  
  9743.  
  9744.  
  9745.  
  9746.  
  9747.  
  9748.  
  9749.  
  9750.  
  9751.  
  9752.  
  9753.  
  9754.  
  9755.  
  9756.  
  9757.  
  9758.  
  9759.                Copyright c 1991 IEEE.  All rights reserved.
  9760.       This is an unapproved IEEE Standards Draft, subject to change.
  9761.  
  9762.  
  9763.  
  9764.  
  9765.  
  9766.  118                                2 Terminology and General Requirements
  9767.  
  9768.  
  9769.  
  9770.  
  9771.  
  9772.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  9773.  
  9774.  2.6  Environment Variables
  9775.  
  9776.  Environment variables defined in this clause affect the operation of
  9777.  multiple utilities and applications.  There are other environment
  9778.  variables that are of interest only to specific utilities.  Environment
  9779.  variables that apply to a single utility only are defined as part of the
  9780.  utility description.  See the Environment Variables subclause of the
  9781.  utility descriptions for information on environment variable usage.
  9782.  
  9783.  The value of an environment variable is a string of characters, as
  9784.  described in 2.7 in POSIX.1 {8}.
  9785.  
  9786.  Environment variable names used by the standard utilities shall consist
  9787.  solely of uppercase letters, digits, and the _ (underscore) from the
  9788.  characters defined in 2.4.  The namespace of environment variable names
  9789.  containing lowercase letters shall be reserved for applications.
  9790.  Applications can define any environment variables with names from this
  9791.  namespace without modifying the behavior of the standard utilities.
  9792.  
  9793.  If the following variables are present in the environment during the
  9794.  execution of an application or utility, they are given the meaning
  9795.  described below.  They may be put into the environment, or changed, by
  9796.  either the implementation or the user.  If they are defined in the
  9797.  utility's environment, the standard utilities assume they have the
  9798.  specified meaning.  Conforming applications shall not set these
  9799.  environment variables to have meanings other than as described.  See 7.2
  9800.  and 3.12 for methods of accessing these variables.
  9801.  
  9802.     HOME             A pathname of the user's home directory.
  9803.  
  9804.     LANG             This variable shall determine the locale category for  1
  9805.                      any category not specifically selected via a variable  1
  9806.                      starting with LC_.  LANG and the LC_ variables can be  1
  9807.                      used by applications to determine the language for
  9808.                      messages and instructions, collating sequences, date
  9809.                      formats, etc.  Additional semantics of this variable,
  9810.                      if any, are implementation defined.
  9811.  
  9812.     LC_ALL           This variable shall override the value of the LANG
  9813.                      variable and the value of any of the other variables
  9814.                      starting with LC_.
  9815.  
  9816.     LC_COLLATE       This variable shall determine the locale category for
  9817.                      character collation information within bracketed
  9818.                      regular expressions and for sorting.  This
  9819.                      environment variable determines the behavior of
  9820.                      ranges, equivalence classes, and multicharacter
  9821.                      collating elements.  Additional semantics of this
  9822.                      variable, if any, are implementation defined.
  9823.  
  9824.  
  9825.                Copyright c 1991 IEEE.  All rights reserved.
  9826.       This is an unapproved IEEE Standards Draft, subject to change.
  9827.  
  9828.  
  9829.  
  9830.  
  9831.  
  9832.  2.6 Environment Variables                                             119
  9833.  
  9834.  
  9835.  
  9836.  
  9837.  
  9838.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  9839.  
  9840.     LC_CTYPE         This variable shall determine the locale category for
  9841.                      character handling functions.  This environment
  9842.                      variable shall determine the interpretation of
  9843.                      sequences of bytes of text data as characters (e.g.,
  9844.                      single- versus multibyte characters), the
  9845.                      classification of characters (e.g., alpha, digit,
  9846.                      graph), and the behavior of character classes.
  9847.                      Additional semantics of this variable, if any, are
  9848.                      implementation defined.
  9849.  
  9850.     LC_MESSAGES      This variable shall determine the locale category for
  9851.                      processing affirmative and negative responses and the
  9852.                      language and cultural conventions in which messages
  9853.                      should be written.  Additional semantics of this
  9854.                      variable, if any, are implementation defined.  The
  9855.                      language and cultural conventions of diagnostic and
  9856.                      informative messages whose format is unspecified by
  9857.                      this standard should be affected by the setting of
  9858.                      LC_MESSAGES.
  9859.  
  9860.     LC_MONETARY      This variable shall determine the locale category for
  9861.                      monetary-related numeric formatting information.
  9862.                      Additional semantics of this variable, if any, are
  9863.                      implementation defined.
  9864.  
  9865.     LC_NUMERIC       This variable shall determine the locale category for
  9866.                      numeric formatting (for example, thousands separator
  9867.                      and radix character) information.  Additional
  9868.                      semantics of this variable, if any, are
  9869.                      implementation defined.
  9870.  
  9871.     LC_TIME          This variable shall determine the locale category for
  9872.                      date and time formatting information.  Additional
  9873.                      semantics of this variable, if any, are
  9874.                      implementation defined.
  9875.  
  9876.     LOGNAME          The user's login name.
  9877.  
  9878.     PATH             The sequence of path prefixes that certain functions
  9879.                      and utilities apply in searching for an executable
  9880.                      file known only by a filename.  The prefixes shall be
  9881.                      separated by a colon (:).  When a nonzero-length
  9882.                      prefix is applied to this filename, a slash shall be
  9883.                      inserted between the prefix and the filename.  A
  9884.                      zero-length prefix is an obsolescent feature that
  9885.                      indicates the current working directory.  It appears
  9886.                      as two adjacent colons (::), as an initial colon
  9887.                      preceding the rest of the list, or as a trailing
  9888.                      colon following the rest of the list.  A Strictly
  9889.  
  9890.  
  9891.                Copyright c 1991 IEEE.  All rights reserved.
  9892.       This is an unapproved IEEE Standards Draft, subject to change.
  9893.  
  9894.  
  9895.  
  9896.  
  9897.  
  9898.  120                                2 Terminology and General Requirements
  9899.  
  9900.  
  9901.  
  9902.  
  9903.  
  9904.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  9905.  
  9906.                      Conforming POSIX.2 Application shall use an actual
  9907.                      pathname (such as '.') to represent the current
  9908.                      working directory in PATH.  The list shall be
  9909.                      searched from beginning to end, applying the filename
  9910.                      to each prefix, until an executable file with the
  9911.                      specified name and appropriate execution permissions
  9912.                      is found.  If the pathname being sought contains a
  9913.                      slash, the search through the path prefixes shall not
  9914.                      be performed.  If the pathname begins with a slash,
  9915.                      the specified path shall be resolved as described in
  9916.                      2.2.2.104.  If PATH is unset or is set to null, the
  9917.                      path search is implementation-defined.
  9918.  
  9919.     SHELL            A pathname of the user's preferred command language
  9920.                      interpreter.  If this interpreter does not conform to
  9921.                      the shell command language in Section 3, utilities
  9922.                      may behave differently than described in this
  9923.                      standard.
  9924.  
  9925.     TMPDIR           A pathname of a directory made available for programs
  9926.                      that need a place to create temporary files.
  9927.  
  9928.     TERM             The terminal type for which output is to be prepared.
  9929.                      This information is used by utilities and application
  9930.                      programs wishing to exploit special capabilities
  9931.                      specific to a terminal.  The format and allowable
  9932.                      values of this environment variable are unspecified.
  9933.  
  9934.     TZ               Time-zone information.  The format is described in
  9935.                      POSIX.1 {8} 8.1.1.
  9936.  
  9937.  The environment variables LANG, LC_ALL, LC_COLLATE, LC_CTYPE,
  9938.  LC_MESSAGES, LC_MONETARY, LC_NUMERIC, and LC_TIME (LC_*) provide for the
  9939.  support of internationalized applications.  The standard utilities shall
  9940.  make use of these environment variables as described in this clause and
  9941.  the individual Environment Variables subclauses for the utilities.  If
  9942.  these variables specify locale categories that are not based upon the
  9943.  same underlying code set, the results are unspecified.
  9944.  
  9945.  For utilities used in internationalized applications, if the LC_ALL is
  9946.  not set in the environment or is set to the empty string, and if any of
  9947.  LC_* variables is not set in the environment or is set to the empty
  9948.  string, the operational behavior of the utility for the corresponding
  9949.  locale category shall be determined by the setting of the LANG
  9950.  environment variable.  If the LANG environment variable is not set or is
  9951.  set to the empty string, the implementation-defined default locale shall
  9952.  be used.
  9953.  
  9954.  
  9955.  
  9956.  
  9957.                Copyright c 1991 IEEE.  All rights reserved.
  9958.       This is an unapproved IEEE Standards Draft, subject to change.
  9959.  
  9960.  
  9961.  
  9962.  
  9963.  
  9964.  2.6 Environment Variables                                             121
  9965.  
  9966.  
  9967.  
  9968.  
  9969.  
  9970.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  9971.  
  9972.  If LANG (or any of the LC_* environment variables) contains the value
  9973.  "C", or the value "POSIX", the POSIX Locale shall be selected and the
  9974.  standard utilities shall behave in accordance with the rules in the 2.5.1
  9975.  for the associated category.
  9976.  
  9977.  If LANG (or any of the LC_* environment variables) begins with a slash,
  9978.  it shall be interpreted as the pathname of a file that was created in the
  9979.  output format used by the localedef utility; see 4.35.6.3.  Referencing
  9980.  such a pathname shall result in that locale being used for the category
  9981.  indicated.
  9982.  
  9983.  If LANG (or any of the LC_* environment variables) contains one of a set
  9984.  of implementation-defined values, the standard utilities shall behave in
  9985.  accordance with the rules in a corresponding implementation-defined
  9986.  locale description for the associated category.
  9987.  
  9988.  If LANG (or any of the LC_* environment variables) contains a value that
  9989.  the implementation does not recognize, the behavior is unspecified.
  9990.  
  9991.  Additional criteria for determining a valid locale name are
  9992.  implementation defined.
  9993.  
  9994.  BEGIN_RATIONALE
  9995.  
  9996.  
  9997.  2.6.1  Environment Variables Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  9998.         _P_1_0_0_3._2)
  9999.  
  10000.  The standard is worded so that the specified variables _m_a_y be provided to
  10001.  the application.  There is no way that the implementation can guarantee
  10002.  that a utility will ever see an environment variable, as a parent process
  10003.  can change the environment for its children.  The env -i command in this
  10004.  standard and the POSIX.1 {8} _e_x_e_c family both offer ways to remove any of
  10005.  these variables from the environment.
  10006.  
  10007.  The language about locale implies that any utilities written in Standard
  10008.  C and conforming to POSIX.2 must issue the following call:
  10009.  
  10010.        setlocale(LC_ALL, "")
  10011.  
  10012.  If this were omitted, the C Standard {7} specifies that the C Locale
  10013.  would be used.
  10014.  
  10015.  If any of the environment variables is invalid, it makes sense to default
  10016.  to an implementation-defined, consistent locale environment.  It is more
  10017.  confusing for a user to have partial settings occur in case of a mistake.
  10018.  All utilities would then behave in one language/cultural environment.
  10019.  Furthermore, it provides a way of forcing the whole environment to be the
  10020.  implementation-defined default.  Disastrous results could occur if a
  10021.  
  10022.  
  10023.                Copyright c 1991 IEEE.  All rights reserved.
  10024.       This is an unapproved IEEE Standards Draft, subject to change.
  10025.  
  10026.  
  10027.  
  10028.  
  10029.  
  10030.  122                                2 Terminology and General Requirements
  10031.  
  10032.  
  10033.  
  10034.  
  10035.  
  10036.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  10037.  
  10038.  pipeline of utilities partially use the environment variables in
  10039.  different ways.  In this case, it would be appropriate for utilities that
  10040.  use LANG and related variables to exit with an error if any of the
  10041.  variables are invalid.  For example, users typing individual commands at
  10042.  a terminal might want date to work if LC_MONETARY is invalid as long as
  10043.  LC_TIME is valid.  Since these are conflicting reasonable alternatives,
  10044.  POSIX.2 leaves the results unspecified if the locale environment
  10045.  variables would not produce a complete locale matching the user's
  10046.  specification.
  10047.  
  10048.  The locale settings of individual categories cannot be truly independent
  10049.  and still guarantee correct results.  For example, when collating two
  10050.  strings, characters must first be extracted from each string (governed by
  10051.  LC_CTYPE) before being mapped to collating elements (governed by
  10052.  LC_COLLATE) for comparison.  That is, if LC_CTYPE is causing parsing
  10053.  according to the rules of a large, multibyte code set (potentially
  10054.  returning 20000 or more distinct character code set values), but
  10055.  LC_COLLATE is set to handle only an 8-bit code set with 256 distinct
  10056.  characters, meaningful results are obviously impossible.
  10057.  
  10058.  The LC_MESSAGES variable affects the language of messages generated by
  10059.  the standard utilities.  This standard does not provide a means whereby
  10060.  applications can easily be written to perform similar feats.  Future
  10061.  versions of POSIX.1 {8} and POSIX.2 are expected to provide both
  10062.  functions and utilities to accomplish multilanguage messaging (using
  10063.  message catalogs), but such facilities were not ready for standardization
  10064.  at the time the initial versions of the standards were developed.
  10065.  
  10066.  This clause is not a full list of all environment variables, but only
  10067.  those of importance to multiple utilities.  Nevertheless, to satisfy some
  10068.  members of the balloting group, here is a list of the other environment
  10069.  variable symbols mentioned in this standard:
  10070.  
  10071.                Variable   Utility        Variable    Utility
  10072.                ________   _______        _________   _______
  10073.                CDPATH     cd             MAKEFLAGS   make
  10074.                COLUMNS    ls             OPTARG      getopts
  10075.                DEAD       mailx          OPTIND      getopts
  10076.                IFS        sh             PRINTER     lp                     1
  10077.                LPDEST     lp             PS1         sh
  10078.                MAIL       sh             PS2         sh
  10079.                MAILRC     mailx
  10080.  
  10081.  The description of PATH is similar to that in POSIX.1 {8}, except:
  10082.  
  10083.      - The behavior of a null prefix is marked obsolescent in favor of
  10084.        using a real pathname.  This was done at the behest of some members
  10085.        of the balloting group, who apparently felt it offered a more
  10086.        secure environment, where the current directory would not be
  10087.        selected unintentionally.
  10088.  
  10089.                Copyright c 1991 IEEE.  All rights reserved.
  10090.       This is an unapproved IEEE Standards Draft, subject to change.
  10091.  
  10092.  
  10093.  
  10094.  
  10095.  
  10096.  2.6 Environment Variables                                             123
  10097.  
  10098.  
  10099.  
  10100.  
  10101.  
  10102.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  10103.  
  10104.      - The POSIX.1 {8} _e_x_e_c description requires an implementation-defined
  10105.        path search when PATH is ``not present.''  POSIX.2 spells out that
  10106.        this means ``unset or set to null.''  Many implementations
  10107.        historically have used a default value of /bin and /usr/bin.
  10108.        POSIX.2 does not mandate that this default path be identical to
  10109.        that retrieved from getconf _CS_PATH because it is likely that a
  10110.        transition to POSIX.2 conformance will see the newly-standardized
  10111.        utilities in another directory that needs to be isolated from some
  10112.        historical applications.
  10113.  
  10114.      - The POSIX.1 {8} PATH description is ambiguous about whether an
  10115.        ``executable file'' means one that has the appropriate permissions
  10116.        for the searching process to execute it.  One reading would say
  10117.        that a file with any of the execution bits set on would satisfy the
  10118.        search and that an [EACCES] could be returned at that point.  This
  10119.        is not the way historical systems work and POSIX.2 has clarified it
  10120.        to mean that the path search will continue until it finds the name
  10121.        with the execute permissions that would allow the process to
  10122.        execute it.  (The case of the [ENOEXEC] error is handled in the
  10123.        text of 3.9.1.1.)
  10124.  
  10125.  The terminology ``beginning to end'' is used in PATH to avoid the
  10126.  noninternationalized ``left to right.''  There is no way to have a colon
  10127.  character embedded within a pathname that is part of the PATH variable
  10128.  string.  Colon is not a member of the portable filename character set, so
  10129.  this should not be a problem.  A portable application can retrieve a
  10130.  default PATH value (that will allow access to all the standard utilities)
  10131.  from the system using the command:
  10132.  
  10133.        getconf _CS_PATH
  10134.  
  10135.  See the rationale with command for an example of using this.
  10136.  
  10137.  The SHELL variable names the user's preferred shell; it is a guide to
  10138.  applications.  There is no direct requirement that that shell conform to
  10139.  this standard--that decision should rest with the user.  It is the
  10140.  intention of the developers of this standard that alternative shells be
  10141.  permitted, if the user chooses to develop or acquire one.  An operating
  10142.  system that builds its shell into the ``kernel'' in such a manner that
  10143.  alternative shells would be impossible does not conform to the spirit of
  10144.  the standard.
  10145.  
  10146.  The following environment variables are not currently used by the
  10147.  standard utilities (although they may be by future UPE utilities).
  10148.  Implementations should reserve the names for the following purposes:
  10149.  
  10150.     EDITOR      The name of the user's preferred text file editor.  The
  10151.                 value of this variable is the name of a utility:  either a
  10152.                 pathname containing a slash, or a filename to be located
  10153.  
  10154.  
  10155.                Copyright c 1991 IEEE.  All rights reserved.
  10156.       This is an unapproved IEEE Standards Draft, subject to change.
  10157.  
  10158.  
  10159.  
  10160.  
  10161.  
  10162.  124                                2 Terminology and General Requirements
  10163.  
  10164.  
  10165.  
  10166.  
  10167.  
  10168.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  10169.  
  10170.                 using the PATH environment variable.
  10171.  
  10172.     VISUAL      The name of the user's preferred ``visual,'' or full-
  10173.                 screen, text file editor.  The value of this variable is
  10174.                 the name of a utility:  either a pathname containing a
  10175.                 slash, or a filename to be located using the PATH
  10176.                 environment variable.
  10177.  
  10178.  The decision to restrict conforming systems to the use of digits,
  10179.  uppercase letters, and underscores for environment variable names allows
  10180.  applications to use lowercase letters in their environment variable names
  10181.  without conflicting with any conforming system.
  10182.  
  10183.  PROCLANG was added to an earlier draft for internationalized
  10184.  applications, but was removed from the standard because the working group
  10185.  determined that it was not of use.
  10186.  
  10187.  USER was removed from an earlier draft because it was an unreasonable
  10188.  duplication of LOGNAME.
  10189.  
  10190.  END_RATIONALE
  10191.  
  10192.  
  10193.  
  10194.  
  10195.  
  10196.  
  10197.  
  10198.  
  10199.  
  10200.  
  10201.  
  10202.  
  10203.  
  10204.  
  10205.  
  10206.  
  10207.  
  10208.  
  10209.  
  10210.  
  10211.  
  10212.  
  10213.  
  10214.  
  10215.  
  10216.  
  10217.  
  10218.  
  10219.  
  10220.  
  10221.                Copyright c 1991 IEEE.  All rights reserved.
  10222.       This is an unapproved IEEE Standards Draft, subject to change.
  10223.  
  10224.  
  10225.  
  10226.  
  10227.  
  10228.  2.6 Environment Variables                                             125
  10229.  
  10230.  
  10231.  
  10232.  
  10233.  
  10234.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  10235.  
  10236.  2.7  Required Files
  10237.  
  10238.  The following directories shall exist on conforming systems and shall be
  10239.  used as described.  Strictly Conforming POSIX.2 Applications shall not
  10240.  assume the ability to create files in any of these directories.
  10241.  
  10242.     /           The root directory.
  10243.  
  10244.     /dev        Contains /dev/null and /dev/tty, described below.
  10245.  
  10246.  The following directory shall exist on conforming systems and shall be
  10247.  used as described.
  10248.  
  10249.     /tmp        A directory made available for programs that need a place
  10250.                 to create temporary files.  Applications shall be allowed
  10251.                 to create files in this directory, but shall not assume
  10252.                 that such files are preserved between invocations of the
  10253.                 application.
  10254.  
  10255.  The following files shall exist on conforming systems and shall be both
  10256.  readable and writable.
  10257.  
  10258.     /dev/null   An infinite data source/sink.  Data written to /dev/null
  10259.                 is discarded.  Reads from /dev/null always return end-of-
  10260.                 file (EOF).
  10261.  
  10262.     /dev/tty    In each process, a synonym for the controlling terminal
  10263.                 associated with the process group of that process, if any.
  10264.                 It is useful for programs or shell procedures that wish to
  10265.                 be sure of writing messages to or reading data from the
  10266.                 terminal no matter how output has been redirected.
  10267.  
  10268.  BEGIN_RATIONALE
  10269.  
  10270.  
  10271.  2.7.1  Required Files Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  10272.         _P_1_0_0_3._2)
  10273.  
  10274.  A description of the historical /usr/tmp was omitted, removing any
  10275.  concept of differences in emphasis between the / and /usr versions.  The
  10276.  descriptions of /bin, /usr/bin, /lib, and /usr/lib were omitted because
  10277.  they are not useful for applications.  In an early draft, a distinction
  10278.  was made between _s_y_s_t_e_m and _a_p_p_l_i_c_a_t_i_o_n directory usage, but this was not
  10279.  found to be useful.
  10280.  
  10281.  In Draft 8, /, /dev, /local, /usr/local, and /usr/man were removed.  The
  10282.  directories / and /dev were restored in Draft 9.  It was pointed out by
  10283.  several balloters that the notion of a hierarchical directory structure
  10284.  is key to other information presented in later sections of the standard.
  10285.  
  10286.  
  10287.                Copyright c 1991 IEEE.  All rights reserved.
  10288.       This is an unapproved IEEE Standards Draft, subject to change.
  10289.  
  10290.  
  10291.  
  10292.  
  10293.  
  10294.  126                                2 Terminology and General Requirements
  10295.  
  10296.  
  10297.  
  10298.  
  10299.  
  10300.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  10301.  
  10302.  (Previously, some had argued that special devices and temporary files
  10303.  could conceivably be handled without a directory structure on some
  10304.  implementations.  For example, the system could treat the characters
  10305.  ``/tmp'' as a special token that would store files using some non-POSIX
  10306.  file system structure.  This notion was rejected by the working group,
  10307.  which requires that all the files in this clause be implemented via POSIX
  10308.  file systems.)
  10309.  
  10310.  The /tmp directory is retained in the standard to accommodate historical
  10311.  applications that assume its availability.  Future implementations are
  10312.  encouraged to provide suitable directory names in TMPDIR and future
  10313.  applications are encouraged to use the contents of TMPDIR for creating
  10314.  temporary files.
  10315.  
  10316.  The standard files /dev/null and /dev/tty are required to be both
  10317.  readable and writable to allow applications to have the intended
  10318.  historical access to these files.
  10319.  
  10320.  END_RATIONALE
  10321.  
  10322.  
  10323.  
  10324.  
  10325.  
  10326.  
  10327.  
  10328.  
  10329.  
  10330.  
  10331.  
  10332.  
  10333.  
  10334.  
  10335.  
  10336.  
  10337.  
  10338.  
  10339.  
  10340.  
  10341.  
  10342.  
  10343.  
  10344.  
  10345.  
  10346.  
  10347.  
  10348.  
  10349.  
  10350.  
  10351.  
  10352.  
  10353.                Copyright c 1991 IEEE.  All rights reserved.
  10354.       This is an unapproved IEEE Standards Draft, subject to change.
  10355.  
  10356.  
  10357.  
  10358.  
  10359.  
  10360.  2.7 Required Files                                                    127
  10361.  
  10362.  
  10363.  
  10364.  
  10365.  
  10366.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  10367.  
  10368.  2.8  Regular Expression Notation
  10369.  
  10370.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _e_n_t_i_r_e _r_a_t_i_o_n_a_l_e _f_o_r _t_h_i_s _c_l_a_u_s_e _a_p_p_e_a_r_s _a_t _t_h_e _e_n_d
  10371.  _o_f _t_h_e _c_l_a_u_s_e.
  10372.  
  10373.  _R_e_g_u_l_a_r _E_x_p_r_e_s_s_i_o_n_s (REs) provide a mechanism to select specific strings
  10374.  from a set of character strings.
  10375.  
  10376.  Regular expressions are a context-independent syntax that can represent a
  10377.  wide variety of character sets and character set orderings, where these
  10378.  character sets are interpreted according to the current locale.  While
  10379.  many regular expressions can be interpreted differently depending on the
  10380.  current locale, many features, such as character class expressions,
  10381.  provide for contextual invariance across locales.
  10382.  
  10383.  The Basic Regular Expression (BRE) notation and construction rules in
  10384.  2.8.3 shall apply to most utilities supporting regular expressions.  Some
  10385.  utilities, instead, support the Extended Regular Expressions (ERE)
  10386.  described in 2.8.4; any exceptions for both cases are noted in the
  10387.  descriptions of the specific utilities using regular expressions.  Both
  10388.  BREs and EREs are supported by the Regular Expression Matching interface
  10389.  in 7.3.
  10390.  
  10391.  
  10392.  2.8.1  Regular Expression Definitions
  10393.  
  10394.  For the purposes of this clause, the following definitions apply.
  10395.  
  10396.  
  10397.  2.8.1.1  entire regular expression:  The concatenated set of one or more
  10398.  BREs or EREs that make up the pattern specified for string selection.
  10399.  
  10400.  2.8.1.2  matched:  A sequence of zero or more characters is said to be
  10401.  matched by a BRE or ERE when the characters in the sequence corresponds
  10402.  to a sequence of characters defined by the pattern.
  10403.  
  10404.  Matching shall be based on the bit pattern used for encoding the           1
  10405.  character, not on the graphic representation of the character.             1
  10406.  
  10407.  The search for a matching sequence shall start at the beginning of a
  10408.  string and stop when the first sequence matching the expression is found,
  10409.  where ``first'' is defined to mean ``begins earliest in the string.''  If
  10410.  the pattern permits a variable number of matching characters and thus
  10411.  there is more than one such sequence starting at that point, the longest   1
  10412.  such sequence shall be matched.  For example:  the BRE bb* matches the     1
  10413.  second through fourth characters of abbbc, and the ERE                     1
  10414.  (wee|week)(knights|night) matches all ten characters of weeknights.        1
  10415.  
  10416.  
  10417.  
  10418.  
  10419.                Copyright c 1991 IEEE.  All rights reserved.
  10420.       This is an unapproved IEEE Standards Draft, subject to change.
  10421.  
  10422.  
  10423.  
  10424.  
  10425.  
  10426.  128                                2 Terminology and General Requirements
  10427.  
  10428.  
  10429.  
  10430.  
  10431.  
  10432.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  10433.  
  10434.  Consistent with the whole match being the longest of the leftmost          1
  10435.  matches, each subpattern, from left to right, shall match the longest      1
  10436.  possible string.  For this purpose, a null string shall be considered to   2
  10437.  be longer than no match at all.  For example, matching the BRE \(.*\).*    2
  10438.  against abcdef, the subexpression (\1) is abcdef, and matching the BRE     2
  10439.  \(a*\)* against bc, the subexpression (\1) is the null string.             2
  10440.  
  10441.  When a multicharacter collating element in a bracket expression (see       1
  10442.  2.8.3.2) is involved, the longest sequence shall be measured in            1
  10443.  characters consumed from the string to be matched; i.e., the collating     1
  10444.  element counts not as one element, but as the number of characters it      1
  10445.  matches.                                                                   1
  10446.  
  10447.  
  10448.  2.8.1.3  BRE [ERE] matching a single character:  A BRE or ERE that
  10449.  matches either a single character or a single collating element.
  10450.  
  10451.  Only a BRE or ERE of this type that includes a bracket expression (see     1
  10452.  2.8.3.2) can match a collating element.                                    1
  10453.  
  10454.  2.8.1.4  BRE [ERE] matching multiple characters:  A BRE or ERE that
  10455.  matches a concatenation of single characters or collating elements.
  10456.  
  10457.  Such a BRE or ERE is made up from a _B_R_E (_E_R_E) _m_a_t_c_h_i_n_g _a _s_i_n_g_l_e _c_h_a_r_a_c_t_e_r
  10458.  and _B_R_E (_E_R_E) _s_p_e_c_i_a_l _c_h_a_r_a_c_t_e_rs.                                          1
  10459.  
  10460.  
  10461.  2.8.2  Regular Expression General Requirements
  10462.  
  10463.  The requirements in this subclause shall apply to both basic and extended
  10464.  regular expressions.
  10465.  
  10466.  The use of regular expressions is generally associated with text
  10467.  processing; i.e., REs (BREs and EREs) operate on text strings; i.e., zero
  10468.  or more characters followed by an end-of-string delimiter (typically
  10469.  NUL).  Some utilities employing regular expressions limit the processing
  10470.  to lines; i.e., zero or more characters followed by a <newline>.  In the
  10471.  regular expression processing described in this standard, the <newline>
  10472.  character is regarded as an ordinary character.  This standard specifies   1
  10473.  within the individual descriptions of those standard utilities employing   1
  10474.  regular expressions whether they permit matching of <newline>s; if not     1
  10475.  stated otherwise, the use of literal <newline>s or any escape sequence     1
  10476.  equivalent produces undefined results.                                     1
  10477.  
  10478.  The interfaces specified in this standard do not permit the inclusion of
  10479.  a NUL character in an RE or in the string to be matched.  If during the
  10480.  operation of a standard utility a NUL is included in the text designated
  10481.  to be matched, that NUL may designate the end of the text string for the   1
  10482.  purposes of matching.                                                      1
  10483.  
  10484.  
  10485.                Copyright c 1991 IEEE.  All rights reserved.
  10486.       This is an unapproved IEEE Standards Draft, subject to change.
  10487.  
  10488.  
  10489.  
  10490.  
  10491.  
  10492.  2.8 Regular Expression Notation                                       129
  10493.  
  10494.  
  10495.  
  10496.  
  10497.  
  10498.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  10499.  
  10500.  When a standard utility or function that uses regular expressions
  10501.  specifies that pattern matching shall be performed without regard to the
  10502.  case (upper- or lower-) of either data or patterns, then when each
  10503.  character in the string is matched against the pattern, not only the
  10504.  character, but also its case counterpart (if any), shall be matched.
  10505.  
  10506.  The implementation shall support any regular expression that does not
  10507.  exceed 256 bytes in length.
  10508.  
  10509.  This clause uses the term ``invalid'' for certain constructs or            1
  10510.  conditions.  Invalid REs shall cause the utility or function using the RE  1
  10511.  to generate an error condition.  When ``invalid'' is not used, violations  1
  10512.  of the specified syntax or semantics for REs produce undefined results:    1
  10513.  this may entail an error, enabling an extended syntax for that RE, or      1
  10514.  using the construct in error as literal characters to be matched.          1
  10515.  
  10516.  
  10517.  2.8.3  Basic Regular Expressions
  10518.  
  10519.  
  10520.  2.8.3.1  BREs Matching a Single Character or Collating Element
  10521.  
  10522.  A BRE ordinary character, a special character preceded by a backslash, or
  10523.  a period shall match a single character.  A bracket expression shall
  10524.  match a single character or a single collating element.
  10525.  
  10526.  2.8.3.1.1  BRE Ordinary Characters
  10527.  
  10528.  An ordinary character is a BRE that matches itself:  any character in the
  10529.  supported character set, except for the BRE special characters listed in
  10530.  2.8.3.1.2.
  10531.  
  10532.  The interpretation of an ordinary character preceded by a backslash (\)
  10533.  is undefined, except for:
  10534.  
  10535.      (1)  The characters ), (, {, and }.
  10536.  
  10537.      (2)  The digits 1 through 9 (see 2.8.3.3).
  10538.  
  10539.      (3)  A character inside a bracket expression.
  10540.  
  10541.  2.8.3.1.2  BRE Special Characters
  10542.  
  10543.  A _B_R_E _s_p_e_c_i_a_l _c_h_a_r_a_c_t_e_r has special properties in certain contexts.        1
  10544.  Outside of those contexts, or when preceded by a backslash, such a         1
  10545.  character shall be a BRE that matches the special character itself.  The   1
  10546.  BRE special characters and the contexts in which they have their special
  10547.  meaning are:
  10548.  
  10549.  
  10550.  
  10551.                Copyright c 1991 IEEE.  All rights reserved.
  10552.       This is an unapproved IEEE Standards Draft, subject to change.
  10553.  
  10554.  
  10555.  
  10556.  
  10557.  
  10558.  130                                2 Terminology and General Requirements
  10559.  
  10560.  
  10561.  
  10562.  
  10563.  
  10564.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  10565.  
  10566.     . [ \    The period, left-bracket, and backslash shall be special
  10567.              except when used in a bracket expression (see 2.8.3.2).  An
  10568.              expression containing a [ that is not preceded by a backslash
  10569.              and is not part of a bracket expression produces undefined     1
  10570.              results.                                                       1
  10571.  
  10572.     *        The asterisk is special except when used
  10573.  
  10574.               - In a bracket expression,                                    1
  10575.  
  10576.               - As the first character of an entire BRE (after an initial   1
  10577.                 ^, if any), or                                              1
  10578.  
  10579.               - As the first character of a subexpression (after an         1
  10580.                 initial ^, if any); see 2.8.3.3.                            1
  10581.  
  10582.     ^        The circumflex shall be special when used                      1
  10583.  
  10584.               - As an anchor (see 2.8.3.5) or,                              1
  10585.  
  10586.               - As the first character of a bracket expression (see         1
  10587.                 2.8.3.2).                                                   1
  10588.  
  10589.     $        The dollar-sign shall be special when used as an anchor.       1
  10590.  
  10591.  2.8.3.1.3  Periods in BREs
  10592.  
  10593.  A period (.), when used outside of a bracket expression, is a BRE that
  10594.  shall match any character in the supported character set except NUL.       1
  10595.  
  10596.  
  10597.  2.8.3.2  RE Bracket Expression
  10598.  
  10599.  A bracket expression (an expression enclosed in square brackets, []) is
  10600.  an RE that matches a single collating element contained in the nonempty    1
  10601.  set of collating elements represented by the bracket expression.           1
  10602.  
  10603.  The following rules and definitions apply to bracket expressions:
  10604.  
  10605.      (1)  A _b_r_a_c_k_e_t _e_x_p_r_e_s_s_i_o_n is either a matching list expression or a
  10606.           nonmatching list expression.  It consists of one or more
  10607.           expressions:  collating elements, collating symbols, equivalence  1
  10608.           classes, character classes, or range expressions.  Strictly
  10609.           Conforming POSIX.2 Applications shall not use range expressions,
  10610.           but conforming implementations shall support regular expressions
  10611.           containing range expressions.  The right-bracket (]) shall lose
  10612.           its special meaning and represent itself in a bracket expression
  10613.           if it occurs first in the list [after an initial circumflex (^),
  10614.           if any].  Otherwise, it shall terminate the bracket expression,
  10615.           unless it appears in a collating symbol (such as [.].]) or is     1
  10616.  
  10617.                Copyright c 1991 IEEE.  All rights reserved.
  10618.       This is an unapproved IEEE Standards Draft, subject to change.
  10619.  
  10620.  
  10621.  
  10622.  
  10623.  
  10624.  2.8 Regular Expression Notation                                       131
  10625.  
  10626.  
  10627.  
  10628.  
  10629.  
  10630.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  10631.  
  10632.           the ending right-bracket for a collating symbol, equivalence      1
  10633.           class, or character class).  The special characters
  10634.  
  10635.                 .   *   [   \
  10636.  
  10637.           (period, asterisk, left-bracket, and backslash, respectively)
  10638.           shall lose their special meaning within a bracket expression.
  10639.  
  10640.           The character sequences
  10641.  
  10642.                 [.   [=    [:
  10643.  
  10644.           (left-bracket followed by a period, equals-sign, or colon) shall
  10645.           be special inside a bracket expression and are used to delimit
  10646.           collating symbols, equivalence class expressions, and character
  10647.           class expressions.  These symbols shall be followed by a valid
  10648.           expression and the matching terminating sequence .], =], or :],
  10649.           as described in the following items.
  10650.  
  10651.      (2)  A _m_a_t_c_h_i_n_g _l_i_s_t expression specifies a list that shall match any
  10652.           one of the expressions represented in the list.  The first
  10653.           character in the list shall not be the circumflex.  For example,
  10654.           [abc] is an RE that matches any of a, b, or c.
  10655.  
  10656.      (3)  A _n_o_n_m_a_t_c_h_i_n_g _l_i_s_t expression begins with a circumflex (^), and
  10657.           specifies a list that shall match any character or collating
  10658.           element except for the expressions represented in the list after  1
  10659.           the leading circumflex.  For example, [^abc] is an RE that
  10660.           matches any character or collating element except a, b, or c.     1
  10661.           The circumflex shall have this special meaning only when it
  10662.           occurs first in the list, immediately following the left-
  10663.           bracket.
  10664.  
  10665.      (4)  A _c_o_l_l_a_t_i_n_g _s_y_m_b_o_l is a collating element enclosed within
  10666.           bracket-period ([. .]) delimiters.  Collating elements are
  10667.           defined as described in 2.5.2.2.4.  Multicharacter collating      1
  10668.           elements shall be represented as collating symbols when it is
  10669.           necessary to distinguish them from a list of the individual
  10670.           characters that make up the multicharacter collating element.
  10671.           For example, if the string ch is a collating element in the
  10672.           current collation sequence with the associated collating symbol
  10673.           <ch>, the expression [[.ch.]] shall be treated as an RE matching
  10674.           the character sequence ch, while [ch] shall be treated as an RE
  10675.           matching c or h.  Collating symbols shall be recognized only      1
  10676.           inside bracket expressions.  This implies that the RE [[.ch.]]*c
  10677.           shall match the first through fifth character in the string
  10678.           chchch.  If the string is not a collating element in the current
  10679.           collating sequence definition, or if the collating element has    1
  10680.           no characters associated with it (e.g., see the symbol <HIGH> in  1
  10681.  
  10682.  
  10683.                Copyright c 1991 IEEE.  All rights reserved.
  10684.       This is an unapproved IEEE Standards Draft, subject to change.
  10685.  
  10686.  
  10687.  
  10688.  
  10689.  
  10690.  132                                2 Terminology and General Requirements
  10691.  
  10692.  
  10693.  
  10694.  
  10695.  
  10696.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  10697.  
  10698.           the example collation definition shown in 2.5.2.2.4), the symbol  1
  10699.           shall be treated as an invalid expression.                        1
  10700.  
  10701.      (5)  An _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s _e_x_p_r_e_s_s_i_o_n shall represent the set of
  10702.           collating elements belonging to an equivalence class, as          1
  10703.           described in 2.5.2.2.4.  Only primary equivalence classes shall   1
  10704.           be recognized.  The class shall be expressed by enclosing any
  10705.           one of the collating elements in the equivalence class within
  10706.           bracket-equal ([= =]) delimiters.  For example, if a, a`, and a^
  10707.           belong to the same equivalence class, then [[=a=]b], [[=a`=]b],
  10708.           and [[=a^=]b] shall each be equivalent to [aa`a^b].  If the
  10709.           collating element does not belong to an equivalence class, the
  10710.           equivalence class expression shall be treated as a _c_o_l_l_a_t_i_n_g
  10711.           _s_y_m_b_o_l.
  10712.  
  10713.      (6)  A _c_h_a_r_a_c_t_e_r _c_l_a_s_s _e_x_p_r_e_s_s_i_o_n shall represent the set of
  10714.           characters belonging to a character class, as defined in the
  10715.           LC_CTYPE category in the current locale.  All character classes
  10716.           specified in the current locale shall be recognized.  A
  10717.           character class expression shall be expressed as a character
  10718.           class name enclosed within ``bracket-colon'' ([: :]) delimiters.
  10719.  
  10720.           Strictly conforming POSIX.2 applications shall only use the
  10721.           following character class expressions, which shall be supported
  10722.           on all conforming implementations:
  10723.  
  10724.                    [:alnum:]   [:cntrl:]   [:lower:]   [:space:]
  10725.                    [:alpha:]   [:digit:]   [:print:]   [:upper:]
  10726.                    [:blank:]   [:graph:]   [:punct:]   [:xdigit:]
  10727.  
  10728.      (7)  A _r_a_n_g_e _e_x_p_r_e_s_s_i_o_n represents the set of collating elements that
  10729.           fall between two elements in the current collation sequence,      1
  10730.           inclusively.  It shall be expressed as the starting point and     1
  10731.           the ending point separated by a hyphen (-).
  10732.  
  10733.           Range expressions shall not be used in Strictly Conforming
  10734.           POSIX.2 Applications because their behavior is dependent on the
  10735.           collating sequence.  Range expressions shall be supported by
  10736.           conforming implementations.
  10737.  
  10738.           In the following, all examples assume the collation sequence
  10739.           specified for the POSIX Locale, unless another collation
  10740.           sequence is specifically defined.
  10741.  
  10742.           The starting range point and the ending range point shall be a
  10743.           collating element or collating symbol.  An equivalence class      2
  10744.           expression used as a starting or ending point of a range          2
  10745.           expression produces unspecified results.  The ending range point  2
  10746.           shall collate equal to or higher than the starting range point;   2
  10747.  
  10748.  
  10749.                Copyright c 1991 IEEE.  All rights reserved.
  10750.       This is an unapproved IEEE Standards Draft, subject to change.
  10751.  
  10752.  
  10753.  
  10754.  
  10755.  
  10756.  2.8 Regular Expression Notation                                       133
  10757.  
  10758.  
  10759.  
  10760.  
  10761.  
  10762.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  10763.  
  10764.           otherwise the expression shall be treated as invalid.  The order
  10765.           used is the order in which the collating elements are specified
  10766.           in the current collation definition.  One-to-many mappings (see
  10767.           2.5.2.2) shall not be performed.  For example, assuming that the
  10768.           character eszet (B) is placed in the basic collation sequence
  10769.           after r and s, but before t, and that it maps to the sequence ss
  10770.           for collation purposes, then the expression [r-s] matches only r
  10771.           and s, but the expression [s-t] matches s, B, or t.
  10772.  
  10773.           The interpretation of range expressions where the ending range
  10774.           point also is the starting range point of a subsequent range
  10775.           expression is undefined.
  10776.  
  10777.           The hyphen character shall be treated as itself if it occurs
  10778.           first (after an initial ^, if any) or last in the list, or as an
  10779.           ending range point in a range expression.  As examples, the
  10780.           expressions [-ac] and [ac-] are equivalent and match any of the
  10781.           characters a, c, or -; the expressions [^-ac] and [^ac-] are
  10782.           equivalent and match any characters except a, c, or -; the        1
  10783.           expression [%--] matches any of the characters between % and -    1
  10784.           inclusive; the expression [--@] matches any of the characters
  10785.           between - and @, inclusive; and the expression [a--@] is
  10786.           invalid, because the letter a follows the symbol - in the POSIX
  10787.           Locale.  To use a hyphen as the starting range point, it shall
  10788.           either come first in the bracket expression or be specified as a
  10789.           collating symbol.  For example:  [][.-.]-0], which matches
  10790.           either a right bracket or any character or collating element      1
  10791.           that collates between hyphen and 0, inclusive.                    1
  10792.  
  10793.  
  10794.  2.8.3.3  BREs Matching Multiple Characters
  10795.  
  10796.  The following rules can be used to construct BREs matching multiple
  10797.  characters from BREs matching a single character:
  10798.  
  10799.      (1)  The concatenation of BREs shall match the concatenation of the
  10800.           strings matched by each component of the BRE.                     1
  10801.  
  10802.      (2)  A _s_u_b_e_x_p_r_e_s_s_i_o_n can be defined within a BRE by enclosing it
  10803.           between the character pairs \( and \).  Such a subexpression
  10804.           shall match whatever it would have matched without the \( and
  10805.           \), except that anchoring within subexpressions is optional       1
  10806.           behavior; see 2.8.3.5.  Subexpressions can be arbitrarily         1
  10807.           nested.                                                           1
  10808.  
  10809.      (3)  The _b_a_c_k_r_e_f_e_r_e_n_c_e expression \_n shall match the same (possibly    1
  10810.           empty) string of characters as was matched by a subexpression     1
  10811.           enclosed between \( and \) preceding the \_n. The character _n
  10812.           shall be a digit from 1 through 9, specifying the _n-th
  10813.           subexpression [the one that begins with the _n-th \( and ends
  10814.  
  10815.                Copyright c 1991 IEEE.  All rights reserved.
  10816.       This is an unapproved IEEE Standards Draft, subject to change.
  10817.  
  10818.  
  10819.  
  10820.  
  10821.  
  10822.  134                                2 Terminology and General Requirements
  10823.  
  10824.  
  10825.  
  10826.  
  10827.  
  10828.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  10829.  
  10830.           with the corresponding paired \)].  The expression is invalid if
  10831.           less than _n subexpressions precede the \_n.  For example, the
  10832.           expression ^\(.*\)\1$ matches a line consisting of two adjacent
  10833.           appearances of the same string, and the expression \(a\)*\1       2
  10834.           fails to match a.                                                 2
  10835.  
  10836.      (4)  When a BRE matching a single character, a subexpression, or a     1
  10837.           backreference is followed by the special character asterisk (*),  1
  10838.           together with that asterisk it shall match what zero or more      2
  10839.           consecutive occurrences of the BRE would match.  For example,     2
  10840.           [ab]* and [ab][ab] are equivalent when matching the string ab.    2
  10841.  
  10842.      (5)  When a BRE matching a single character, a subexpression, or a     1
  10843.           backreference is followed by an _i_n_t_e_r_v_a_l _e_x_p_r_e_s_s_i_o_n of the        1
  10844.           format \{_m\}, \{_m,\}, or \{_m,_n\}, together with that interval     1
  10845.           expression it shall match what repeated consecutive occurrences   2
  10846.           of the BRE would match.  The values of _m and _n shall be decimal   2
  10847.           integers in the range 0 _< _m _< _n _< {RE_DUP_MAX}, where _m           1
  10848.           specifies the exact or minimum number of occurrences and _n
  10849.           specifies the maximum number of occurrences.  The expression
  10850.           \{_m\} shall match exactly _m occurrences of the preceding BRE,
  10851.           \{_m,\} shall match at least _m occurrences, and \{_m,_n\} shall
  10852.           match any number of occurrences between _m and _n, inclusive.       1
  10853.  
  10854.           For example, in the string abababccccccd the BRE c\{3\} is
  10855.           matched by characters seven through nine, the BRE \(ab\)\{4,\}
  10856.           is not matched at all, and the BRE c\{1,3\}d is matched by
  10857.           characters ten through thirteen.
  10858.  
  10859.  The behavior of multiple adjacent duplication symbols (* and intervals)    1
  10860.  produces undefined results.                                                1
  10861.  
  10862.  
  10863.  2.8.3.4  BRE Precedence                                                    1
  10864.  
  10865.  The order of precedence shall be as shown in Table 2-12, from high to      1
  10866.  low.                                                                       1
  10867.  
  10868.  2.8.3.5  BRE Expression Anchoring
  10869.  
  10870.  A BRE can be limited to matching strings that begin or end a line; this    1
  10871.  is called _a_n_c_h_o_r_i_n_g.  The circumflex and dollar-sign special characters    1
  10872.  shall be considered BRE anchors in the following contexts:                 1
  10873.  
  10874.      (1)  A circumflex (^) shall be an anchor when used as the first        1
  10875.           character of an entire BRE.  The implementation may treat         1
  10876.           circumflex as an anchor when used as the first character of a     1
  10877.           subexpression.  The circumflex shall anchor the expression (or    1
  10878.           optionally subexpression) to the beginning of a string; only      1
  10879.  
  10880.  
  10881.                Copyright c 1991 IEEE.  All rights reserved.
  10882.       This is an unapproved IEEE Standards Draft, subject to change.
  10883.  
  10884.  
  10885.  
  10886.  
  10887.  
  10888.  2.8 Regular Expression Notation                                       135
  10889.  
  10890.  
  10891.  
  10892.  
  10893.  
  10894.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  10895.  
  10896.  
  10897.                        Table 2-12  -  BRE Precedence                        1
  10898.  __________________________________________________________________________________________________________________________________________________  1
  10899.  
  10900.          _c_o_l_l_a_t_i_o_n-_r_e_l_a_t_e_d _b_r_a_c_k_e_t _s_y_m_b_o_l_s   [= =]  [: :]  [. .]            1
  10901.          _e_s_c_a_p_e_d _c_h_a_r_a_c_t_e_r_s                  \<_s_p_e_c_i_a_l _c_h_a_r_a_c_t_e_r>           1
  10902.          _b_r_a_c_k_e_t _e_x_p_r_e_s_s_i_o_n                  [ ]                            1
  10903.          _s_u_b_e_x_p_r_e_s_s_i_o_n_s/_b_a_c_k_r_e_f_e_r_e_n_c_e_s       \( \) \_n                       1
  10904.          _s_i_n_g_l_e-_c_h_a_r_a_c_t_e_r-_B_R_E _d_u_p_l_i_c_a_t_i_o_n    * \{_m,_n\}                      1
  10905.          _c_o_n_c_a_t_e_n_a_t_i_o_n                                                      1
  10906.          _a_n_c_h_o_r_i_n_g                           ^  $                           1
  10907.  __________________________________________________________________________________________________________________________________________________
  10908.  
  10909.  
  10910.           sequences starting at the first character of a string shall be    1
  10911.           matched by the BRE.  For example, the BRE ^ab matches ab in the   1
  10912.           string abcdef, but fails to match in the string cdefab.  The BRE  1
  10913.           \(^ab\) may match the former string.  A portable BRE shall        1
  10914.           escape a leading circumflex in a subexpression to match a         1
  10915.           literal circumflex.                                               1
  10916.  
  10917.      (2)  A dollar-sign ($) shall be an anchor when used as the last        1
  10918.           character of an entire BRE.  The implementation may treat a       1
  10919.           dollar-sign as an anchor when used as the last character of a     1
  10920.           subexpression.  The dollar-sign shall anchor the expression (or   1
  10921.           optionally subexpression) to the end of the string being          1
  10922.           matched; the dollar-sign can be said to match the ``end-of-       1
  10923.           string'' following the last character.                            1
  10924.  
  10925.      (3)  A BRE anchored by both ^ and $ shall match only an entire         2
  10926.           string.  For example, the BRE ^abcdef$ matches strings
  10927.           consisting only of abcdef.                                        1
  10928.  
  10929.  
  10930.  2.8.4  Extended Regular Expressions
  10931.  
  10932.  The _e_x_t_e_n_d_e_d _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n (ERE) notation and construction rules
  10933.  shall apply to utilities defined as using extended regular expressions;
  10934.  any exceptions to the following rules are noted in the descriptions of
  10935.  the specific utilities using EREs.
  10936.  
  10937.  
  10938.  2.8.4.1  EREs Matching a Single Character or Collating Element
  10939.  
  10940.  An ERE ordinary character, a special character preceded by a backslash,    1
  10941.  or a period shall match a single character.  A bracket expression shall    1
  10942.  match a single character or a single collating element.  An _E_R_E _m_a_t_c_h_i_n_g   1
  10943.  _a _s_i_n_g_l_e _c_h_a_r_a_c_t_e_r enclosed in parentheses shall match the same as the
  10944.  ERE without parentheses would have matched.
  10945.  
  10946.  
  10947.                Copyright c 1991 IEEE.  All rights reserved.
  10948.       This is an unapproved IEEE Standards Draft, subject to change.
  10949.  
  10950.  
  10951.  
  10952.  
  10953.  
  10954.  136                                2 Terminology and General Requirements
  10955.  
  10956.  
  10957.  
  10958.  
  10959.  
  10960.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  10961.  
  10962.  2.8.4.1.1  ERE Ordinary Characters
  10963.  
  10964.  An _o_r_d_i_n_a_r_y _c_h_a_r_a_c_t_e_r is an ERE that matches itself.  An ordinary
  10965.  character is any character in the supported character set, except for the  2
  10966.  ERE special characters listed in 2.8.4.1.2.  The interpretation of an      2
  10967.  ordinary character preceded by a backslash (\) is undefined.
  10968.  
  10969.  2.8.4.1.2  ERE Special Characters
  10970.  
  10971.  An _E_R_E _s_p_e_c_i_a_l _c_h_a_r_a_c_t_e_r has special properties in certain contexts.       1
  10972.  Outside of those contexts, or when preceded by a backslash, such a         1
  10973.  character shall be an ERE that matches the special character itself.  The
  10974.  extended regular expression special characters and the contexts in which
  10975.  they shall have their special meaning are:
  10976.  
  10977.     . [ \ (     The period, left-bracket, backslash, and left-parenthesis   1
  10978.                 are special except when used in a bracket expression (see   1
  10979.                 2.8.3.2).
  10980.  
  10981.     * + ? {     The asterisk, plus-sign, question-mark, and left-brace are
  10982.                 special except when used in a bracket expression (see
  10983.                 2.8.3.2).  Any of the following uses produce undefined      2
  10984.                 results:                                                    2
  10985.  
  10986.                  - If these characters appear first in an ERE, or
  10987.                    immediately following a vertical-line, circumflex, or
  10988.                    left-parenthesis.
  10989.  
  10990.                  - If a left-brace is not part of a valid interval          1
  10991.                    expression.                                              1
  10992.  
  10993.     |           The vertical-line is special except when used in a bracket
  10994.                 expression (see 2.8.3.2).  A vertical-line appearing first
  10995.                 or last in an ERE, or immediately following a vertical-
  10996.                 line or a left-parentheses, produces undefined results.     1
  10997.  
  10998.     ^           The circumflex shall be special when used                   1
  10999.  
  11000.                  - As an anchor (see 2.8.4.6) or,                           1
  11001.  
  11002.                  - As the first character of a bracket expression (see      1
  11003.                    2.8.3.2).                                                1
  11004.  
  11005.     $           The dollar-sign shall be special when used as an anchor.    1
  11006.  
  11007.  
  11008.  
  11009.  
  11010.  
  11011.  
  11012.  
  11013.                Copyright c 1991 IEEE.  All rights reserved.
  11014.       This is an unapproved IEEE Standards Draft, subject to change.
  11015.  
  11016.  
  11017.  
  11018.  
  11019.  
  11020.  2.8 Regular Expression Notation                                       137
  11021.  
  11022.  
  11023.  
  11024.  
  11025.  
  11026.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  11027.  
  11028.  2.8.4.1.3  Periods in EREs
  11029.  
  11030.  A period (.), when used outside of a bracket expression, is an ERE that
  11031.  shall match any character in the supported character set except NUL.       1
  11032.  
  11033.  
  11034.  2.8.4.2  ERE Bracket Expression
  11035.  
  11036.  The rules for ERE Bracket Expressions are the same as for Basic Regular
  11037.  Expressions; see 2.8.3.2.
  11038.  
  11039.  2.8.4.3  EREs Matching Multiple Characters
  11040.  
  11041.  The following rules shall be used to construct EREs matching multiple
  11042.  characters from EREs matching a single character:
  11043.  
  11044.      (1)  A _c_o_n_c_a_t_e_n_a_t_i_o_n _o_f _E_R_E_s shall match the concatenation of the
  11045.           character sequences matched by each component of the ERE.  A      1
  11046.           concatenation of EREs enclosed in parentheses shall match
  11047.           whatever the concatenation without the parentheses matches.  For
  11048.           example, both the ERE cd and the ERE (cd) are matched by the
  11049.           third and fourth character of the string abcdefabcdef.
  11050.  
  11051.      (2)  When an ERE matching a single character, or a concatenation of    1
  11052.           EREs enclosed in parentheses is followed by the special           1
  11053.           character plus-sign (+), together with that plus-sign it shall    1
  11054.           match what one or more consecutive occurrences of the ERE would   2
  11055.           match.  For example, the ERE b+(bc) matches the fourth through    2
  11056.           seventh characters in the string acabbbcde.  And, [ab]+ and       2
  11057.           [ab][ab]* are equivalent.                                         2
  11058.  
  11059.      (3)  When an ERE matching a single character, or a concatenation of    1
  11060.           EREs enclosed in parentheses is followed by the special           1
  11061.           character asterisk (*), together with that asterisk it shall      1
  11062.           match what zero or more consecutive occurrences of the ERE would  2
  11063.           match.  For example, the ERE b*c matches the first character in
  11064.           the string cabbbcde, and the ERE b*cd matches the third through
  11065.           seventh characters in the string cabbbcdebbbbbbcdbc.  And, [ab]*  2
  11066.           and [ab][ab] are equivalent when matching the string ab.          2
  11067.  
  11068.      (4)  When an ERE matching a single character, or a concatenation of    1
  11069.           EREs enclosed in parentheses is followed by the special           1
  11070.           character question-mark (?), together with that question-mark it  1
  11071.           shall match what zero or one consecutive occurrences of the ERE   2
  11072.           would match.  For example, the ERE b?c matches the second         2
  11073.           character in the string acabbbcde.
  11074.  
  11075.      (5)  When an ERE matching a single character, or a concatenation of    1
  11076.           EREs enclosed in parentheses is followed by an _i_n_t_e_r_v_a_l           1
  11077.  
  11078.  
  11079.                Copyright c 1991 IEEE.  All rights reserved.
  11080.       This is an unapproved IEEE Standards Draft, subject to change.
  11081.  
  11082.  
  11083.  
  11084.  
  11085.  
  11086.  138                                2 Terminology and General Requirements
  11087.  
  11088.  
  11089.  
  11090.  
  11091.  
  11092.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  11093.  
  11094.           _e_x_p_r_e_s_s_i_o_n of the format {_m}, {_m,}, or {_m,_n}, together with that  1
  11095.           interval expression it shall match what repeated consecutive      2
  11096.           occurrences of the ERE would match.  The values of _m and _n shall  2
  11097.           be decimal integers in the range 0 _< _m _< _n _< {RE_DUP_MAX}, where  1
  11098.           _m specifies the exact or minimum number of occurrences and _n
  11099.           specifies the maximum number of occurrences.  The expression {_m}
  11100.           shall match exactly _m occurrences of the preceding ERE, {_m,}
  11101.           shall match at least _m occurrences, and {_m,_n} shall match any
  11102.           number of occurrences between _m and _n, inclusive.                 1
  11103.  
  11104.           For example, in the string abababccccccd the ERE c{3} is matched  1
  11105.           by characters seven through nine, and the ERE (ab){2,} is         2
  11106.           matched by characters one through six.                            2
  11107.  
  11108.  The behavior of multiple adjacent duplication symbols (+, *, ?, and        1
  11109.  intervals) produces undefined results.                                     1
  11110.  
  11111.  
  11112.  2.8.4.4  ERE Alternation
  11113.  
  11114.  Two EREs separated by the special character vertical-line (|) shall match
  11115.  a string that is matched by either.  For example, the ERE a((bc)|d)
  11116.  matches the string abc and the string ad.  Single characters, or
  11117.  expressions matching single characters, separated by the vertical bar and
  11118.  enclosed in parentheses, shall be treated as an ERE matching a single
  11119.  character.                                                                 1
  11120.  
  11121.  2.8.4.5  ERE Precedence
  11122.  
  11123.  The order of precedence shall be as shown in Table 2-13, from high to      1
  11124.  low.                                                                       1
  11125.  
  11126.  
  11127.                        Table 2-13  -  ERE Precedence                        1
  11128.  __________________________________________________________________________________________________________________________________________________  1
  11129.  
  11130.          _c_o_l_l_a_t_i_o_n-_r_e_l_a_t_e_d _b_r_a_c_k_e_t _s_y_m_b_o_l_s   [= =]  [: :]  [. .]            1
  11131.          _e_s_c_a_p_e_d _c_h_a_r_a_c_t_e_r_s                  \<_s_p_e_c_i_a_l _c_h_a_r_a_c_t_e_r>           1
  11132.          _b_r_a_c_k_e_t _e_x_p_r_e_s_s_i_o_n                  [ ]                            1
  11133.          _g_r_o_u_p_i_n_g                            ( )                            1
  11134.          _s_i_n_g_l_e-_c_h_a_r_a_c_t_e_r-_E_R_E _d_u_p_l_i_c_a_t_i_o_n    * + ? {_m,_n}                    1
  11135.          _c_o_n_c_a_t_e_n_a_t_i_o_n                                                      1
  11136.          _a_n_c_h_o_r_i_n_g                           ^  $                           1
  11137.          _a_l_t_e_r_n_a_t_i_o_n                         |                              1
  11138.  __________________________________________________________________________________________________________________________________________________
  11139.  
  11140.  
  11141.  For example, the ERE abba|cde matches either the string abba or the        1
  11142.  string cde (because concatenation has a higher order of precedence than    1
  11143.  
  11144.  
  11145.                Copyright c 1991 IEEE.  All rights reserved.
  11146.       This is an unapproved IEEE Standards Draft, subject to change.
  11147.  
  11148.  
  11149.  
  11150.  
  11151.  
  11152.  2.8 Regular Expression Notation                                       139
  11153.  
  11154.  
  11155.  
  11156.  
  11157.  
  11158.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  11159.  
  11160.  alternation).
  11161.  
  11162.  
  11163.  2.8.4.6  ERE Expression Anchoring
  11164.  
  11165.  An ERE can be limited to matching strings that begin or end a line; this   1
  11166.  is called _a_n_c_h_o_r_i_n_g.  The circumflex and dollar-sign special characters    1
  11167.  shall be considered ERE anchors in the following contexts:                 1
  11168.  
  11169.      (1)  A circumflex (^) shall be an anchor when used anywhere outside a  1
  11170.           bracket expression.  The circumflex shall anchor the              1
  11171.           (sub)expression to the beginning of a string; only sequences      1
  11172.           starting at the first character of a string shall be matched by   1
  11173.           the ERE.  For example, the EREs ^ab and (^ab) match ab in the     1
  11174.           string abcdef, but fail to match in the string cdefab.            1
  11175.  
  11176.      (2)  A dollar-sign ($) shall be an anchor when used anywhere outside   1
  11177.           a bracket expression.  It shall anchor the expression to the end  1
  11178.           of the string being matched; the dollar-sign can be said to
  11179.           match the ``end-of-string'' following the last character.
  11180.  
  11181.      (3)  An ERE anchored by both ^ and $ shall match only an entire        2
  11182.           string.  For example, the EREs ^abcdef$ and (^abcdef$) match
  11183.           strings consisting only of abcdef.
  11184.  
  11185.  
  11186.  2.8.5  Regular Expression Grammar
  11187.  
  11188.  Grammars describing the syntax of both basic and extended regular
  11189.  expressions are presented in this subclause.  See the grammar conventions
  11190.  in 2.1.2.
  11191.  
  11192.  2.8.5.1  BRE/ERE Grammar Lexical Conventions
  11193.  
  11194.  The lexical conventions for regular expressions shall be as described in
  11195.  this subclause.
  11196.  
  11197.  Except as noted, the longest possible token or delimiter beginning at a
  11198.  given point shall be recognized.
  11199.  
  11200.  The following tokens shall be processed (in addition to those string
  11201.  constants shown in the grammar):
  11202.  
  11203.     COLL_ELEM       Shall be any single-character collating element,
  11204.                     unless it is a META_CHAR.
  11205.  
  11206.     BACKREF         (Applicable only to basic regular expressions.)  Shall
  11207.                     be the character string consisting of '\' followed by
  11208.                     a single-digit numeral, 1 through 9.                    1
  11209.  
  11210.  
  11211.                Copyright c 1991 IEEE.  All rights reserved.
  11212.       This is an unapproved IEEE Standards Draft, subject to change.
  11213.  
  11214.  
  11215.  
  11216.  
  11217.  
  11218.  140                                2 Terminology and General Requirements
  11219.  
  11220.  
  11221.  
  11222.  
  11223.  
  11224.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  11225.  
  11226.     DUP_COUNT       Shall represent a numeric constant.  It shall be an
  11227.                     integer in the range 0 _< DUP_COUNT _< {RE_DUP_MAX}.      1
  11228.                     This token shall only be recognized when the context
  11229.                     of the grammar requires it.  At all other times,
  11230.                     digits not preceded by '\' shall be treated as
  11231.                     ORD_CHAR.
  11232.  
  11233.     META_CHAR       Shall be one of the characters:
  11234.  
  11235.                        ^  When found first in a bracket expression
  11236.  
  11237.                        -  When found anywhere but first (after an initial
  11238.                           ^, if any) or last in a bracket expression, or
  11239.                           as the ending range point in a range expression
  11240.  
  11241.                        ]  When found anywhere but first (after an initial
  11242.                           ^, if any) in a bracket expression.
  11243.  
  11244.     L_ANCHOR        (Applicable only to basic regular expressions.)  Shall
  11245.                     be the character ^ when it appears as the first
  11246.                     character of a basic regular expression and when not    1
  11247.                     QUOTED_CHAR.  The ^ may be recognized as an anchor      1
  11248.                     elsewhere; see 2.8.3.5.                                 1
  11249.  
  11250.     ORD_CHAR        Shall be a character, other than one of the special     1
  11251.                     characters in SPEC_CHAR.                                1
  11252.  
  11253.     QUOTED_CHAR     Shall be one of the character sequences:                1
  11254.  
  11255.                           \^      \.      \*      \[      \$      \\        1
  11256.  
  11257.     R_ANCHOR        (Applicable only to basic regular expressions).  Shall  1
  11258.                     be the character $ when it appears as the last          1
  11259.                     character of a basic regular expression and when not    1
  11260.                     QUOTED_CHAR.  The $ may be recognized as an anchor      1
  11261.                     elsewhere; see 2.8.3.5.                                 1
  11262.  
  11263.     SPEC_CHAR       For basic regular expressions, shall be one of the
  11264.                     following special characters:
  11265.  
  11266.                        .     Anywhere outside bracket expressions
  11267.  
  11268.                        \     Anywhere outside bracket expressions
  11269.  
  11270.                        [     Anywhere outside bracket expressions
  11271.  
  11272.                        ^     When an anchor; see 2.8.3.5                    2
  11273.  
  11274.  
  11275.  
  11276.  
  11277.                Copyright c 1991 IEEE.  All rights reserved.
  11278.       This is an unapproved IEEE Standards Draft, subject to change.
  11279.  
  11280.  
  11281.  
  11282.  
  11283.  
  11284.  2.8 Regular Expression Notation                                       141
  11285.  
  11286.  
  11287.  
  11288.  
  11289.  
  11290.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  11291.  
  11292.                        $     When an anchor; see 2.8.3.5                    2
  11293.  
  11294.                        *     Anywhere except:  first in an entire RE;
  11295.                              anywhere in a bracket expression; directly
  11296.                              following \(; directly following an anchoring
  11297.                              ^.
  11298.  
  11299.                     For extended regular expressions, shall be one of the
  11300.                     following special characters found anywhere outside
  11301.                     bracket expressions:
  11302.  
  11303.                           ^    .    [    $    (    )    |    *    +    ?    {    \
  11304.  
  11305.                     (The close-parenthesis shall be considered special in   2
  11306.                     this context only if matched with a preceding open-     2
  11307.                     parenthesis.)                                           2
  11308.  
  11309.  
  11310.  2.8.5.2  RE and Bracket Expression Grammar
  11311.  
  11312.  This subclause presents the grammar for basic regular expressions,
  11313.  including the bracket expression grammar that is common to both BREs and
  11314.  EREs.
  11315.  
  11316.  %token   ORD_CHAR QUOTED_CHAR SPEC_CHAR DUP_COUNT
  11317.  
  11318.  %token   BACKREF L_ANCHOR R_ANCHOR
  11319.  
  11320.  %token   Back_open_paren  Back_close_paren
  11321.  /*           '\('           '\)'                           */
  11322.  
  11323.  %token   Back_open_brace  Back_close_brace
  11324.  /*          '\{'              '\}'                       */
  11325.  
  11326.  /*       The following tokens are for the Bracket Expression
  11327.           grammar common to both REs and EREs.              */
  11328.  
  11329.  %token   COLL_ELEM META_CHAR                                               1
  11330.  
  11331.  %token   Open_equal Equal_close Open_dot Dot_close Open_colon Colon_close  1
  11332.  /*          '[='         '=]'      '[.'    '.]'       '[:'        ':]'  */ 1
  11333.  
  11334.  %token   class_name
  11335.  /*       class_name is a keyword to the LC_CTYPE locale category */
  11336.  /*       (representing a character class) in the current locale  */
  11337.  /*       and is only recognized between [: and :]                */
  11338.  
  11339.  %start   basic_reg_exp
  11340.  
  11341.  
  11342.  
  11343.                Copyright c 1991 IEEE.  All rights reserved.
  11344.       This is an unapproved IEEE Standards Draft, subject to change.
  11345.  
  11346.  
  11347.  
  11348.  
  11349.  
  11350.  142                                2 Terminology and General Requirements
  11351.  
  11352.  
  11353.  
  11354.  
  11355.  
  11356.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  11357.  
  11358.  %%
  11359.  
  11360.  /*                   --------------------------------------------
  11361.                       Basic Regular Expression
  11362.                       --------------------------------------------
  11363.  */
  11364.  
  11365.  basic_reg_exp      :           RE_expression
  11366.                     | L_ANCHOR
  11367.                     |                        R_ANCHOR
  11368.                     | L_ANCHOR               R_ANCHOR
  11369.                     | L_ANCHOR RE_expression
  11370.                     |          RE_expression R_ANCHOR
  11371.                     | L_ANCHOR RE_expression R_ANCHOR
  11372.                     ;
  11373.  
  11374.  RE_expression      :               simple_RE
  11375.                     | RE_expression simple_RE
  11376.                     ;
  11377.  
  11378.  simple_RE          : nondupl_RE
  11379.                     | nondupl_RE RE_dupl_symbol                               1
  11380.                     ;
  11381.  
  11382.  nondupl_RE         : one_character_RE
  11383.                     | Back_open_paren RE_expression Back_close_paren
  11384.                     | Back_open_paren Back_close_paren
  11385.                     | BACKREF
  11386.                     ;
  11387.  
  11388.  /*                                                                           1
  11389.                       Note:  This grammar does not permit L_ANCHOR or         1
  11390.                       R_ANCHOR inside \( and \) (which implies that ^ and $   1
  11391.                       are ordinary characters).  This reflects the semantic   1
  11392.                       limits on the application, as noted in 2.8.3.5.         1
  11393.                       Implementations are permitted to extend the language to 1
  11394.                       interpret ^ and $ as anchors in these locations, and as 1
  11395.                       such portable applications shall not use unescaped ^    1
  11396.                       and $ in positions inside \( and \) that might be       1
  11397.                       interpreted as anchors.                                 1
  11398.  */                                                                           1
  11399.  
  11400.  one_character_RE   : ORD_CHAR
  11401.                     | QUOTED_CHAR
  11402.                     | '.'
  11403.                     | bracket_expression
  11404.                     ;
  11405.  
  11406.  
  11407.  
  11408.  
  11409.                Copyright c 1991 IEEE.  All rights reserved.
  11410.       This is an unapproved IEEE Standards Draft, subject to change.
  11411.  
  11412.  
  11413.  
  11414.  
  11415.  
  11416.  2.8 Regular Expression Notation                                       143
  11417.  
  11418.  
  11419.  
  11420.  
  11421.  
  11422.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  11423.  
  11424.  RE_dupl_symbol     : '*'
  11425.                     | Back_open_brace DUP_COUNT               Back_close_brace
  11426.                     | Back_open_brace DUP_COUNT ','           Back_close_brace
  11427.                     | Back_open_brace DUP_COUNT ',' DUP_COUNT Back_close_brace
  11428.                     ;
  11429.  
  11430.  /*                   --------------------------------------------
  11431.                       Bracket Expression
  11432.                       -------------------------------------------
  11433.  */
  11434.  
  11435.  bracket_expression : '[' matching_list    ']'
  11436.                     | '[' nonmatching_list ']'
  11437.                     ;
  11438.  
  11439.  matching_list      : bracket_list
  11440.                     ;
  11441.  
  11442.  nonmatching_list   : '^' bracket_list
  11443.                     ;
  11444.  
  11445.  bracket_list       : follow_list
  11446.                     | follow_list '-'                                         1
  11447.                     ;
  11448.  
  11449.  follow_list        :             expression_term
  11450.                     | follow_list expression_term
  11451.                     ;
  11452.  
  11453.  expression_term    : single_expression
  11454.                     | range_expression
  11455.                     ;
  11456.  
  11457.  single_expression  : end_range
  11458.                     | character_class                                         1
  11459.                     ;
  11460.  
  11461.  range_expression   : start_range end_range
  11462.                     | start_range '-'
  11463.                     ;
  11464.  
  11465.  start_range        : end_range '-'
  11466.                     ;
  11467.  
  11468.  
  11469.  
  11470.  
  11471.  
  11472.  
  11473.  
  11474.  
  11475.                Copyright c 1991 IEEE.  All rights reserved.
  11476.       This is an unapproved IEEE Standards Draft, subject to change.
  11477.  
  11478.  
  11479.  
  11480.  
  11481.  
  11482.  144                                2 Terminology and General Requirements
  11483.  
  11484.  
  11485.  
  11486.  
  11487.  
  11488.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  11489.  
  11490.  end_range          : COLL_ELEM
  11491.                     | collating_symbol
  11492.                                                                             2
  11493.                     ;
  11494.  
  11495.  collating_symbol   : Open_dot COLL_ELEM Dot_close
  11496.                     | Open_dot META_CHAR Dot_close
  11497.                     ;
  11498.  
  11499.  equivalence_class  : Open_equal COLL_ELEM Equal_close
  11500.                     ;
  11501.  
  11502.  character_class    : Open_colon class_name Colon_close                       1
  11503.                     ;
  11504.  
  11505.  
  11506.  2.8.5.3  ERE Grammar
  11507.  
  11508.  This subclause presents the grammar for extended regular expressions,
  11509.  excluding the bracket expression grammar.
  11510.  NOTE:  The bracket expression grammar and the associated %token lines are
  11511.  identical between BREs and EREs.  It has been omitted from the ERE
  11512.  subclause to avoid unnecessary editorial duplication.
  11513.  
  11514.  
  11515.  %token   ORD_CHAR QUOTED_CHAR SPEC_CHAR DUP_COUNT
  11516.  
  11517.  %start   extended_reg_exp
  11518.  
  11519.  %%
  11520.  
  11521.  /*                  --------------------------------------------
  11522.                      Extended Regular Expression
  11523.                      --------------------------------------------
  11524.  */
  11525.  
  11526.  extended_reg_exp  :                      anchored_ERE
  11527.                    |                      nonanchored_ERE
  11528.                    | extended_reg_exp '|' nonanchored_ERE
  11529.                    | extended_reg_exp '|' anchored_ERE
  11530.                    ;
  11531.  
  11532.  
  11533.  
  11534.  
  11535.  
  11536.  
  11537.  
  11538.  
  11539.  
  11540.  
  11541.                Copyright c 1991 IEEE.  All rights reserved.
  11542.       This is an unapproved IEEE Standards Draft, subject to change.
  11543.  
  11544.  
  11545.  
  11546.  
  11547.  
  11548.  2.8 Regular Expression Notation                                       145
  11549.  
  11550.  
  11551.  
  11552.  
  11553.  
  11554.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  11555.  
  11556.  anchored_ERE      : '^' nonanchored_ERE
  11557.                    | '^' nonanchored_ERE '$'
  11558.                    |     nonanchored_ERE '$'
  11559.                    | '^'
  11560.                    |                     '$'
  11561.                    | '^'                 '$'
  11562.                    ;
  11563.  
  11564.  nonanchored_ERE   :                 ERE_expression
  11565.                    | nonanchored_ERE ERE_expression
  11566.                    ;
  11567.  
  11568.  ERE_expression    : one_character_ERE
  11569.                    | '(' extended_reg_exp ')'
  11570.                    | ERE_expression ERE_dupl_symbol
  11571.                    ;
  11572.  
  11573.  one_character_ERE : ORD_CHAR
  11574.                    | '\' SPEC_CHAR
  11575.                    | '.'
  11576.                    | bracket_expression
  11577.                    ;
  11578.  
  11579.  ERE_dupl_symbol   : '*'
  11580.                    | '+'
  11581.                    | '?'
  11582.                    | '{' DUP_COUNT               '}'
  11583.                    | '{' DUP_COUNT ','           '}'
  11584.                    | '{' DUP_COUNT ',' DUP_COUNT '}'
  11585.                    ;
  11586.  
  11587.  BEGIN_RATIONALE
  11588.  
  11589.  
  11590.  2.8.6  Regular Expression Notation Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  11591.         _p_a_r_t _o_f _P_1_0_0_3._2)
  11592.  
  11593.  _E_d_i_t_o_r'_s _N_o_t_e:  _S_o_m_e _o_f _t_h_e _t_e_x_t _a_n_d _h_e_a_d_i_n_g_s _o_f _t_h_i_s _r_a_t_i_o_n_a_l_e _h_a_v_e _b_e_e_n  1
  11594.  _r_e_a_r_r_a_n_g_e_d.  _M_o_v_e_d _t_e_x_t _h_a_s _n_o_t _b_e_e_n _d_i_f_f_m_a_r_k_e_d _u_n_l_e_s_s _i_t _c_h_a_n_g_e_d.         1
  11595.  
  11596.  Rather than repeating the description of regular expressions for each
  11597.  utility supporting REs, the working group preferred a common,
  11598.  comprehensive description of regular expressions in one place.  The most
  11599.  common behavior is described here, and exceptions or extensions to this
  11600.  are documented for the respective utilities, if appropriate.
  11601.  
  11602.  The Basic Regular Expression corresponds to the ed or historical grep
  11603.  type, and the Extended Regular Expression corresponds to the historical
  11604.  egrep type (now grep -E).
  11605.  
  11606.  
  11607.                Copyright c 1991 IEEE.  All rights reserved.
  11608.       This is an unapproved IEEE Standards Draft, subject to change.
  11609.  
  11610.  
  11611.  
  11612.  
  11613.  
  11614.  146                                2 Terminology and General Requirements
  11615.  
  11616.  
  11617.  
  11618.  
  11619.  
  11620.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  11621.  
  11622.  The text is based on the ed description and substantially modified,
  11623.  primarily to aid developers and others in the understanding of the
  11624.  capabilities and limitations of regular expressions.  Much of this was
  11625.  influenced by the internationalization requirements.
  11626.  
  11627.  It should be noted that the definitions in this clause do not cover the
  11628.  tr utility (see 4.64); the tr syntax does not employ regular expressions.
  11629.  
  11630.  The specification of regular expressions are particularly important to
  11631.  internationalization, because pattern matching operations are very basic
  11632.  operations in business and other operations.  The syntax and rules of
  11633.  regular expressions are intended to be as intuitive as possible, to make
  11634.  them easy to understand and use.  The historical rules and behavior do
  11635.  not provide that capability to non-English-language users, and does not
  11636.  provide the necessary support for commonly used characters and language
  11637.  constructs.  It was necessary to provide extensions to the historical
  11638.  regular expression syntax and rules, to accommodate other languages.
  11639.  Such modifications were proposed by the UniForum Technical Committee
  11640.  Subcommittee on Internationalization and accepted by the working group.
  11641.  As they are limited to bracket expressions, the rationale for these
  11642.  modifications can be found in 2.8.6.3.2.
  11643.  
  11644.  
  11645.  2.8.6.1  Regular Expression Definitions Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t
  11646.           _a _p_a_r_t _o_f _P_1_0_0_3._2)
  11647.  
  11648.  The definition of which sequence is matched when several are possible is
  11649.  based on the leftmost-longest rule historically used by deterministic      1
  11650.  recognizers.  This rule is much easier to define and describe, and
  11651.  arguably more useful, than the first-match rule historically used by
  11652.  nondeterministic recognizers.  It is thought that dependencies on the
  11653.  choice of rule are rare; carefully-contrived examples are needed to
  11654.  demonstrate the difference.
  11655.  
  11656.  A formal expression of the leftmost-longest rule is:                       1
  11657.  
  11658.        The search is performed as if all possible suffixes of the
  11659.        string were tested for a prefix matching the pattern; the
  11660.        longest suffix containing a matching prefix is chosen, and
  11661.        the longest possible matching prefix of the chosen suffix is
  11662.        identified as the matching sequence.
  11663.  
  11664.  It is possible to determine what strings correspond to subexpressions by   1
  11665.  recursively applying the leftmost longest rule to each subexpression, but  1
  11666.  only with the proviso that the overall match is leftmost longest (see      1
  11667.  2.8.1.2).  For example, matching \(ac*\)c*d[ac]*\1 against acdacaaa        1
  11668.  should match acdacaaa (with \1=a); simply matching the longest match for   1
  11669.  \(ac*\) would yield \1=ac, but the overall match would be smaller          1
  11670.  (acdac).  In principle, the implementation must examine every possible     1
  11671.  match and among those that yield the leftmost longest total matches, pick  1
  11672.  
  11673.                Copyright c 1991 IEEE.  All rights reserved.
  11674.       This is an unapproved IEEE Standards Draft, subject to change.
  11675.  
  11676.  
  11677.  
  11678.  
  11679.  
  11680.  2.8 Regular Expression Notation                                       147
  11681.  
  11682.  
  11683.  
  11684.  
  11685.  
  11686.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  11687.  
  11688.  the one that does the longest match for the leftmost subexpression and so  1
  11689.  on.  Note that this means that matching by subexpressions is context       1
  11690.  dependent:  a subexpression within a larger RE may match a different       1
  11691.  string from the one it would match as an independent RE, and two           1
  11692.  instances of the same subexpression within the same larger RE may match    1
  11693.  different lengths even in similar sequences of characters.  For example,   1
  11694.  in the ERE (a.*b)(a.*b), the two identical subexpressions would match      1
  11695.  four and six characters, respectively, of accbaccccb.  Thus, it is not     1
  11696.  possible to hierarchically decompose the matching problem into smaller,    1
  11697.  independent, matching problems.                                            1
  11698.  
  11699.  Matching is based on the bit pattern used for encoding the character, not
  11700.  on the graphic representation of the character.  This means that if a
  11701.  character set contains two or more encodings for a graphic symbol, or if
  11702.  the strings searched contain text encoded in more than one code set, no
  11703.  attempt is made to search for any other representation of the encoded
  11704.  symbol.  If that is required, the user can specify equivalence classes
  11705.  containing all variations of the desired graphic symbol.
  11706.  
  11707.  The definition of ``single character'' has been expanded to include also
  11708.  collating elements consisting of two or more characters; this expansion    1
  11709.  is applicable only when a bracket expression is included in the BRE or     1
  11710.  ERE.  An example of such a collating element may be the Dutch ``ij'',      1
  11711.  which collates as a ``y.''  In some encodings, a ligature ``i with j''
  11712.  exists _a_s _a _c_h_a_r_a_c_t_e_r, and would represent a single-character collating
  11713.  element.  In another encoding, no such ligature exists, and the two-
  11714.  character sequence ``ij'' is defined as a multicharacter collating
  11715.  element.  Outside brackets, the ``ij'' is treated as a two-character RE
  11716.  and will match the same characters in a string.  Historically, a bracket
  11717.  expression only matched a single character.  If, however, the bracket
  11718.  expression defines, for example, a range that includes ``ij'', then this
  11719.  particular bracket expression will also match a sequence of the two
  11720.  characters ``i'' and ``j'' in the string.
  11721.  
  11722.  
  11723.  2.8.6.2  Regular Expression General Requirements Rationale. (_T_h_i_s
  11724.           _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  11725.  
  11726.  Historically, most regular expression implementations only match lines,
  11727.  not strings.  However, that is more an effect of the usage than of an
  11728.  inherent feature of regular expressions itself.  Consequently, POSIX.2
  11729.  does not regard <newline>s as special; they are ordinary characters, and
  11730.  both a period and a nonmatching list can match them.  Those utilities
  11731.  (like grep) that do not allow <newline>s to match are responsible for
  11732.  eliminating any <newline> from strings before matching against the RE.
  11733.  The _r_e_g_c_o_m_p() function, however, can provide support for such processing
  11734.  without violating the rules of this clause.
  11735.  
  11736.  
  11737.  
  11738.  
  11739.                Copyright c 1991 IEEE.  All rights reserved.
  11740.       This is an unapproved IEEE Standards Draft, subject to change.
  11741.  
  11742.  
  11743.  
  11744.  
  11745.  
  11746.  148                                2 Terminology and General Requirements
  11747.  
  11748.  
  11749.  
  11750.  
  11751.  
  11752.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  11753.  
  11754.  The definition of case-insensitive processing is intended to allow
  11755.  matching of multicharacter collating elements as well as characters.  For
  11756.  instance, as each character in the string is matched using both its
  11757.  cases, the RE [[.Ch.]], when matched against char, is in reality matched
  11758.  against ch, Ch, cH, and CH.                                                1
  11759.  
  11760.  Some implementations of egrep have had very limited flexibility in
  11761.  handling complex extended regular expressions.  POSIX.2 does not attempt
  11762.  to define the complexity of a BRE or ERE, but does place a lower limit on
  11763.  it--any regular expression must be handled, as long as it can be
  11764.  expressed in 256 bytes or less.  (Of course, this does not place an upper
  11765.  limit on the implementation.)  There are existing programs using a
  11766.  nondeterministic-recognizer implementation that should have no difficulty
  11767.  with this limit.  It is possible that a good approach would be to attempt
  11768.  to use the faster, but more limited, deterministic recognizer for simple
  11769.  expressions and to fall back on the nondeterministic recognizer for those
  11770.  expressions requiring it.  Nondeterministic implementations must be
  11771.  careful to observe the 2.8.1.2 rules on which match is chosen; the
  11772.  longest match, not the first match, starting at a given character is
  11773.  used.
  11774.  
  11775.  The term ``invalid'' highlights a difference between this clause and some  1
  11776.  others:  POSIX.2 frequently avoids mandating of errors for syntax          1
  11777.  violations because they can be used by implementors to trigger             1
  11778.  extensions.  However, the authors of the internationalization features of  1
  11779.  regular expressions desired to mandate errors for certain conditions to    1
  11780.  identify usage problems or nonportable constructs.  These are identified   1
  11781.  within this rationale as appropriate.  The remaining syntax violations     1
  11782.  have been left implicitly or explicitly undefined.  For example, the BRE   1
  11783.  construct \{1,2,3\} does not comply with the grammar.  A conforming        1
  11784.  application cannot rely on it producing an error nor matching the literal  1
  11785.  characters \{1,2,3\}.  The term ``undefined'' was used in favor of         1
  11786.  ``unspecified'' because many of the situations are considered errors on    1
  11787.  some implementations and it was felt that consistency throughout the       1
  11788.  clause was preferable to mixing undefined and unspecified.                 1
  11789.  
  11790.  
  11791.  2.8.6.3  Basic Regular Expressions Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  11792.           _p_a_r_t _o_f _P_1_0_0_3._2)
  11793.  
  11794.  2.8.6.3.1  BREs Matching a Single Character or Collating Element
  11795.             Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  11796.  
  11797.  
  11798.  
  11799.  
  11800.  
  11801.  
  11802.  
  11803.  
  11804.  
  11805.                Copyright c 1991 IEEE.  All rights reserved.
  11806.       This is an unapproved IEEE Standards Draft, subject to change.
  11807.  
  11808.  
  11809.  
  11810.  
  11811.  
  11812.  2.8 Regular Expression Notation                                       149
  11813.  
  11814.  
  11815.  
  11816.  
  11817.  
  11818.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  11819.  
  11820.  2.8.6.3.2  RE Bracket Expression Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t
  11821.             _o_f _P_1_0_0_3._2)
  11822.  
  11823.  If a bracket expression must specify both - and ], then the ] must be
  11824.  placed first (after the ^, if any) and the - last within the bracket
  11825.  expression.
  11826.  
  11827.  Range expressions are, historically, an integral part of regular
  11828.  expressions.  However, the requirements of ``natural language behavior''
  11829.  and portability does conflict: ranges must be treated according to the
  11830.  current collating sequence, and include such characters that fall within
  11831.  the range based on that collating sequence, regardless of character
  11832.  values.  This, however, means that the interpretation will differ
  11833.  depending on collating sequence.  If, for instance, one collating
  11834.  sequence defines ``a'..' as a variant of ``a'', while another defines it as
  11835.  a letter following ``z'', then the expression [a-..z] is valid in the first
  11836.  language and invalid in the second.  This kind of ambiguity should be
  11837.  avoided in portable applications, and therefore the working group elected
  11838.  to state that ranges must not be used in strictly conforming
  11839.  applications; however, implementations must support them.
  11840.  
  11841.  Some historical implementations allow range expressions where the ending
  11842.  range point of one range is also the starting point of the next (for
  11843.  instance [a-m-o]).  This behavior should not be permitted, but to avoid
  11844.  breaking existing implementations, it is now _u_n_d_e_f_i_n_e_d whether it is a
  11845.  valid expression, and how it should be interpreted.
  11846.  
  11847.  Current practice in awk and lex is to accept escape sequences in bracket
  11848.  expressions as per Table 2-15, while the normal regular expression
  11849.  behavior is to regard such a sequence as consisting of two characters.
  11850.  Allowing the awk/lex behavior in regular expressions would change the
  11851.  normal behavior in an unacceptable way; it is expected that awk and lex
  11852.  will decode escape sequences in regular expressions before passing them
  11853.  to _r_e_g_c_o_m_p() or comparable routines.  Each utility describes the escape
  11854.  sequences it accepts as an exception to the rules in this clause; the
  11855.  list is not the same, for historical reasons.
  11856.  
  11857.  As noted earlier, the new syntax and rules have been added to accommodate
  11858.  other languages than English.  These modifications were proposed by the
  11859.  UniForum Subcommittee on Internationalization and accepted by the working
  11860.  group.  The remainder of this clause describes the rationale for these
  11861.  modifications.
  11862.  
  11863.  _I_n_t_e_r_n_a_t_i_o_n_a_l_i_z_a_t_i_o_n__R_e_q_u_i_r_e_m_e_n_t_s
  11864.  
  11865.  The goal of the internationalization effort was to provide functions and
  11866.  capabilities that matched the capabilities of existing implementations,
  11867.  but that adhered to the user's local customs, rules, and environment.
  11868.  This has also been described as ``removing the ASCII (and English
  11869.  
  11870.  
  11871.                Copyright c 1991 IEEE.  All rights reserved.
  11872.       This is an unapproved IEEE Standards Draft, subject to change.
  11873.  
  11874.  
  11875.  
  11876.  
  11877.  
  11878.  150                                2 Terminology and General Requirements
  11879.  
  11880.  
  11881.  
  11882.  
  11883.  
  11884.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  11885.  
  11886.  language) bias.''
  11887.  
  11888.  In addition, other requirements also influence the standardization
  11889.  efforts, such as _p_o_r_t_a_b_i_l_i_t_y, _e_x_t_e_n_s_i_b_i_l_i_t_y, and _c_o_m_p_a_t_i_b_i_l_i_t_y.
  11890.  
  11891.  In a worldwide environment _p_o_r_t_a_b_i_l_i_t_y carries much weight.  Wherever
  11892.  feasible, users should be given the capability to develop code that can
  11893.  execute independently of character set, code set, or language.
  11894.  
  11895.  Standards must also be _e_x_t_e_n_s_i_b_l_e; to support further development, to
  11896.  allow for local or regional extensions, or to accommodate new concepts
  11897.  (such as multibyte characters).
  11898.  
  11899.  _C_o_m_p_a_t_i_b_i_l_i_t_y does not only refer to support of existing code, but also
  11900.  to making the new syntax, semantics, and functions compatible with
  11901.  existing environments and implementations.
  11902.  
  11903.  _I_n_t_e_r_n_a_t_i_o_n_a_l_i_z_a_t_i_o_n__T_e_c_h_n_i_c_a_l__B_a_c_k_g_r_o_u_n_d
  11904.  
  11905.  The C Standard {7} (and, by implication, also POSIX) recognizes that the
  11906.  ASCII character set used in historical UNIX system implementations is not
  11907.  adequate outside the Anglo-American language area.  It is, however, not
  11908.  enough to remove the ASCII bias; the dependency on Anglo-Saxon
  11909.  conventions and rules must also be broadened to accommodate other
  11910.  cultures, including those that require thousands of characters.
  11911.  
  11912.  Character sets are defined by their _a_t_t_r_i_b_u_t_e_s; typical attributes are
  11913.  the _e_n_c_o_d_i_n_g, the _c_o_l_l_a_t_i_n_g _s_e_q_u_e_n_c_e, the _c_h_a_r_a_c_t_e_r _c_l_a_s_s_i_f_i_c_a_t_i_o_n, and
  11914.  the _c_a_s_e _m_a_p_p_i_n_g.
  11915.  
  11916.  It is also recognized that, even within one language area, several
  11917.  combinations of attributes exist: character set attributes are _m_u_t_a_b_l_e
  11918.  and _c_o_m_b_i_n_a_t_o_r_y.  So, rather than replacing one straitjacket by another,
  11919.  the proposed standards make character sets _u_s_e_r-_d_e_f_i_n_a_b_l_e and _p_r_o_g_r_a_m-
  11920.  _s_e_l_e_c_t_a_b_l_e.
  11921.  
  11922.  The existence of character set attributes is implicit in regular
  11923.  expressions (REs).  This implies that regular expressions must recognize
  11924.  and adapt to the _p_r_o_g_r_a_m-_s_e_l_e_c_t_e_d set of attributes.
  11925.  
  11926.  A program _s_e_l_e_c_t_s the appropriate character set (or combination of
  11927.  attributes) using the mechanism described in 2.5.  The _d_e_f_i_n_i_t_i_o_n of a
  11928.  character set (its attributes) is _e_x_t_e_r_n_a_l to an executing program.  Many
  11929.  combinations of attributes can exist concurrently.  Of particular
  11930.  interest are the following attributes:
  11931.  
  11932.      (1)  _C_o_l_l_a_t_i_n_g _S_e_q_u_e_n_c_e.  In existing implementations, the _e_n_c_o_d_e_d
  11933.           ASCII ordering matches the _l_o_g_i_c_a_l English collating sequence.
  11934.           This correspondence does not exist for all code sets or
  11935.  
  11936.  
  11937.                Copyright c 1991 IEEE.  All rights reserved.
  11938.       This is an unapproved IEEE Standards Draft, subject to change.
  11939.  
  11940.  
  11941.  
  11942.  
  11943.  
  11944.  2.8 Regular Expression Notation                                       151
  11945.  
  11946.  
  11947.  
  11948.  
  11949.  
  11950.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  11951.  
  11952.           languages.  In addition, many languages employ concepts that
  11953.           have no counterparts in English collation:
  11954.  
  11955.            (a)  In many languages, ordering is based on the concept of
  11956.                 _s_t_r_i_n_g _c_o_l_l_a_t_i_o_n rather than _c_h_a_r_a_c_t_e_r _c_o_l_l_a_t_i_o_n as in
  11957.                 English.  One of the effects of this is that the ordering
  11958.                 is based on _c_o_l_l_a_t_i_n_g _e_l_e_m_e_n_t_s rather than on characters.
  11959.                 Characters typically map into collating elements:
  11960.  
  11961.                    _O_n_e-_t_o-_o_n_e mapping, where a character is also a
  11962.                      collating element,
  11963.  
  11964.                    _O_n_e-_t_o-_N mapping, where a single character maps into
  11965.                      two or more collating elements (as the German ``B''
  11966.                      (eszet), which collates as ``ss''),
  11967.  
  11968.                    _N-_t_o-_o_n_e mapping, where two or more characters map into
  11969.                      one collating element (as in the Spanish ``ll'',
  11970.                      which collates between ``l'' and ``m''; i.e., a word
  11971.                      beginning with ``ll'' collates _a_f_t_e_r a word beginning
  11972.                      with ``lo'').
  11973.  
  11974.            (b)  A common method for adding characters to an alphabet is to
  11975.                 use diacritical marks, such as accents or circumflex
  11976.                 (  ^).  In some languages, this creates a completely new
  11977.                 c`h'aracter, collated differently from the Latin ``base.''
  11978.                 In other languages these accented characters are collated
  11979.                 as variants of the Latin base letter; i.e., they have the
  11980.                 same relative order; they are _e_q_u_i_v_a_l_e_n_t.
  11981.  
  11982.                 If the strings (words) being compared are equal except for
  11983.                 ``accents,'' the strings can be ordered based on a
  11984.                 secondary ordering _w_i_t_h_i_n the ``equivalence class.''  For
  11985.                 instance, in French, the words ``_t_a_c_h_e'', ``_t_^a_c_h_e'', and
  11986.                 ``_t_a_c_h_e_t_e_r'' collate in that order.
  11987.  
  11988.           The C Standard {7} recognizes this; it includes new library
  11989.           functions capable of handling complex collation rules.  These
  11990.           functions depend on the setting of the _s_e_t_l_o_c_a_l_e() category
  11991.           LC_COLLATE for a definition of the current collation rules.
  11992.  
  11993.      (2)  _C_h_a_r_a_c_t_e_r _C_l_a_s_s_i_f_i_c_a_t_i_o_n.  Character classification and case
  11994.           mapping is another area where each language (or even language
  11995.           area) has its own rules.  Although users in different countries
  11996.           can use the same code set, such as ISO 8859-1 {5}, the
  11997.           definition of what constitutes a letter or an uppercase letter
  11998.           may vary.
  11999.  
  12000.  
  12001.  
  12002.  
  12003.                Copyright c 1991 IEEE.  All rights reserved.
  12004.       This is an unapproved IEEE Standards Draft, subject to change.
  12005.  
  12006.  
  12007.  
  12008.  
  12009.  
  12010.  152                                2 Terminology and General Requirements
  12011.  
  12012.  
  12013.  
  12014.  
  12015.  
  12016.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  12017.  
  12018.           The C Standard {7} recognizes this; library functions used to
  12019.           classify characters or perform case mapping depend on the
  12020.           _s_e_t_l_o_c_a_l_e() category LC_CTYPE for a definition of how characters
  12021.           map to character classes.
  12022.  
  12023.  _I_n_t_e_r_n_a_t_i_o_n_a_l_i_z_a_t_i_o_n__P_r_o_p_o_s_a_l__A_r_e_a_s
  12024.  
  12025.  Based on the requirements and attribute characteristics defined above,
  12026.  and after reviewing proposals and definitions by X/Open and other
  12027.  organizations, the UniForum Subcommittee on Internationalization decided
  12028.  to concentrate on the following areas: the range expression, character
  12029.  classes, the definition of one-character RE (multicharacter element), and
  12030.  equivalence classes.
  12031.  
  12032.  Most of these are heavily dependent on the current definition of
  12033.  collation sequence; the Subcommittee felt it natural to couple the
  12034.  capabilities and interpretation of bracket expressions closely to the
  12035.  requirements for extended collation capabilities.
  12036.  
  12037.  In addition, the Subcommittee felt that the capabilities described in 2.5
  12038.  formed a suitable basis for runtime control of regular expression
  12039.  behavior.
  12040.  
  12041.  The Subcommittee realized that the mechanism selected requires changes in
  12042.  the existing syntax.  As a rule, the Subcommittee wished to minimize
  12043.  changes and avoid syntactical changes that may cause existing regular
  12044.  expressions to fail.
  12045.  
  12046.      (1)  _C_o_l_l_a_t_i_n_g _E_l_e_m_e_n_t_s _a_n_d _S_y_m_b_o_l_s.  As noted above, many
  12047.           expressions within a bracket expression are closely connected
  12048.           with collation, and the Subcommittee defined many capabilities
  12049.           in terms of collating elements and collating symbols.
  12050.  
  12051.           A collating element is defined as a sequence of one or more
  12052.           bytes defined in the current collating sequence definition as a
  12053.           unit of collation.  In most cases, a collating element is equal
  12054.           to a character, but the collation sequence may exclude some
  12055.           characters, or define two or more characters as a collating
  12056.           element.
  12057.  
  12058.           A one-character RE is, logically enough, defined as one
  12059.           character or something that translates into one character (the
  12060.           number of bits used to represent the character is not an issue
  12061.           here).  The expression within square brackets is a one-character
  12062.           RE; i.e., single characters are matched against the list of
  12063.           single characters defined within the brackets.
  12064.  
  12065.           In Spanish, the phrase ``a  _t_o _d'' means the sequence of
  12066.           collating elements a, a', b, c, ch, and d.  Consequently, with a
  12067.  
  12068.  
  12069.                Copyright c 1991 IEEE.  All rights reserved.
  12070.       This is an unapproved IEEE Standards Draft, subject to change.
  12071.  
  12072.  
  12073.  
  12074.  
  12075.  
  12076.  2.8 Regular Expression Notation                                       153
  12077.  
  12078.  
  12079.  
  12080.  
  12081.  
  12082.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  12083.  
  12084.           Spanish character set, the range statement [a-d] includes the ch
  12085.           collating element, even though it is expressed with two
  12086.           characters (N-to-1 mapping).
  12087.  
  12088.           The historical syntax, however, does not allow the user to
  12089.           define either the range from a through ch, or to define ch as a
  12090.           single character rather than as either c or h.
  12091.  
  12092.           The Subcommittee decided that N-to-1 mappings be recognized (if
  12093.           properly delimited), as _o_n_e-_c_h_a_r_a_c_t_e_r _R_E_s inside, but not
  12094.           outside, square brackets (e.g., a period will never match ch).
  12095.  
  12096.           To be distinguishable from a list of the characters themselves,
  12097.           the multicharacter element must be delimited from the remainder
  12098.           of the characters in the string.  The characters [. _a_n_d .] are
  12099.           used to delimit a multicharacter collating element from other
  12100.           elements, and can be used to delimit single-character collating
  12101.           elements.
  12102.  
  12103.      (2)  _E_q_u_i_v_a_l_e_n_c_e _C_l_a_s_s_e_s.  As stated previously, many languages
  12104.           extend the Latin alphabet by using diacritical marks.  In some
  12105.           cases, the Latin base character (e.g., a) and the accented
  12106.           versions of the base (e.g., a`, a^ in French) constitute a
  12107.           ``subclass'' of characters with some partially equivalent
  12108.           characteristics but different code values.  Because these
  12109.           characters are related, they are often processed as a group.
  12110.           The historical syntax, however, does not provide for this in a
  12111.           portable manner.
  12112.  
  12113.           Although it represents an extension of the historical
  12114.           capabilities, the X/Open group strongly recommended that a
  12115.           properly delimited collating element be recognized as
  12116.           representing an equivalence class, that is as the collating
  12117.           element itself, and all other characters with the same primary
  12118.           order in the collation sequence.
  12119.  
  12120.           The Subcommittee supported this recommendation, and also
  12121.           selected [= and =] as delimiters for equivalence classes.
  12122.  
  12123.      (3)  _R_a_n_g_e _E_x_p_r_e_s_s_i_o_n_s.  The hyphen historically indicated ``a range
  12124.           of consecutive ASCII characters;'' typically it stands for the
  12125.           word ``to,'' as in ``a to z,'' _a_n_d _i_m_p_l_i_e_s _a_n _o_r_d_e_r_e_d _i_n_t_e_r_v_a_l.
  12126.           _I_n _A_S_C_I_I, _t_h_e _e_n_c_o_d_e_d _o_r_d_e_r _m_a_t_c_h_e_s _t_h_e _l_o_g_i_c_a_l _E_n_g_l_i_s_h _o_r_d_e_r;
  12127.           _t_h_i_s _i_s _n_o_t _t_r_u_e _w_i_t_h _o_t_h_e_r _e_n_c_o_d_i_n_g_s _o_r _w_i_t_h _o_t_h_e_r _a_l_p_h_a_b_e_t_s.
  12128.  
  12129.           _I_f _t_h_e _A_S_C_I_I _d_e_p_e_n_d_e_n_c_y _i_s _r_e_m_o_v_e_d, _a_n _a_l_t_e_r_n_a_t_i_v_e _c_o_u_l_d _h_a_v_e
  12130.           _b_e_e_n _t_o _u_s_e _t_h_e _e_n_c_o_d_e_d _s_e_q_u_e_n_c_e _o_f _w_h_a_t_e_v_e_r _c_o_d_e _s_e_t _i_s
  12131.           _c_u_r_r_e_n_t_l_y _u_s_e_d.  _T_h_i_s, _h_o_w_e_v_e_r, _w_o_u_l_d _c_e_r_t_a_i_n_l_y _d_e_c_r_e_a_s_e
  12132.           _p_o_r_t_a_b_i_l_i_t_y, _a_s _w_e_l_l _a_s _r_e_q_u_i_r_i_n_g _t_h_e _u_s_e_r _t_o _k_n_o_w _t_h_e _o_r_d_e_r_i_n_g
  12133.  
  12134.  
  12135.                Copyright c 1991 IEEE.  All rights reserved.
  12136.       This is an unapproved IEEE Standards Draft, subject to change.
  12137.  
  12138.  
  12139.  
  12140.  
  12141.  
  12142.  154                                2 Terminology and General Requirements
  12143.  
  12144.  
  12145.  
  12146.  
  12147.  
  12148.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  12149.  
  12150.           _o_f _t_h_e _c_u_r_r_e_n_t _c_o_d_e _s_e_t.  _I_t _w_o_u_l_d _a_l_s_o _m_o_s_t _c_e_r_t_a_i_n_l_y _b_e
  12151.           _c_o_u_n_t_e_r-_i_n_t_u_i_t_i_v_e; _a _F_r_e_n_c_h _u_s_e_r _w_o_u_l_d _e_x_p_e_c_t _t_h_e _e_x_p_r_e_s_s_i_o_n
  12152.           [_a-_d] to match any of the letters a, a` a^, b, c, c, or d.  The
  12153.           Subcommittee regards this interpretation of ranges as most
  12154.           compatible with existing capabilities, and one that provides for
  12155.           the desired portability.
  12156.  
  12157.           As the _l_o_g_i_c_a_l ordering need not be inherent in the _e_n_c_o_d_e_d
  12158.           sequence, an external definition was required.  Such a
  12159.           definition was already present via the _c_o_l_l_a_t_i_n_g _s_e_q_u_e_n_c_e
  12160.           attribute of the character set.  The _s_e_t_l_o_c_a_l_e() function
  12161.           provides for an LC_COLLATE category, which defines the current
  12162.           collating sequence.  The Subcommittee selected this as the basis
  12163.           for the interpretation of ranges, as well as of equivalence
  12164.           classes and multicharacter collating symbols.
  12165.  
  12166.      (4)  _C_h_a_r_a_c_t_e_r _C_l_a_s_s_e_s.  The _r_a_n_g_e expression is commonly used to
  12167.           indicate a _c_h_a_r_a_c_t_e_r _c_l_a_s_s; the _e_x(_a_u__c_m_d) section of the _S_V_I_D
  12168.           states: ``... _a _p_a_i_r _o_f _c_h_a_r_a_c_t_e_r_s _s_e_p_a_r_a_t_e_d _b_y - defines a
  12169.           range (e.g., a-z defines any lowercase letter)....''  In
  12170.           reality, [a-z] means ``any lowercase letter between a and z,
  12171.           inclusive.''  This is _o_n_l_y equivalent to ``any lowercase
  12172.           letter'' if the _a is the first and z is the last lowercase
  12173.           letter in the collating sequence.
  12174.  
  12175.           To provide the intended capabilities in a portable way, the
  12176.           Subcommittee introduced a new syntactical element, namely an
  12177.           explicit _c_h_a_r_a_c_t_e_r _c_l_a_s_s.  The definition of which characters
  12178.           constitute a specific character class is already present via the
  12179.           LC_CTYPE category of the _s_e_t_l_o_c_a_l_e() function.
  12180.  
  12181.           The Subcommittee selected the identification of character
  12182.           classes by _n_a_m_e, bracketed by [: and :].  A character class
  12183.           cannot be used as an endpoint in a range statement.
  12184.  
  12185.  _I_n_t_e_r_n_a_t_i_o_n_a_l_i_z_a_t_i_o_n__S_y_n_t_a_x
  12186.  
  12187.  The Subcommittee was careful to propose changes in the regular expression
  12188.  syntax that minimize the impact on existing REs.  In evaluating
  12189.  alternatives, the Subcommittee looked at ease of use (terseness, ease to
  12190.  remember, keyboard availability), impact on historical REs
  12191.  (compatibility), implementability, performance and how error-prone the
  12192.  syntax is likely to be (ambiguity).
  12193.  
  12194.  The Subcommittee made the following evaluation:
  12195.  
  12196.      (1)  Syntax changes must be limited to expressions within square
  12197.           brackets.
  12198.  
  12199.  
  12200.  
  12201.                Copyright c 1991 IEEE.  All rights reserved.
  12202.       This is an unapproved IEEE Standards Draft, subject to change.
  12203.  
  12204.  
  12205.  
  12206.  
  12207.  
  12208.  2.8 Regular Expression Notation                                       155
  12209.  
  12210.  
  12211.  
  12212.  
  12213.  
  12214.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  12215.  
  12216.      (2)  Strings or characters with special meaning must be delimited
  12217.           from ordinary strings, to avoid compatibility problems.
  12218.  
  12219.      (3)  Both initial and terminating delimiter should consist of two
  12220.           characters, to minimize compatibility and ambiguity problems.
  12221.  
  12222.      (4)  Outer delimiter character should be bracketing; i.e., naturally
  12223.           indicate initial and terminating side.  Examples:  {} <> ().
  12224.  
  12225.      (5)  The brackets ([]) are, due to the special rules for ``brackets
  12226.           within brackets,'' rather unlikely to be used in the intended
  12227.           way (a closing bracket must precede an open bracket in the
  12228.           existing syntax).
  12229.  
  12230.      (6)  To minimize ambiguity, brackets must be paired with another
  12231.           character.  Many other symbols are already in use, either within
  12232.           regular expressions, or in the shell.  Examples of usable
  12233.           characters are:  =  .  :
  12234.  
  12235.      (7)  Because a multicharacter collating element also can be a member
  12236.           of an equivalence class, different delimiters must be chosen for
  12237.           these two expressions.  Also, the character class expression
  12238.           must be distinguishable from, e.g., multicharacter collating
  12239.           symbols; although no historical example is known to the
  12240.           Subcommittee, prudence dictated that character classes be given
  12241.           separate delimiters.
  12242.  
  12243.      (8)  The Subcommittee selected the period as the secondary delimiter
  12244.           for multicharacter collating symbols.
  12245.  
  12246.      (9)  The Subcommittee selected the equals-sign as the secondary
  12247.           delimiter for equivalence classes.
  12248.  
  12249.     (10)  The Subcommittee selected the colon as the secondary delimiter
  12250.           for character classes.
  12251.  
  12252.  The specific syntax and facilities described in this clause represent a
  12253.  coalescence of proposals and implementations from several vendors.  Due
  12254.  to differences in facilities and syntax, it was not possible to take one
  12255.  implementation and codify it.  There are now several implementations
  12256.  closely patterned on the existing proposal.
  12257.  
  12258.  The facilities presented in this clause are described in a manner that
  12259.  does not preclude their use with multibyte character sets.  However, no
  12260.  attempt has been made to include facilities specifically intended for
  12261.  such character sets.
  12262.  
  12263.  The definitions of character classes is tied to the LC_CTYPE definition.
  12264.  The set of character classes defined in the C Standard {7} represents the
  12265.  
  12266.  
  12267.                Copyright c 1991 IEEE.  All rights reserved.
  12268.       This is an unapproved IEEE Standards Draft, subject to change.
  12269.  
  12270.  
  12271.  
  12272.  
  12273.  
  12274.  156                                2 Terminology and General Requirements
  12275.  
  12276.  
  12277.  
  12278.  
  12279.  
  12280.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  12281.  
  12282.  minimum set of character classes required worldwide, i.e., those required
  12283.  by all implementations.  It is the working group's belief that local
  12284.  standards bodies, as well as individual vendors, will provide extensions
  12285.  to the standard in these areas, for instance to provide, for example,
  12286.  Kanji character classes.
  12287.  
  12288.  In many historical implementations, an _i_n_v_a_l_i_d _r_a_n_g_e is treated as if it
  12289.  consisted of the endpoints only.  For example, [z-a] is treated as [za].
  12290.  Some implementations treat the above range as [z], and others as [-az].
  12291.  Neither is correct, and the working group decided that this should be
  12292.  treated as an error.
  12293.  
  12294.  It was proposed that the syntax for bracket expressions be simplified
  12295.  such that the ``extra'' brackets are not needed if the bracket expression
  12296.  only consists of a character class, an equivalence class, or a collating
  12297.  symbol:  ``[:alpha:]'' instead of ``[[:alpha:]]''.  To ensure
  12298.  unambiguity, if a bracket expression starts with :, =, or ., then it
  12299.  cannot contain a class expression or a collating symbol (or duplicated
  12300.  characters).  In addition, it was also proposed that only valid class or
  12301.  collating symbol expressions be accepted: e.g., [[:ctrl:]] is an invalid
  12302.  expression.  The working group rejected the proposal.  While the syntax
  12303.  [:alpha:] may be intuitive to some, the proposal does not allow, e.g.,
  12304.  [:digit:.ch.].  The alternative, to require additional brackets for the
  12305.  latter case would probably cause more errors than the historical syntax.
  12306.  Requiring erroneous class expressions or collating symbols to make the
  12307.  regular expression invalid may minimize the risks for inadvertent
  12308.  spelling errors.  However, at this point it was judged that this would
  12309.  reduce consensus.
  12310.  
  12311.  Consideration was given to eliminating the [.ch.] syntax and providing
  12312.  that collating element should be recognized as such both inside and
  12313.  outside bracket expressions.  In addition, consideration was given to
  12314.  defining character classes such that collating elements are included.
  12315.  The working group rejected these proposals.  The [.ch.] syntax is only
  12316.  required inside bracket expressions due to the fact that a bracket
  12317.  expression historically only matched a single character.  If ch is a
  12318.  collating element, a range [a-z] (if ``ch'' falls within it) matches ch.
  12319.  Outside brackets, an expression ch is treated as two concatenated
  12320.  characters, matching the string ``ch''.  The [.ch.] expression is
  12321.  intended to allow the specification of a multicharacter collating element
  12322.  separately from ranges in a bracket expression.  Character classes are
  12323.  not intended to include collating elements; there is no requirement that
  12324.  all characters in a multicharacter collating element belong to the same
  12325.  character class (for instance ``Ch'' is ``alpha'' but neither ``upper''
  12326.  nor ''lower'').  Introducing collating elements in character classes
  12327.  would be nonintuitive.
  12328.  
  12329.  It was suggested that, because ranges may or may not be meaningful (or
  12330.  even accepted) based on the current collating sequence, they should be
  12331.  
  12332.  
  12333.                Copyright c 1991 IEEE.  All rights reserved.
  12334.       This is an unapproved IEEE Standards Draft, subject to change.
  12335.  
  12336.  
  12337.  
  12338.  
  12339.  
  12340.  2.8 Regular Expression Notation                                       157
  12341.  
  12342.  
  12343.  
  12344.  
  12345.  
  12346.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  12347.  
  12348.  eliminated from the syntax (or at least marked obsolescent).  It was
  12349.  suggested that, e.g., [z-a] should always be or never be an error,
  12350.  regardless of collating sequence.  The working group did not wish to
  12351.  eliminate ranges from the syntax.  While it is true that ranges may not
  12352.  be universally portable, they are nevertheless a useful and fundamental
  12353.  construct in regular expressions.  The regular expression syntax has
  12354.  consciously been extended to provide both increased portability and
  12355.  extended local capabilities.  Where supported, ranges must reflect the
  12356.  current collating sequence.  The working group instead elected to include
  12357.  range expressions as an implementation requirement, but state that
  12358.  strictly conforming applications (but not, e.g., National-Body-conforming
  12359.  applications) shall not use range expressions.  Treating erroneous ranges
  12360.  as invalid points out that these may not be portable across collating
  12361.  sequences; and is better than (silently) making them behave in a way
  12362.  contrary to the intents of the user.
  12363.  
  12364.  Earlier drafts allowed the use of an equivalence class expression as the   2
  12365.  starting or ending point of a range expression, such as [[=e=]-f].  This   2
  12366.  now produces unspecified results because it is possible to define the      2
  12367.  equivalence class as a disjoint set of characters.  This example could     2
  12368.  produce different results on various systems:                              2
  12369.  
  12370.      - An error.                                                            2
  12371.  
  12372.      - The equivalent of [[=e=]e-f] (which is the correct portable way to   2
  12373.        include equivalence class effects in a bracket expression).          2
  12374.  
  12375.      - All of the collating elements from the lowest value found in the     2
  12376.        equivalence class, including any of the elements found between the   2
  12377.        disjoint values.                                                     2
  12378.  
  12379.  Consideration was given to saying that equivalence classes with disjoint   2
  12380.  elements produce unspecified results at the start or end of a range, but   2
  12381.  since the application cannot predict which equivalence classes are         2
  12382.  disjoint, this is no improvement over the more general statement chosen.   2
  12383.  
  12384.  It was suggested that, while reference to nonprintable characters is
  12385.  partially supported by the proposed set of character classes, the
  12386.  specificity is not precise enough, and that additional character classes
  12387.  should be supported, e.g., [:tab:] or [:a:].  The working group rejected
  12388.  this proposal, because this feature would represent a substantial
  12389.  enhancement to the current regular expression syntax, and one that cannot
  12390.  be based on internationalization requirements.  It is judged that its
  12391.  inclusion would reduce consensus.  A future revision of regular
  12392.  expressions should study the capability to create temporary character
  12393.  classes for use in regular expressions; a ``character class macro
  12394.  facility.''
  12395.  
  12396.  
  12397.  
  12398.  
  12399.                Copyright c 1991 IEEE.  All rights reserved.
  12400.       This is an unapproved IEEE Standards Draft, subject to change.
  12401.  
  12402.  
  12403.  
  12404.  
  12405.  
  12406.  158                                2 Terminology and General Requirements
  12407.  
  12408.  
  12409.  
  12410.  
  12411.  
  12412.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  12413.  
  12414.  2.8.6.3.3  BREs Matching Multiple Characters Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e
  12415.             _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  12416.  
  12417.  The limit of nine backreferences to subexpressions in the RE is based on
  12418.  the use of a single digit identifier; increasing this to multiple digits
  12419.  would break historical applications.  This does not imply that only nine   1
  12420.  subexpressions are allowed in REs.  The following is a valid BRE with ten  1
  12421.  subexpressions:                                                            1
  12422.  
  12423.  \(\(\(ab\)*c\)*d\)\(ef\)*\(gh\)\{2\}\(ij\)*\(kl\)*\(mn\)*\(op\)*\(qr\)*    1
  12424.  
  12425.  The working group regards the common current behavior, which supports
  12426.  \_n*, but not \_n\{_m_i_n,_m_a_x\}, or \(...\)*, or \(...\)\{_m_i_n,_m_a_x\}, as a
  12427.  nonintentional result of a specific implementation, and supports both
  12428.  duplication and interval expressions following subexpressions and
  12429.  backreferences.
  12430.  
  12431.  2.8.6.3.4  Expression Anchoring Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t
  12432.             _o_f _P_1_0_0_3._2)
  12433.  
  12434.  Often, the dollar-sign is viewed as matching the ending <newline> in text
  12435.  files.  This is not strictly true; the <newline> is typically eliminated
  12436.  from the strings to be matched and the dollar-sign matches the
  12437.  terminating null character.
  12438.  
  12439.  The ability of ^, $, and * to be nonspecial in certain circumstances may   1
  12440.  be confusing to some programmers, but this situation was changed only in   1
  12441.  a minor way from historical practice to avoid breaking many existing       1
  12442.  scripts.  Some consideration was given to making the use of the anchoring  1
  12443.  characters undefined if not escaped and not at the beginning or end of     1
  12444.  strings.  This would cause a number of historical BREs, such as 2^10,      1
  12445.  $HOME, and $1.35, which relied on the characters being treated literally,  1
  12446.  to become invalid.                                                         1
  12447.  
  12448.  However, one relatively uncommon case was changed to allow an extension    1
  12449.  used on some implementations.  Historically, the BREs ^foo and \(^foo\)    1
  12450.  did not match the same string, despite the general rule that               1
  12451.  subexpressions and entire BREs match the same strings.  To achieve         1
  12452.  balloting consensus, POSIX.2 has allowed an extension on some systems to   1
  12453.  treat these two cases in the same way by declaring that anchoring _m_a_y      1
  12454.  occur at the beginning or end of a subexpression.  Therefore, portable     1
  12455.  BREs that require a literal circumflex at the beginning or a dollar-sign   1
  12456.  at the end of a subexpression must escape them.  Note that a BRE such as   1
  12457.  a\(^bc\) will either match a^bc or nothing on different systems under the  1
  12458.  POSIX.2 rules.                                                             1
  12459.  
  12460.  ERE anchoring has been different from BRE anchoring in all historical      1
  12461.  systems.  An unescaped anchor character has never matched its literal      1
  12462.  counterpart outside of a bracket expression.  Some systems treated         1
  12463.  
  12464.  
  12465.                Copyright c 1991 IEEE.  All rights reserved.
  12466.       This is an unapproved IEEE Standards Draft, subject to change.
  12467.  
  12468.  
  12469.  
  12470.  
  12471.  
  12472.  2.8 Regular Expression Notation                                       159
  12473.  
  12474.  
  12475.  
  12476.  
  12477.  
  12478.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  12479.  
  12480.  foo$bar as a valid expression that never matched anything, others treated  1
  12481.  it as invalid.  POSIX.2 mandates the former, valid unmatched behavior.     1
  12482.  
  12483.  Some systems have extended the BRE syntax to add alternation.  For         1
  12484.  example, the subexpression \(foo$\|bar\) would match either foo at the     1
  12485.  end of the string or bar anywhere.  The extension is triggered by the use  1
  12486.  of the undefined \| sequence.  Because the BRE is undefined for portable   1
  12487.  scripts, the extending system is free to make other assumptions, such as   1
  12488.  that the $ represents the end-of-line anchor in the middle of a            1
  12489.  subexpression.  If it were not for the extension, the $ would match a      1
  12490.  literal dollar-sign under the POSIX.2 rules.                               1
  12491.  
  12492.  
  12493.  2.8.6.4  Extended Regular Expressions Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  12494.           _p_a_r_t _o_f _P_1_0_0_3._2)
  12495.  
  12496.  As with basic regular expressions, the working group decided to make the
  12497.  interpretation of escaped ordinary characters undefined.
  12498.  
  12499.  The right-parenthesis is not listed as an ERE special character because    1
  12500.  it is only special in the context of a preceding left-parenthesis.  If     1
  12501.  found without a preceding left-parenthesis, the right-parenthesis has no   1
  12502.  special meaning.                                                           1
  12503.  
  12504.  Based on objections in several ballots, the _i_n_t_e_r_v_a_l _e_x_p_r_e_s_s_i_o_n, {_m,_n},
  12505.  has been added to extended regular expressions.  Historically, the
  12506.  interval expression has only been supported in some extended regular
  12507.  expression implementations.  The working group estimated that the
  12508.  addition of interval expressions to extended regular expressions would
  12509.  not decrease consensus, and would also make basic regular expressions
  12510.  more of a subset of extended regular expressions than in many historical
  12511.  implementations.
  12512.  
  12513.  It was suggested that, in addition to interval expressions,
  12514.  backreferences (\_n) also should be added to extended regular expressions.
  12515.  This was rejected by the working group as likely to decrease consensus.
  12516.  
  12517.  In historical implementations, multiple duplication symbols are usually
  12518.  interpreted from left to right and treated as additive.  As an example,
  12519.  a+*b matches zero or more instances of a followed by a b.  In POSIX.2,
  12520.  multiple duplication symbols are undefined; i.e., they cannot be relied
  12521.  upon for portable applications.  One reason for this is to provide some
  12522.  scope for future enhancements; the current syntax is very crowded.
  12523.  
  12524.  The precedence of operations differs between EREs and those in lex; in
  12525.  lex, for historical reasons, interval expressions have a lower precedence
  12526.  than concatenation.
  12527.  
  12528.  
  12529.  
  12530.  
  12531.                Copyright c 1991 IEEE.  All rights reserved.
  12532.       This is an unapproved IEEE Standards Draft, subject to change.
  12533.  
  12534.  
  12535.  
  12536.  
  12537.  
  12538.  160                                2 Terminology and General Requirements
  12539.  
  12540.  
  12541.  
  12542.  
  12543.  
  12544.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  12545.  
  12546.  2.8.6.5  Regular Expression Grammar Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  12547.           _p_a_r_t _o_f _P_1_0_0_3._2)
  12548.  
  12549.  None.
  12550.  
  12551.  END_RATIONALE
  12552.  
  12553.  
  12554.  
  12555.  2.9  Dependencies on Other Standards
  12556.  
  12557.  
  12558.  2.9.1  Features Inherited from POSIX.1
  12559.  
  12560.  This subclause describes some of the features provided by POSIX.1 {8}
  12561.  that are assumed to be globally available by all systems conforming to
  12562.  POSIX.2.  This subclause does not attempt to detail all of the
  12563.  POSIX.1 {8} features that are required by all of the utilities and
  12564.  functions defined in this standard; the utility and function descriptions
  12565.  point out additional functionality required to provide the corresponding
  12566.  specific features needed by each.
  12567.  
  12568.  The following subclauses describe frequently used concepts.  Utility and
  12569.  function description statements override these defaults when appropriate.
  12570.  
  12571.  BEGIN_RATIONALE
  12572.  
  12573.  2.9.1.0.1  Features Inherited from POSIX.1 Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s
  12574.             _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  12575.  
  12576.  It has been pointed out that POSIX.2 assumes that a lot of POSIX.1 {8}
  12577.  functionality is present, but never states exactly how much.  This is an
  12578.  attempt to clarify the assumptions.
  12579.  
  12580.  This subclause only covers the ``utilities and functions defined by this
  12581.  standard.''  It does not mandate that the specific POSIX.1 {8} interfaces
  12582.  themselves be available to all application programs.  A C language
  12583.  program compiled on a POSIX.2 system is not guaranteed that any of the
  12584.  POSIX.1 {8} functions are accessible.  (For example, although UNIX
  12585.  system-based implementations of ls will use _s_t_a_t() to get file status, a
  12586.  POSIX.2 implementation of ls on a ``LONG_NAME_OS-based'' implementation
  12587.  might use the _g_e_t__f_i_l_e__a_t_t_r_i_b_u_t_e_s() and the _g_e_t__f_i_l_e__t_i_m_e__s_t_a_m_p_s() system
  12588.  calls.)  POSIX.2 only requires equivalent functionality, not equal means
  12589.  of access.  In any event, programs requiring the POSIX.1 {8} system
  12590.  interface should specify that they need POSIX.1 {8} conformance and not
  12591.  hope to achieve it by piggybacking on POSIX.2.
  12592.  
  12593.  END_RATIONALE
  12594.  
  12595.  
  12596.  
  12597.                Copyright c 1991 IEEE.  All rights reserved.
  12598.       This is an unapproved IEEE Standards Draft, subject to change.
  12599.  
  12600.  
  12601.  
  12602.  
  12603.  
  12604.  2.9 Dependencies on Other Standards                                   161
  12605.  
  12606.  
  12607.  
  12608.  
  12609.  
  12610.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  12611.  
  12612.  2.9.1.1  Process Attributes
  12613.  
  12614.  The following process attributes, as described in POSIX.1 {8}, are
  12615.  assumed to be supported for all processes in POSIX.2:
  12616.  
  12617.             controlling terminal        real group ID
  12618.             current working directory   real user ID
  12619.             effective group ID          root directory
  12620.             effective user ID           saved set-group-ID
  12621.             file descriptors            saved set-user-ID
  12622.             file mode creation mask     session membership
  12623.             process ID                  supplementary group IDs
  12624.             process group ID
  12625.  
  12626.  A conforming implementation may include additional process attributes.
  12627.  
  12628.  BEGIN_RATIONALE
  12629.  
  12630.  2.9.1.1.1  Process Attributes Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  12631.             _P_1_0_0_3._2)
  12632.  
  12633.  The supplementary group IDs requirement is minimal.  If {NGROUPS_MAX} is
  12634.  defined to be zero, they are not required.  If {NGROUPS_MAX} is greater
  12635.  than zero, the supplementary group IDs are used as described in
  12636.  POSIX.1 {8} in various permission checking operations.
  12637.  
  12638.  The saved-set-group-ID and saved-set-user-ID requirements are also
  12639.  minimal.  If {_POSIX_SAVED_IDS} is defined, they are required; otherwise,
  12640.  they are not.
  12641.  
  12642.  A controlling terminal is needed to control access to /dev/tty.
  12643.  
  12644.  The file creation semantics of POSIX.2 require the effective group ID,
  12645.  effective user ID, and the file mode creation mask.
  12646.  
  12647.  Pathname resolution and access permission checks require the current
  12648.  working directory, effective group ID, effective user ID, and root
  12649.  directory.
  12650.  
  12651.  The kill utility requires the effective group ID, effective user ID,
  12652.  process ID, process group ID, real group ID, real user ID, saved set-
  12653.  group-ID, saved set-user-ID, and session membership attributes to perform
  12654.  the various signal addressing and permission checks.
  12655.  
  12656.  The id utility is based on the effective group ID, effective user ID,
  12657.  real group ID, real user ID, and supplementary group IDs.
  12658.  
  12659.  The following process attributes described in POSIX.1 {8} do not seem to
  12660.  be required by POSIX.2:  parent process ID, pending signals, process
  12661.  
  12662.  
  12663.                Copyright c 1991 IEEE.  All rights reserved.
  12664.       This is an unapproved IEEE Standards Draft, subject to change.
  12665.  
  12666.  
  12667.  
  12668.  
  12669.  
  12670.  162                                2 Terminology and General Requirements
  12671.  
  12672.  
  12673.  
  12674.  
  12675.  
  12676.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  12677.  
  12678.  signal mask, time left until an alarm clock signal, _t_m_s__c_s_t_i_m_e,
  12679.  _t_m_s__c_u_t_i_m_e, _t_m_s__s_t_i_m_e, and _t_m_s__u_t_i_m_e.  There are probably other
  12680.  attributes mentioned in POSIX.1 {8} that are not listed here.
  12681.  
  12682.  END_RATIONALE
  12683.  
  12684.  
  12685.  2.9.1.2  Concurrent Execution of Processes
  12686.  
  12687.  The following functionality of the POSIX.1 {8} _f_o_r_k() function shall be
  12688.  available on all POSIX.2 conformant systems:
  12689.  
  12690.      (1)  Independent processes shall be capable of executing
  12691.           independently without either process terminating.
  12692.  
  12693.      (2)  A process shall be able to create a new process with all of the
  12694.           attributes referenced in 2.9.1.1, determined according to the
  12695.           semantics of a call to the POSIX.1 {8} _f_o_r_k() function followed
  12696.           by a call in the child process to one of the POSIX.1 {8} _e_x_e_c
  12697.           functions.
  12698.  
  12699.  BEGIN_RATIONALE
  12700.  
  12701.  2.9.1.2.1  Concurrent Execution of Processes Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e
  12702.             _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  12703.  
  12704.  The historical functionality of _f_o_r_k() is required, which permits the
  12705.  concurrent execution of independent processes.  A system with a single
  12706.  thread of process execution is not an appropriate base upon which to
  12707.  build a POSIX.2 system.  (This requirement was not explicitly stated in
  12708.  the 1988 POSIX.1, but is included in the current POSIX.1 {8}.)
  12709.  
  12710.  END_RATIONALE
  12711.  
  12712.  2.9.1.3  File Access Permissions
  12713.  
  12714.  The file access control mechanism described by _f_i_l_e _a_c_c_e_s_s _p_e_r_m_i_s_s_i_o_n_s in
  12715.  2.2.2.55 applies to all files on a conforming POSIX.2 implementation.
  12716.  
  12717.  BEGIN_RATIONALE
  12718.  
  12719.  2.9.1.3.1  File Access Permissions Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  12720.             _p_a_r_t _o_f _P_1_0_0_3._2)
  12721.  
  12722.  The entire concept of file protections and access control is assumed to
  12723.  be handled as in POSIX.1 {8}.
  12724.  
  12725.  END_RATIONALE
  12726.  
  12727.  
  12728.  
  12729.                Copyright c 1991 IEEE.  All rights reserved.
  12730.       This is an unapproved IEEE Standards Draft, subject to change.
  12731.  
  12732.  
  12733.  
  12734.  
  12735.  
  12736.  2.9 Dependencies on Other Standards                                   163
  12737.  
  12738.  
  12739.  
  12740.  
  12741.  
  12742.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  12743.  
  12744.  2.9.1.4  File Read, Write, and Creation
  12745.  
  12746.  When a file is to be read or written, the file shall be opened with an
  12747.  access mode corresponding to the operation to be performed.  If file
  12748.  access permissions deny access, the requested operation shall fail.
  12749.  
  12750.  When a file that does not exist is created, the following POSIX.1 {8}
  12751.  features shall apply unless the utility or function description states
  12752.  otherwise:
  12753.  
  12754.      (1)  The file's user ID is set to the effective user ID of the
  12755.           calling process.
  12756.  
  12757.      (2)  The file's group ID is set to the effective group ID of the
  12758.           calling process or the group ID of the directory in which the
  12759.           file is being created.
  12760.  
  12761.      (3)  The file's permission bits are set to:
  12762.  
  12763.                 S_IROTH | S_IWOTH | S_IRGRP | S_IWGRP | S_IRUSR | S_IWUSR
  12764.  
  12765.           (see POSIX.1 {8} 5.6.1.2) except that the bits specified by the
  12766.           process's file mode creation mask are cleared.
  12767.  
  12768.      (4)  The _s_t__a_t_i_m_e, _s_t__c_t_i_m_e, and _s_t__m_t_i_m_e fields of the file shall be
  12769.           updated as specified in _f_i_l_e _t_i_m_e_s _u_p_d_a_t_e in 2.2.2.69.
  12770.  
  12771.      (5)  If the file is a directory, it shall be an empty directory;
  12772.           otherwise the file shall have length zero.
  12773.  
  12774.      (6)  Unless otherwise specified, the file created shall be a regular
  12775.           file.
  12776.  
  12777.  When an attempt is made to create a file that already exists, the action
  12778.  shall depend on the file type:
  12779.  
  12780.      (1)  For directories and FIFO special files, the attempt shall fail
  12781.           and the utility shall either continue with its operation or exit
  12782.           immediately with a nonzero status, depending on the description
  12783.           of the utility.
  12784.  
  12785.      (2)  For regular files:
  12786.  
  12787.            (a)  The file's user ID, group ID, and permission bits shall
  12788.                 not be changed.
  12789.  
  12790.            (b)  The file shall be truncated to zero length.
  12791.  
  12792.  
  12793.  
  12794.  
  12795.                Copyright c 1991 IEEE.  All rights reserved.
  12796.       This is an unapproved IEEE Standards Draft, subject to change.
  12797.  
  12798.  
  12799.  
  12800.  
  12801.  
  12802.  164                                2 Terminology and General Requirements
  12803.  
  12804.  
  12805.  
  12806.  
  12807.  
  12808.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  12809.  
  12810.            (c)  The _s_t__c_t_i_m_e and _s_t__m_t_i_m_e fields shall be marked for
  12811.                 update.
  12812.  
  12813.      (3)  For other file types, the effect is implementation defined.
  12814.  
  12815.  When a file is to be appended, the file shall be opened in a manner
  12816.  equivalent to using the O_APPEND flag, without the O_TRUNC flag, in the
  12817.  POSIX.1 {8} _o_p_e_n() call.
  12818.  
  12819.  BEGIN_RATIONALE
  12820.  
  12821.  2.9.1.4.1  File Read, Write, and Creation Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s
  12822.             _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  12823.  
  12824.  Even though it might be possible for a process to change the mode of a
  12825.  file to match a requested operation and change the mode back to its
  12826.  original state after the operation is completed, utilities are not
  12827.  allowed to do this unless the utility description states otherwise.  As
  12828.  an example, the ed utility r command fails if the file to be read does
  12829.  not exist (even though it could create the file and then read it) or the
  12830.  file permissions do not allow read access [even though it could use the
  12831.  POSIX.1 {8} _c_h_m_o_d() function to make the file readable before attempting
  12832.  to open the file].
  12833.  
  12834.  END_RATIONALE
  12835.  
  12836.  
  12837.  2.9.1.5  File Removal
  12838.  
  12839.  When a directory that is the root directory or current working directory
  12840.  of any process is removed, the effect is implementation defined.  If file
  12841.  access permissions deny access, the requested operation shall fail.
  12842.  Otherwise, when a file is removed:
  12843.  
  12844.      (1)  Its directory entry shall be removed from the file system.
  12845.  
  12846.      (2)  The link count of the file shall be decremented.
  12847.  
  12848.      (3)  If the file is an empty directory (see 2.2.2.43):
  12849.  
  12850.            (a)  If no process has the directory open, the space occupied
  12851.                 by the directory shall be freed and the directory shall no
  12852.                 longer be accessible.
  12853.  
  12854.            (b)  If one or more processes have the directory open, the
  12855.                 directory contents shall be preserved until all references
  12856.                 to the file have been closed.
  12857.  
  12858.  
  12859.  
  12860.  
  12861.                Copyright c 1991 IEEE.  All rights reserved.
  12862.       This is an unapproved IEEE Standards Draft, subject to change.
  12863.  
  12864.  
  12865.  
  12866.  
  12867.  
  12868.  2.9 Dependencies on Other Standards                                   165
  12869.  
  12870.  
  12871.  
  12872.  
  12873.  
  12874.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  12875.  
  12876.      (4)  If the file is a directory that is not empty, the _s_t__c_t_i_m_e field
  12877.           shall be marked for update.
  12878.  
  12879.      (5)  If the file is not a directory:
  12880.  
  12881.            (a)  If the link count becomes zero:
  12882.  
  12883.                  [1]  If no process has the file open, the space occupied
  12884.                       by the file shall be freed and the file shall no
  12885.                       longer be accessible.
  12886.  
  12887.                  [2]  If one or more processes have the file open, the
  12888.                       file contents shall be preserved until all
  12889.                       references to the file have been closed.
  12890.  
  12891.            (b)  If the link count is not reduced to zero, the _s_t__c_t_i_m_e
  12892.                 field shall be marked for update.
  12893.  
  12894.      (6)  The _s_t__c_t_i_m_e and _s_t__m_t_i_m_e fields of the containing directory
  12895.           shall be marked for update.
  12896.  
  12897.  BEGIN_RATIONALE
  12898.  
  12899.  2.9.1.5.1  File Removal Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  12900.             _P_1_0_0_3._2)
  12901.  
  12902.  This is intended to be a summary of the POSIX.1 {8} _u_n_l_i_n_k() and _r_m_d_i_r()
  12903.  requirements needed by POSIX.2.
  12904.  
  12905.  END_RATIONALE
  12906.  
  12907.  
  12908.  2.9.1.6  File Time Values
  12909.  
  12910.  All files have the three time values described by _f_i_l_e _t_i_m_e_s _u_p_d_a_t_e in
  12911.  2.2.2.69.
  12912.  
  12913.  BEGIN_RATIONALE
  12914.  
  12915.  2.9.1.6.1  File Time Values Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  12916.             _P_1_0_0_3._2)
  12917.  
  12918.  All three time stamps specified by POSIX.1 {8} are needed for utilities
  12919.  like find, ls, make, test, and touch to work as expected.
  12920.  
  12921.  END_RATIONALE
  12922.  
  12923.  
  12924.  
  12925.  
  12926.  
  12927.                Copyright c 1991 IEEE.  All rights reserved.
  12928.       This is an unapproved IEEE Standards Draft, subject to change.
  12929.  
  12930.  
  12931.  
  12932.  
  12933.  
  12934.  166                                2 Terminology and General Requirements
  12935.  
  12936.  
  12937.  
  12938.  
  12939.  
  12940.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  12941.  
  12942.  2.9.1.7  File Contents
  12943.  
  12944.  When a reference is made to the contents of a file, _p_a_t_h_n_a_m_e, this means
  12945.  the equivalent of all of the data placed in the space pointed to by _b_u_f
  12946.  when performing the _r_e_a_d() function calls in the following POSIX.1 {8}
  12947.  operations:
  12948.  
  12949.        while (read (fildes, buf, nbytes) > 0)
  12950.                ;
  12951.  
  12952.  If the file is indicated by a pathname _p_a_t_h_n_a_m_e, the file descriptor
  12953.  shall be determined by the equivalent of the following POSIX.1 operation:
  12954.  
  12955.        fildes = open (pathname, O_RDONLY);
  12956.  
  12957.  The value of _n_b_y_t_e_s in the above sequence is unspecified; if the file is
  12958.  of a type where the data returned by _r_e_a_d() would vary with different
  12959.  values, the value shall be one that results in the most data being
  12960.  returned.
  12961.  
  12962.  If the _r_e_a_d() function calls would return an error, it is unspecified
  12963.  whether the contents of the file are considered to include any data from
  12964.  offsets in the file beyond where the error would be returned.
  12965.  
  12966.  BEGIN_RATIONALE
  12967.  
  12968.  2.9.1.7.1  File Contents Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  12969.             _P_1_0_0_3._2)
  12970.  
  12971.  This description is intended to convey the traditional behavior for all
  12972.  types of files.  This matches the intuitive meaning for regular files,
  12973.  but the meaning is not always intuitive for other types of files.  In
  12974.  particular, for FIFOs, pipes, and terminals it must be clear that the
  12975.  contents are not necessarily static at the time a file is opened, but
  12976.  they include the data returned by a sequence of reads until end-of-file
  12977.  is indicated.  This is why the _o_p_e_n() call is specified, with the
  12978.  O_NONBLOCK flag not set.
  12979.  
  12980.  Some files, especially character special files, are sensitive to the size
  12981.  of a _r_e_a_d() request.  The contents of the file are those resulting from
  12982.  proper choice of this size.
  12983.  
  12984.  END_RATIONALE
  12985.  
  12986.  
  12987.  
  12988.  
  12989.  
  12990.  
  12991.  
  12992.  
  12993.                Copyright c 1991 IEEE.  All rights reserved.
  12994.       This is an unapproved IEEE Standards Draft, subject to change.
  12995.  
  12996.  
  12997.  
  12998.  
  12999.  
  13000.  2.9 Dependencies on Other Standards                                   167
  13001.  
  13002.  
  13003.  
  13004.  
  13005.  
  13006.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  13007.  
  13008.  2.9.1.8  Pathname Resolution
  13009.  
  13010.  The pathname resolution algorithm described by _p_a_t_h_n_a_m_e _r_e_s_o_l_u_t_i_o_n in
  13011.  2.2.2.104 shall be used by conforming POSIX.2 implementations.  See also
  13012.  _f_i_l_e _h_i_e_r_a_r_c_h_y in 2.2.2.58.
  13013.  
  13014.  BEGIN_RATIONALE
  13015.  
  13016.  2.9.1.8.1  Pathname Resolution Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t
  13017.             _o_f _P_1_0_0_3._2)
  13018.  
  13019.  The whole concept of hierarchical file systems and pathname resolution is
  13020.  assumed to be handled as in POSIX.1 {8}.
  13021.  
  13022.  END_RATIONALE
  13023.  
  13024.  
  13025.  2.9.1.9  Changing the Current Working Directory                            2
  13026.  
  13027.  When the current working directory (see 2.2.2.159) is to be changed,       2
  13028.  unless the utility or function description states otherwise, the           2
  13029.  operation shall succeed unless a call to the POSIX.1 {8} _c_h_d_i_r() function  2
  13030.  would fail when invoked with the new working directory pathname as its     2
  13031.  argument.                                                                  2
  13032.  
  13033.  2.9.1.9.1  Changing the Current Working Directory Rationale. (_T_h_i_s         2
  13034.             _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)                             2
  13035.  
  13036.  This subclause covers the access permissions and pathname structures       2
  13037.  involved with changing directories, such as with cd or (the UPE-extended)  2
  13038.  mailx utilities.                                                           2
  13039.  
  13040.  2.9.1.10  Establish the Locale
  13041.  
  13042.  The functionality of the POSIX.1 {8} _s_e_t_l_o_c_a_l_e() function is assumed to
  13043.  be available on all POSIX.2 conformant systems; i.e., utilities that
  13044.  require the capability of establishing an international operating
  13045.  environment shall be permitted to set the specified category of the
  13046.  international environment.
  13047.  
  13048.  BEGIN_RATIONALE
  13049.  
  13050.  2.9.1.10.1  Establish the Locale Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t
  13051.              _o_f _P_1_0_0_3._2)
  13052.  
  13053.  The entire concept of locale categories such as the LC_* variables along
  13054.  with any implementation-defined categories is assumed to be handled as in
  13055.  POSIX.1 {8}.
  13056.  
  13057.  
  13058.  
  13059.                Copyright c 1991 IEEE.  All rights reserved.
  13060.       This is an unapproved IEEE Standards Draft, subject to change.
  13061.  
  13062.  
  13063.  
  13064.  
  13065.  
  13066.  168                                2 Terminology and General Requirements
  13067.  
  13068.  
  13069.  
  13070.  
  13071.  
  13072.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  13073.  
  13074.  END_RATIONALE
  13075.  
  13076.  
  13077.  2.9.1.11  Actions Equivalent to POSIX.1 Functions
  13078.  
  13079.  Some utility descriptions specify that a utility performs actions
  13080.  equivalent to a POSIX.1 {8} function.  Such specifications require only
  13081.  that the external effects be equivalent, not that any effect within the
  13082.  utility and visible only to the utility be equivalent.
  13083.  
  13084.  BEGIN_RATIONALE
  13085.  
  13086.  2.9.1.11.1  Actions Equivalent to POSIX.1 Functions Rationale. (_T_h_i_s
  13087.              _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  13088.  
  13089.  An objection was received to an earlier draft that said this approach of
  13090.  equivalent functions was unreasonable, as the reader (and the person
  13091.  writing a test suite) would be responsible for interpreting which
  13092.  portions of POSIX.1 {8} were included and which were not.  For example,
  13093.  would such intermediate effects as the setting of _e_r_r_n_o be required if
  13094.  the related POSIX.1 {8} function called for that?  The answer is no:
  13095.  this standard is only concerned with the end results of functions against
  13096.  the file system and the environment, and not any intermediate values or
  13097.  results visible only to the programmer using the POSIX.1 {8} function in
  13098.  a C (or other high-level language) program.
  13099.  
  13100.  END_RATIONALE
  13101.  
  13102.  
  13103.  2.9.2  Concepts Derived from the C Standard
  13104.  
  13105.  Some of the standard utilities perform complex data manipulation using
  13106.  their own procedure and arithmetic languages, as defined in their
  13107.  Extended Description or Operands subclauses.  Unless otherwise noted, the
  13108.  arithmetic and semantic concepts (precision, type conversion, control
  13109.  flow, etc.) are equivalent to those defined in the C Standard {7}, as
  13110.  described in the following subclauses.  Note that there is no requirement
  13111.  that the standard utilities be implemented in any particular programming
  13112.  language.
  13113.  
  13114.  BEGIN_RATIONALE
  13115.  
  13116.  2.9.2.0.1  Concepts Derived from the C Standard Rationale. (_T_h_i_s
  13117.             _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  13118.  
  13119.  This subclause was introduced to answer complaints that there was
  13120.  insufficient detail presented by such utilities as awk or sh about their
  13121.  procedural control statements and their methods of performing arithmetic
  13122.  functions.  Earlier drafts, derived heavily from the original manual
  13123.  pages, contained statements such as ``for loops similar to the
  13124.  
  13125.                Copyright c 1991 IEEE.  All rights reserved.
  13126.       This is an unapproved IEEE Standards Draft, subject to change.
  13127.  
  13128.  
  13129.  
  13130.  
  13131.  
  13132.  2.9 Dependencies on Other Standards                                   169
  13133.  
  13134.  
  13135.  
  13136.  
  13137.  
  13138.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  13139.  
  13140.  C Standard {7},'' which was good enough for a general understanding, but
  13141.  insufficient for a real implementation.
  13142.  
  13143.  The C Standard {7} was selected as a model because most historical
  13144.  implementations of the standard utilities were written in C.  Thus, it is
  13145.  more likely that they will act in a manner desired by POSIX.2 without
  13146.  modification.
  13147.  
  13148.  Using the C Standard {7} is primarily a notational convenience, so the
  13149.  many ``little languages'' in POSIX.2 would not have to be rigorously
  13150.  described in every aspect.  Its selection does not require that the
  13151.  standard utilities be written in Standard C; they could be written in
  13152.  common-usage C, Ada, Pascal, assembler language, or anything else.
  13153.  
  13154.  The sizes of the various numeric values refer to C-language datatypes      1
  13155.  that are allowed to be different sizes by the C Standard {7}.  Thus, like  1
  13156.  a C-language application, a shell application cannot rely on their exact   1
  13157.  size.  However, it can rely on their minimum sizes expressed in the        1
  13158.  C Standard {7}, such as {LONG_MAX} for a _l_o_n_g type.                        1
  13159.  
  13160.  END_RATIONALE                                                              1
  13161.  
  13162.  
  13163.  2.9.2.1  Arithmetic Precision and Operations
  13164.  
  13165.  Integer variables and constants, including the values of operands and
  13166.  option-arguments, used by the standard utilities shall be implemented as
  13167.  equivalent to the C Standard {7} _s_i_g_n_e_d _l_o_n_g data type; floating point
  13168.  shall be implemented as equivalent to the C Standard {7} _d_o_u_b_l_e type.
  13169.  Conversions between types shall be as described in the C Standard {7}.
  13170.  All variables shall be initialized to zero if they are not otherwise
  13171.  assigned by the application's input.
  13172.  
  13173.  Arithmetic operators and functions shall be implemented as equivalent to
  13174.  those in the cited C Standard {7} section, as listed in Table 2-14.
  13175.  
  13176.  The evaluation of arithmetic expressions shall be equivalent to that
  13177.  described in the C Standard {7} section 3.3 Expressions.
  13178.  
  13179.  2.9.2.2  Mathematic Functions
  13180.  
  13181.  Any mathematic functions with the same names as those in the C Standard
  13182.  {7}'s sections:
  13183.  
  13184.     4.5       _M_a_t_h_e_m_a_t_i_c_s <math.h>
  13185.  
  13186.     4.10.2    _P_s_e_u_d_o-_r_a_n_d_o_m _s_e_q_u_e_n_c_e _g_e_n_e_r_a_t_i_o_n _f_u_n_c_t_i_o_n_s
  13187.  
  13188.  
  13189.  
  13190.  
  13191.                Copyright c 1991 IEEE.  All rights reserved.
  13192.       This is an unapproved IEEE Standards Draft, subject to change.
  13193.  
  13194.  
  13195.  
  13196.  
  13197.  
  13198.  170                                2 Terminology and General Requirements
  13199.  
  13200.  
  13201.  
  13202.  
  13203.  
  13204.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  13205.  
  13206.  
  13207.              Table 2-14  -  C Standard Operators and Functions
  13208.  
  13209.  _________________________________________________________________________
  13210.  ___________O_p_e_r_a_t_i_o_n________________C__S_t_a_n_d_a_r_d__{_7_}__E_q_u_i_v_a_l_e_n_t__R_e_f_e_r_e_n_c_e____
  13211.    ( )                              _3._3._1 _P_r_i_m_a_r_y _E_x_p_r_e_s_s_i_o_n_s
  13212.  _________________________________________________________________________
  13213.    postfix ++                       _3._3._2 _P_o_s_t_f_i_x _O_p_e_r_a_t_o_r_s
  13214.  __p_o_s_t_f_i_x__-_-______________________________________________________________
  13215.    unary +
  13216.    unary -
  13217.    prefix ++
  13218.    prefix --                        _3._3._3 _U_n_a_r_y _O_p_e_r_a_t_o_r_s
  13219.  
  13220.    ~!
  13221.    sizeof()
  13222.  _________________________________________________________________________
  13223.    *
  13224.    /                                _3._3._5 _M_u_l_t_i_p_l_i_c_a_t_i_v_e _O_p_e_r_a_t_o_r_s
  13225.  __%_______________________________________________________________________
  13226.  | +                             |                                        |
  13227.  | -                             |  _3._3._6 _A_d_d_i_t_i_v_e _O_p_e_r_a_t_o_r_s              |
  13228.  _|________________________________|________________________________________|
  13229.  | <<                            |  _3._3._7 _B_i_t_w_i_s_e _S_h_i_f_t _O_p_e_r_a_t_o_r_s         |
  13230.  _|_>_>______________________________|________________________________________|
  13231.  | <,  <=                        |                                        |
  13232.  | >,  >=                        |  _3._3._8 _R_e_l_a_t_i_o_n_a_l _O_p_e_r_a_t_o_r_s            |
  13233.  _|________________________________|________________________________________|
  13234.  | ==                            |  _3._3._9 _E_q_u_a_l_i_t_y _O_p_e_r_a_t_o_r_s              |
  13235.  _|_!_=______________________________|________________________________________|
  13236.  | &                             |  _3._3._1_0 _B_i_t_w_i_s_e _A_N_D _O_p_e_r_a_t_o_r           |
  13237.  _|________________________________|________________________________________|
  13238.  _|_^_______________________________|____3.___3.___1__1___B__i__t__w__i__s__e___E__x__c__l__u__s__i__v__e___O__R___O__p__e__r__a__t__o__r__|
  13239.  | |                             |  _3._3._1_2 _B_i_t_w_i_s_e _I_n_c_l_u_s_i_v_e _O_R _O_p_e_r_a_t_o_r  |
  13240.  _|________________________________|________________________________________|
  13241.  _|_&_&______________________________|____3.___3.___1__3___L__o__g__i__c__a__l___A__N__D___O__p__e__r__a__t__o__r___________|
  13242.  | ||                            |  _3._3._1_4 _L_o_g_i_c_a_l _O_R _O_p_e_r_a_t_o_r            |
  13243.  _|________________________________|________________________________________|
  13244.  _|___e__x__p__r?___e__x__p__r:___e__x__p__r_________________|____3.___3.___1__5___C__o__n__d__i__t__i__o__n__a__l___O__p__e__r__a__t__o__r___________|
  13245.  | =,  *=,  /=,  %=,  +=,  -=    |                                        |
  13246.  | <<=,  >>=,  &=,  ^=,  |=      |  _3._3._1_6 _A_s_s_i_g_n_m_e_n_t _O_p_e_r_a_t_o_r_s           |
  13247.  _|________________________________|________________________________________|
  13248.  | if ( )                        |                                        |
  13249.  | _i_f ( )  ... else              |  _3._6._4 _S_e_l_e_c_t_i_o_n _S_t_a_t_e_m_e_n_t_s            |
  13250.  _|___s__w__i__t__c__h_(__)______________________|________________________________________|
  13251.  | _w_h_i_l_e ( )                     |                                        |
  13252.  | _d_o ... _w_h_i_l_e ( )              |  _3._6._5 _I_t_e_r_a_t_i_o_n _S_t_a_t_e_m_e_n_t_s            |
  13253.  | _f_o_r ( )                       |                                        |
  13254.  _|________________________________|________________________________________|
  13255.  | _g_o_t_o                          |                                        |
  13256.  |                               |                                        |
  13257.  |             Copyright c 1991 IE|EE.  All rights reserved.               |
  13258.  |    This is an unapproved IEEE S|tandards Draft, subject to change.      |
  13259.  |                               |                                        |
  13260.  |                               |                                        |
  13261.  |                               |                                        |
  13262.  |                               |                                        |
  13263.  |                               |                                        |
  13264.  2|.9 Dependencies on Other Standar|ds                                   171|
  13265.  |                               |                                        |
  13266.  |                               |                                        |
  13267.  |                               |                                        |
  13268.  |                               |                                        |
  13269.  |                               |                                        |
  13270.  P|1003.2/D11.2                   |           INFORMATION TECHNOLOGY--POSIX|
  13271.  |                               |                                        |
  13272.  | _c_o_n_t_i_n_u_e                      |                                        |
  13273.  | _b_r_e_a_k                         |  _3._6._6 _J_u_m_p _S_t_a_t_e_m_e_n_t_s                 |
  13274.  | _r_e_t_u_r_n                        |                                        |
  13275.  _|________________________________|________________________________________|
  13276.  
  13277.  
  13278.  shall be implemented to return the results equivalent to those returned
  13279.  from a call to the corresponding C function described in the
  13280.  C Standard {7}.
  13281.  
  13282.  
  13283.  2.10  Utility Conventions
  13284.  
  13285.  
  13286.  2.10.1  Utility Argument Syntax
  13287.  
  13288.  This subclause describes the argument syntax of the standard utilities
  13289.  and introduces terminology used throughout the standard for describing
  13290.  the arguments processed by the utilities.
  13291.  
  13292.  Within the standard, a special notation is used for describing the syntax
  13293.  of a utility's arguments.  Unless otherwise noted, all utility
  13294.  descriptions use this notation, which is illustrated by this example (see
  13295.  3.9.1):
  13296.  
  13297.  
  13298.        utility_name  [-a] [-b] [-c _o_p_t_i_o_n__a_r_g_u_m_e_n_t] [-d | -e]
  13299.                      [-f_o_p_t_i_o_n__a_r_g_u_m_e_n_t] [_o_p_e_r_a_n_d ...]
  13300.  
  13301.  The notation used for the Synopsis subclauses imposes requirements on the
  13302.  implementors of the standard utilities and provides a simple reference
  13303.  for the reader of the standard.
  13304.  
  13305.      (1)  The utility in the example is named utility_name.  It is
  13306.           followed by _o_p_t_i_o_n_s, _o_p_t_i_o_n-_a_r_g_u_m_e_n_t_s, and _o_p_e_r_a_n_d_s.  The
  13307.           arguments that consist of hyphens and single letters or digits,
  13308.           such as -a, are known as _o_p_t_i_o_n_s (or, historically, _f_l_a_g_s).
  13309.           Certain options are followed by an _o_p_t_i_o_n-_a_r_g_u_m_e_n_t, as shown
  13310.           with [-c _o_p_t_i_o_n__a_r_g_u_m_e_n_t].  The arguments following the last
  13311.           options and option-arguments are named _o_p_e_r_a_n_d_s.
  13312.  
  13313.      (2)  Option-arguments are sometimes shown separated from their
  13314.           options by <blanks>, sometimes directly adjacent.  This reflects
  13315.           the situation that in some cases an option-argument is included
  13316.           within the same argument string as the option; in most cases it
  13317.           is the next argument.  The Utility Syntax Guidelines in 2.10.2
  13318.           require that the option be a separate argument from its option-
  13319.           argument, but there are some exceptions in this standard to
  13320.           ensure continued operation of historical applications:
  13321.  
  13322.  
  13323.                Copyright c 1991 IEEE.  All rights reserved.
  13324.       This is an unapproved IEEE Standards Draft, subject to change.
  13325.  
  13326.  
  13327.  
  13328.  
  13329.  
  13330.  172                                2 Terminology and General Requirements
  13331.  
  13332.  
  13333.  
  13334.  
  13335.  
  13336.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  13337.  
  13338.            (a)  If the Synopsis of a standard utility shows a <space>
  13339.                 between an option and option-argument (as with
  13340.                 [-c _o_p_t_i_o_n__a_r_g_u_m_e_n_t] in the example), a conforming
  13341.                 application shall use separate arguments for that option
  13342.                 and its option-argument.
  13343.  
  13344.            (b)  If a <space> is not shown (as with [-f_o_p_t_i_o_n__a_r_g_u_m_e_n_t] in
  13345.                 the example), a conforming application shall place an
  13346.                 option and its option-argument directly adjacent in the
  13347.                 same argument string, without intervening <blank>s.
  13348.  
  13349.            (c)  Notwithstanding the requirements on conforming
  13350.                 applications, a conforming implementation shall permit,
  13351.                 but shall not require, an application to specify options
  13352.                 and option-arguments as separate arguments whether or not
  13353.                 a <space> is shown on the synopsis line.
  13354.  
  13355.            (d)  A standard utility may also be implemented to operate
  13356.                 correctly when the required separation into multiple
  13357.                 arguments is violated by a nonconforming application.
  13358.  
  13359.      (3)  Options are usually listed in alphabetical order unless this
  13360.           would make the utility description more confusing.  There are no
  13361.           implied relationships between the options based upon the order
  13362.           in which they appear, unless otherwise stated in the Options
  13363.           subclause, or unless the exception in 2.10.2 guideline 11
  13364.           applies.  If an option that does not have option-arguments is
  13365.           repeated, the results are undefined, unless otherwise stated.
  13366.  
  13367.      (4)  Frequently, names of parameters that require substitution by
  13368.           actual values are shown with embedded underscores.
  13369.           Alternatively, parameters are shown as follows:
  13370.  
  13371.                 <_p_a_r_a_m_e_t_e_r _n_a_m_e>
  13372.  
  13373.           The angle brackets are used for the symbolic grouping of a
  13374.           phrase representing a single parameter and shall never be
  13375.           included in data submitted to the utility.
  13376.  
  13377.      (5)  When a utility has only a few permissible options, they are
  13378.           sometimes shown individually, as in the example.  Utilities with
  13379.           many flags generally show all of the individual flags (that do
  13380.           not take option-arguments) grouped, as in:
  13381.  
  13382.  
  13383.                 utility_name  [-abcDxyz] [-p _a_r_g] [_o_p_e_r_a_n_d]
  13384.  
  13385.           Utilities with very complex arguments may be shown as follows:
  13386.  
  13387.  
  13388.  
  13389.                Copyright c 1991 IEEE.  All rights reserved.
  13390.       This is an unapproved IEEE Standards Draft, subject to change.
  13391.  
  13392.  
  13393.  
  13394.  
  13395.  
  13396.  2.10 Utility Conventions                                              173
  13397.  
  13398.  
  13399.  
  13400.  
  13401.  
  13402.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  13403.  
  13404.                 utility_name  [_o_p_t_i_o_n_s] [_o_p_e_r_a_n_d_s]
  13405.  
  13406.      (6)  Unless otherwise specified, whenever an operand or option-
  13407.           argument is or contains a numeric value:
  13408.  
  13409.            - the number shall be interpreted as a decimal integer.
  13410.  
  13411.            - numerals in the range 0 to 2147483647 shall be syntactically
  13412.              recognized as numeric values.
  13413.  
  13414.            - When the utility description states that it accepts negative
  13415.              numbers as operands or option-arguments, numerals in the
  13416.              range -2147483647 to 2147483647 shall be syntactically
  13417.              recognized as numeric values.
  13418.  
  13419.           This does not mean that all numbers within the allowable range
  13420.           are necessarily semantically correct.  A standard utility that
  13421.           accepts an option-argument or operand that is to be interpreted
  13422.           as a number, and for which a range of values smaller than that
  13423.           shown above is permitted by this standard, describes that
  13424.           smaller range along with the description of the option-argument
  13425.           or operand.  If an error is generated, the utility's diagnostic
  13426.           message shall indicate that the value is out of the supported
  13427.           range, not that it is syntactically incorrect.
  13428.  
  13429.      (7)  Arguments or option-arguments enclosed in the [ and ] notation
  13430.           are optional and can be omitted.  The [ and ] symbols shall
  13431.           never be included in data submitted to the utility.
  13432.  
  13433.      (8)  Arguments separated by the | vertical bar notation are mutually
  13434.           exclusive.  The | symbols shall never be included in data
  13435.           submitted to the utility.  Alternatively, mutually exclusive
  13436.           options and operands may be listed with multiple Synopsis lines.
  13437.           For example:
  13438.  
  13439.  
  13440.                 utility_name  -d [-a] [-c _o_p_t_i_o_n__a_r_g_u_m_e_n_t] [_o_p_e_r_a_n_d ...]
  13441.                 utility_name  -e [-b] [_o_p_e_r_a_n_d ...]
  13442.  
  13443.           When multiple synopsis lines are given for a utility, that is an
  13444.           indication that the utility has mutually exclusive arguments.
  13445.           These mutually exclusive arguments alter the functionality of
  13446.           the utility so that only certain other arguments are valid in
  13447.           combination with one of the mutually exclusive arguments.  Only
  13448.           one of the mutually exclusive arguments is allowed for
  13449.           invocation of the utility.  Unless otherwise stated in an
  13450.           accompanying Options subclause, the relationships between
  13451.           arguments depicted in the Synopsis subclauses are mandatory
  13452.           requirements placed on conforming applications.  The use of
  13453.  
  13454.  
  13455.                Copyright c 1991 IEEE.  All rights reserved.
  13456.       This is an unapproved IEEE Standards Draft, subject to change.
  13457.  
  13458.  
  13459.  
  13460.  
  13461.  
  13462.  174                                2 Terminology and General Requirements
  13463.  
  13464.  
  13465.  
  13466.  
  13467.  
  13468.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  13469.  
  13470.           conflicting mutually exclusive arguments produces undefined
  13471.           results, unless a utility description specifies otherwise.  When
  13472.           an option is shown without the [ ] brackets, it means that
  13473.           option is required for that version of the Synopsis.  However,
  13474.           it is not required to be the first argument, as shown in the
  13475.           example above, unless otherwise stated.
  13476.  
  13477.      (9)  Ellipses (...) are used to denote that one or more occurrences
  13478.           of an option or operand are allowed.  When an option or an
  13479.           operand followed by ellipses is enclosed in brackets, zero or
  13480.           more options or operands can be specified.  The forms
  13481.  
  13482.  
  13483.                 utility_name  -f _o_p_t_i_o_n__a_r_g_u_m_e_n_t ...  [_o_p_e_r_a_n_d ...]         1
  13484.                 utility_name  [-g _o_p_t_i_o_n__a_r_g_u_m_e_n_t] ...  [_o_p_e_r_a_n_d ...]
  13485.  
  13486.           indicate that multiple occurrences of the option and its
  13487.           option-argument preceding the ellipses are valid, with semantics
  13488.           as indicated in the Options subclause of the utility.  (See also
  13489.           Guideline 11 in 2.10.2.)  In the first example, each option-      1
  13490.           argument requires a preceding -f and at least one                 1
  13491.           -f _o_p_t_i_o_n__a_r_g_u_m_e_n_t must be given.                                 1
  13492.  
  13493.     (10)  When the synopsis line is too long to be printed on a single
  13494.           line in this document, the indented lines following the initial
  13495.           line are continuation lines.  An actual use of the command would
  13496.           appear on a single logical line.
  13497.  
  13498.  BEGIN_RATIONALE
  13499.  
  13500.  
  13501.  2.10.1.1  Utility Argument Syntax Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  13502.            _p_a_r_t _o_f _P_1_0_0_3._2)
  13503.  
  13504.  This is the subclause where the definitions of _o_p_t_i_o_n, _o_p_t_i_o_n-_a_r_g_u_m_e_n_t,
  13505.  and _o_p_e_r_a_n_d come together.
  13506.  
  13507.  The working group felt that recent trends toward diluting the Synopsis
  13508.  subclauses of historical manual pages to something like:
  13509.  
  13510.        command  [_o_p_t_i_o_n_s] [_o_p_e_r_a_n_d_s]
  13511.  
  13512.  were a disservice to the reader.  Therefore, considerable effort was
  13513.  placed into rigorous definitions of all the command line arguments and
  13514.  their interrelationships.  The relationships depicted in the Synopses are
  13515.  normative parts of this standard; this information is sometimes repeated
  13516.  in textual form, but that is only for clarity within context.
  13517.  
  13518.  
  13519.  
  13520.  
  13521.                Copyright c 1991 IEEE.  All rights reserved.
  13522.       This is an unapproved IEEE Standards Draft, subject to change.
  13523.  
  13524.  
  13525.  
  13526.  
  13527.  
  13528.  2.10 Utility Conventions                                              175
  13529.  
  13530.  
  13531.  
  13532.  
  13533.  
  13534.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  13535.  
  13536.  The use of ``undefined'' for conflicting argument usage and for repeated
  13537.  usage of the same option is meant to prevent portable applications from
  13538.  using conflicting arguments or repeated options, unless specifically
  13539.  allowed, as is the case with ls (which allows simultaneous, repeated use
  13540.  of the -C, -l, and -1 options).  Many historical implementations will
  13541.  tolerate this usage, choosing either the first or the last applicable
  13542.  argument, and this tolerance can continue, but portable applications
  13543.  cannot rely upon it.  (Other implementations may choose to print usage
  13544.  messages instead.)
  13545.  
  13546.  The use of ``undefined'' for conflicting argument usage also allows an
  13547.  implementation to make reasonable extensions to utilities where the
  13548.  implementor considers mutually exclusive options according to POSIX.2 to
  13549.  have a sensible meaning and result.
  13550.  
  13551.  POSIX.2 does not define the result of a utility when an option-argument
  13552.  or operand is not followed by ellipses and the application specifies more
  13553.  than one of that option-argument or operand.  This allows an
  13554.  implementation to define valid (although nonstandard) behavior for the
  13555.  utility when more than one such option or operand are specified.
  13556.  
  13557.  Allowing <blank>s after an option (i.e., placing an option and its
  13558.  option-argument into separate argument strings) when the standard does
  13559.  not require it encourages portability of users, while still preserving
  13560.  backward compatibility of scripts.  Inserting <blank>s between the option
  13561.  and the option-argument is preferred; however, historical usage has not
  13562.  been consistent in this area; therefore, <blank>s are required to be
  13563.  handled by all implementations, but implementations are also allowed to
  13564.  handle the historical syntax.  Another justification for selecting the
  13565.  multiple-argument method was that the single-argument case is inherently
  13566.  ambiguous when the option-argument can legitimately be a null string.
  13567.  
  13568.  Wording was also added to explicitly state that digits are permitted as
  13569.  operands and option-arguments.  The lower and upper bounds for the values
  13570.  of the numbers used for operands and option-arguments were derived from
  13571.  the C Standard {7} values for {LONG_MIN} and {LONG_MAX}.  The requirement
  13572.  on the standard utilities is that numbers in the specified range do not
  13573.  cause a syntax error although the specification of a number need not be
  13574.  semantically correct for a particular operand or option-argument of a
  13575.  utility.  For example, the specification of dd obs=3000000000 would yield
  13576.  undefined behavior for the application and would be a syntax error
  13577.  because the number 3000000000 is outside of the range -2147483647 to
  13578.  +2147483647.  On the other hand, dd obs=2000000000 may cause some error,
  13579.  such as ``blocksize too large,'' rather than a syntax error.
  13580.  
  13581.  END_RATIONALE
  13582.  
  13583.  
  13584.  
  13585.  
  13586.  
  13587.                Copyright c 1991 IEEE.  All rights reserved.
  13588.       This is an unapproved IEEE Standards Draft, subject to change.
  13589.  
  13590.  
  13591.  
  13592.  
  13593.  
  13594.  176                                2 Terminology and General Requirements
  13595.  
  13596.  
  13597.  
  13598.  
  13599.  
  13600.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  13601.  
  13602.  2.10.2  Utility Syntax Guidelines
  13603.  
  13604.  The following guidelines are established for the naming of utilities and
  13605.  for the specification of options, option-arguments, and operands.  Clause
  13606.  7.5 describes a function that assists utilities in handling options and
  13607.  operands that conform to these guidelines.
  13608.  
  13609.  Operands and option-arguments can contain characters not specified in
  13610.  2.4.
  13611.  
  13612.  The guidelines are intended to provide guidance to the authors of future
  13613.  utilities.  Some of the standard utilities do not conform to all of these
  13614.  guidelines; in those cases, the Options subclauses describe the
  13615.  deviations.
  13616.  
  13617.     Guideline  1:    Utility names should be between two and nine
  13618.                      characters, inclusive.
  13619.  
  13620.     Guideline  2:    Utility names should include lowercase letters (the
  13621.                      lower character classification) from the set
  13622.                      described in 2.4 and digits only.
  13623.  
  13624.     Guideline  3:    Each option name should be a single alphanumeric
  13625.                      character (the alnum character classification) from
  13626.                      the set described in 2.4.  The -W (capital-W) option
  13627.                      shall be reserved for vendor extensions.
  13628.  
  13629.                      NOTE:  The other alphanumeric characters are subject
  13630.                      to standardization in the future, based on historical
  13631.                      usage.  Implementors should be aware that future
  13632.                      POSIX working groups may offer little sympathy to
  13633.                      vendors with isolated extensions in conflict with
  13634.                      future drafts.
  13635.  
  13636.     Guideline  4:    All options should be preceded by the '-' delimiter
  13637.                      character.
  13638.  
  13639.     Guideline  5:    Options without option-arguments should be accepted
  13640.                      when grouped behind one '-' delimiter.
  13641.  
  13642.     Guideline  6:    Each option and option-argument should be a separate
  13643.                      argument, except as noted in 2.10.1, item (2).
  13644.  
  13645.     Guideline  7:    Option-arguments should not be optional.
  13646.  
  13647.     Guideline  8:    When multiple option-arguments are specified to
  13648.                      follow a single option, they should be presented as a
  13649.                      single argument, using commas within that argument or  2
  13650.                      <blank>s within that argument to separate them.
  13651.  
  13652.  
  13653.                Copyright c 1991 IEEE.  All rights reserved.
  13654.       This is an unapproved IEEE Standards Draft, subject to change.
  13655.  
  13656.  
  13657.  
  13658.  
  13659.  
  13660.  2.10 Utility Conventions                                              177
  13661.  
  13662.  
  13663.  
  13664.  
  13665.  
  13666.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  13667.  
  13668.     Guideline  9:    All options should precede operands on the command
  13669.                      line.
  13670.  
  13671.     Guideline 10:    The argument "--" should be accepted as a delimiter
  13672.                      indicating the end of options.  Any following
  13673.                      arguments should be treated as operands, even if they
  13674.                      begin with the '-' character.  The "--" argument
  13675.                      should not be used as an option or as an operand.
  13676.  
  13677.     Guideline 11:    The order of different options relative to one
  13678.                      another should not matter, unless the options are
  13679.                      documented as mutually exclusive and such an option
  13680.                      is documented to override any incompatible options
  13681.                      preceding it.  If an option that has option-arguments
  13682.                      is repeated, the option and option-argument
  13683.                      combinations should be interpreted in the order
  13684.                      specified on the command line.
  13685.  
  13686.     Guideline 12:    The order of operands may matter and position-related
  13687.                      interpretations should be determined on a utility-
  13688.                      specific basis.
  13689.  
  13690.     Guideline 13:    For utilities that use operands to represent files to
  13691.                      be opened for either reading or writing, the "-"
  13692.                      operand should be used only to mean standard input
  13693.                      (or standard output when it is clear from context
  13694.                      that an output file is being specified).
  13695.  
  13696.  Any utility claiming conformance to these guidelines shall conform
  13697.  completely to these guidelines, as if these guidelines contained the term
  13698.  ``shall'' instead of ``should,'' except that the utility is permitted to
  13699.  accept usage in violation of these guidelines for backward compatibility
  13700.  as long as the required form is also accepted.
  13701.  
  13702.  Guidelines 1 and 2 are offered as guidance for locales using Latin
  13703.  alphabets.  No recommendations are made by this standard concerning
  13704.  utility naming in other locales.
  13705.  
  13706.  BEGIN_RATIONALE
  13707.  
  13708.  
  13709.  2.10.2.1  Utility Syntax Guidelines Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  13710.            _p_a_r_t _o_f _P_1_0_0_3._2)
  13711.  
  13712.  This subclause is based on the rules listed in the _S_V_I_D.  It was included
  13713.  for two reasons:
  13714.  
  13715.      (1)  The individual utility descriptions in Sections 4, 5, and 6, and
  13716.           Annexes A and C needed a set of common (although not universal)
  13717.           actions on which they could anchor their descriptions of option
  13718.  
  13719.                Copyright c 1991 IEEE.  All rights reserved.
  13720.       This is an unapproved IEEE Standards Draft, subject to change.
  13721.  
  13722.  
  13723.  
  13724.  
  13725.  
  13726.  178                                2 Terminology and General Requirements
  13727.  
  13728.  
  13729.  
  13730.  
  13731.  
  13732.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  13733.  
  13734.           and operand syntax.  Most of the standard utilities actually do
  13735.           use these guidelines, and many of their historical
  13736.           implementations use the _g_e_t_o_p_t() function for their parsing.
  13737.           Therefore, it was simpler to cite the rules and merely identify
  13738.           exceptions.
  13739.  
  13740.      (2)  Writers of portable applications need suggested guidelines if
  13741.           the POSIX community is to avoid the chaos of historical UNIX
  13742.           system command syntax.
  13743.  
  13744.  It is recommended that all _f_u_t_u_r_e utilities and applications use these
  13745.  guidelines to enhance ``user portability.''  The fact that some
  13746.  historical utilities could not be changed (to avoid breaking existing
  13747.  applications) should not deter this future goal.
  13748.  
  13749.  The voluntary nature of the guidelines is highlighted by repeated uses of
  13750.  the word _s_h_o_u_l_d throughout.  This usage should not be misinterpreted to
  13751.  imply that utilities that claim conformance in their Options subclauses
  13752.  do not always conform.
  13753.  
  13754.  Guideline 2 recommends the naming of utilities.  In 3.9.1, it is further
  13755.  stated that a command used in the shell command language cannot be named
  13756.  with a trailing colon.
  13757.  
  13758.  Guideline 3 was changed to allow alphanumeric characters (letters and
  13759.  digits) from the character set to allow compatibility with historical
  13760.  usage.  Historical practice allows the use of digits wherever practical;
  13761.  and there are no portability issues that would prohibit the use of
  13762.  digits.  In fact, from an internationalization viewpoint, digits (being
  13763.  nonlanguage dependent) are preferable over letters (a ``-2'' is
  13764.  intuitively self-explanatory to any user, while in the ``-f  _f_i_l_e_n_a_m_e''
  13765.  the letter f is a mnemonic aid only to speakers of Latin based languages
  13766.  where ``filename'' happens to translate to a word that begins with f.
  13767.  Since guideline 3 still retains the word ``single,'' multidigit options
  13768.  are not allowed.  Instances of historical utilities that used them have
  13769.  been marked obsolescent in this standard, with the numbers being changed
  13770.  from option names to option-arguments.
  13771.  
  13772.  It is difficult to come up with a satisfactory solution to the problem of
  13773.  namespace in option characters.  When the POSIX.2 group desired to extend
  13774.  the historical cc utility to accept C Standard {7} programs, it found
  13775.  that all of the portable alphabet was already in use by various vendors.
  13776.  Thus, it had to devise a new name, c89, rather than something like cc -X.
  13777.  There were suggestions that implementors be restricted to providing
  13778.  extensions through various means (such as using a plus-sign as the option
  13779.  delimiter or using option characters outside the alphanumeric set) that
  13780.  would reserve all of the remaining alphanumeric characters for future
  13781.  POSIX standards.  These approaches were resisted because they lacked the
  13782.  historical style of UNIX.  Furthermore, if a vendor-provided option
  13783.  
  13784.  
  13785.                Copyright c 1991 IEEE.  All rights reserved.
  13786.       This is an unapproved IEEE Standards Draft, subject to change.
  13787.  
  13788.  
  13789.  
  13790.  
  13791.  
  13792.  2.10 Utility Conventions                                              179
  13793.  
  13794.  
  13795.  
  13796.  
  13797.  
  13798.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  13799.  
  13800.  should become commonly used in the industry, it would be a candidate for
  13801.  standardization.  It would be desireable to standardize such a feature
  13802.  using existing practice for the syntax (the semantics can be standardized
  13803.  with any syntax).  This would not be possible if the syntax was one
  13804.  reserved for the vendor.  However, since the standardization process may
  13805.  lead to minor changes in the semantics, it may prove to be better for a
  13806.  vendor to use a syntax that will not be affected by standardization.  As
  13807.  a compromise, the following statements are made by the developers of
  13808.  POSIX.2:
  13809.  
  13810.      - In future revisions to this standard, and in other POSIX standards,
  13811.        every attempt will be made to develop new utilities and features
  13812.        that conform to the Utility Syntax Guidelines.
  13813.  
  13814.      - Future extensions and additions to POSIX standards will not use the
  13815.        -W (capital W) option.  This option is forever reserved to
  13816.        implementors for extensions, in a manner reminiscent of the
  13817.        option's use in historical versions of the cc utility.  The other
  13818.        alphanumeric characters are subject to standardization in the
  13819.        future, based on historical usage.
  13820.  
  13821.  Implementors should be cognizant of these intentions and aware that
  13822.  future POSIX working groups will offer little sympathy to vendors with
  13823.  extensions in conflict with future drafts.  In the first version of
  13824.  POSIX.2, vendors held a virtual veto power when conflicts arose with
  13825.  their extensions; in the future, POSIX working groups may be less
  13826.  concerned about preserving isolated extensions that conflict with these
  13827.  statements of intent.
  13828.  
  13829.  Guideline 8 includes the concept of comma-separated lists in a single
  13830.  argument.  It is up to the utility to parse such a list itself because
  13831.  _g_e_t_o_p_t() just returns the single string.  This situation was retained so
  13832.  that certain historical utilities wouldn't violate the guidelines.
  13833.  Applications preparing for international use should be aware of an
  13834.  occasional problem with comma-separated lists:  in some locales, the
  13835.  comma is used as the radix character.  Thus, if an application is
  13836.  preparing operands for a utility that expects a comma-separated lists, it
  13837.  should avoid generating noninteger values through one of the means that
  13838.  is influenced by setting the LC_NUMERIC variable [such as awk, bc,
  13839.  printf, or _p_r_i_n_t_f()].
  13840.  
  13841.  Applications calling any utility with a first operand starting with "-"
  13842.  should usually specify "--", as indicated by Guideline 10, to mark the
  13843.  end of the options.  This is true even if the Synopsis in this standard
  13844.  does not specify any options; implementations may provide options as
  13845.  extensions to this standard.  The standard utilities that do not support
  13846.  Guideline 10 indicate that fact in the Options subclause of the utility
  13847.  description.
  13848.  
  13849.  
  13850.  
  13851.                Copyright c 1991 IEEE.  All rights reserved.
  13852.       This is an unapproved IEEE Standards Draft, subject to change.
  13853.  
  13854.  
  13855.  
  13856.  
  13857.  
  13858.  180                                2 Terminology and General Requirements
  13859.  
  13860.  
  13861.  
  13862.  
  13863.  
  13864.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  13865.  
  13866.  Guideline 11 was modified to clarify that the order of different options
  13867.  should not matter relative to one another.  However, the order of
  13868.  repeated options that also have option-arguments may be significant;
  13869.  therefore, such options are required to be interpreted in the order that
  13870.  they are specified.  The make utility is an instance of a historical
  13871.  utility that uses repeated options in which the order is significant.
  13872.  Multiple files are specified by giving multiple instances of the -f
  13873.  option, for example:
  13874.  
  13875.        make -f common_header -f specific_rules target
  13876.  
  13877.  Guideline 13 does not imply that all of the standard utilities
  13878.  automatically accept the operand "-" to mean standard input or output,
  13879.  nor does it specify the actions of the utility upon encountering multiple
  13880.  "-" operands.  It simply says that, by default, "-" operands shall not be
  13881.  used for other purposes in the file reading/writing [but not _s_t_a_t()ing,
  13882.  _u_n_l_i_n_k()ing, touch_i_n_g, etc.] utilities.  All information concerning
  13883.  actual treatment of the "-" operand is found in the individual utility
  13884.  clauses.
  13885.  
  13886.  An area of concern that was expressed during the balloting process was
  13887.  that as implementations mature implementation-defined utilities and
  13888.  implementation-defined utility options will result.  The notion was
  13889.  expressed that there needed to be a standard way, say an environment
  13890.  variable or some such mechanism, to identify implementation-defined
  13891.  utilities separately from standard utilities that may have the same name.
  13892.  It was decided that there already exist several ways of dealing with this
  13893.  situation and that it is outside of the scope of the standard to attempt
  13894.  to standardize in the area of nonstandard items.  A method that exists on
  13895.  some historical implementations is the use of the so-called /local/bin or
  13896.  /usr/local/bin directory to separate local or additional copies or
  13897.  versions of utilities.  Another method that is also used is to isolate
  13898.  utilities into completely separate domains.  Still another method to
  13899.  ensure that the desired utility is being used is to request the utility
  13900.  by its full pathname.  There are, to be sure, many approaches to this
  13901.  situation; the examples given above serve to illustrate that there is
  13902.  more than one.
  13903.  
  13904.  END_RATIONALE
  13905.  
  13906.  
  13907.  
  13908.  
  13909.  
  13910.  
  13911.  
  13912.  
  13913.  
  13914.  
  13915.  
  13916.  
  13917.                Copyright c 1991 IEEE.  All rights reserved.
  13918.       This is an unapproved IEEE Standards Draft, subject to change.
  13919.  
  13920.  
  13921.  
  13922.  
  13923.  
  13924.  2.10 Utility Conventions                                              181
  13925.  
  13926.  
  13927.  
  13928.  
  13929.  
  13930.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  13931.  
  13932.  2.11  Utility Description Defaults
  13933.  
  13934.  This clause describes all of the subclauses used within the utility
  13935.  clauses in Section 4 and the other sections that describe standard
  13936.  utilities.  It describes:
  13937.  
  13938.      (1)  Intended usage of the subclause.
  13939.  
  13940.      (2)  Global defaults that affect all the standard utilities.
  13941.  
  13942.  BEGIN_RATIONALE
  13943.  
  13944.  
  13945.  2.11.0.1  Utility Description Defaults Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t
  13946.            _a _p_a_r_t _o_f _P_1_0_0_3._2)
  13947.  
  13948.  This clause is arranged with headings in the same order as all the
  13949.  utility descriptions.  It is a collection of related and unrelated
  13950.  information concerning:
  13951.  
  13952.      (1)  The default actions of utilities.
  13953.  
  13954.      (2)  The meanings of notations used in the standard that are specific
  13955.           to individual utility subclauses.
  13956.  
  13957.  Although this material may seem out of place in Section 2, it is
  13958.  important that this information appear before any of the utilities to be
  13959.  described later.  Unfortunately, since the utilities are split into
  13960.  multiple major sections (chapters), this information could not be placed
  13961.  into any one of those sections without confusing cross references.
  13962.  
  13963.  END_RATIONALE
  13964.  
  13965.  
  13966.  2.11.1  Synopsis
  13967.  
  13968.  The Synopsis subclause summarizes the syntax of the calling sequence for
  13969.  the utility, including options, option-arguments, and operands.
  13970.  Standards for utility naming are described in 2.10.2; for describing the
  13971.  utility's arguments in 2.10.1.
  13972.  
  13973.  
  13974.  2.11.2  Description
  13975.  
  13976.  The Description subclause describes the actions of the utility.  If the
  13977.  utility has a very complex set of subcommands or its own procedural
  13978.  language, an Extended Description subclause is also provided.  Most
  13979.  explanations of optional functionality are omitted here, as they are
  13980.  usually explained in the Options subclause.
  13981.  
  13982.  
  13983.                Copyright c 1991 IEEE.  All rights reserved.
  13984.       This is an unapproved IEEE Standards Draft, subject to change.
  13985.  
  13986.  
  13987.  
  13988.  
  13989.  
  13990.  182                                2 Terminology and General Requirements
  13991.  
  13992.  
  13993.  
  13994.  
  13995.  
  13996.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  13997.  
  13998.  Some utilities in this standard are described in terms of equivalent
  13999.  POSIX.1 {8} functionality.  As explained in 1.1, a fully conforming
  14000.  POSIX.1 {8} base is not a prerequisite for this standard.  When specific
  14001.  functions are cited, the underlying operating system shall provide
  14002.  equivalent functionality and all side effects associated with successful
  14003.  execution of the function.  The treatment of errors and intermediate
  14004.  results from the individual functions cited are generally not specified
  14005.  by this standard.  See the utility's Exit Status and Consequences of
  14006.  Errors subclauses for all actions associated with errors encountered by
  14007.  the utility.
  14008.  
  14009.  
  14010.  2.11.3  Options
  14011.  
  14012.  The Options subclause describes the utility options and option-arguments,
  14013.  and how they modify the actions of the utility.  Standard utilities that
  14014.  have options either fully comply with the 2.10.2 or describe all
  14015.  deviations.  Apparent disagreements between functionality descriptions in
  14016.  the Options and Description (or Extended Description) subclauses are
  14017.  always resolved in favor of the Options subclause.
  14018.  
  14019.  Each Options subclause that uses the phrase ``The ... utility shall
  14020.  conform to the utility argument syntax guidelines ...'' refers only to
  14021.  the use of the utility as specified by this standard; implementation
  14022.  extensions should also conform to the guidelines, but may allow
  14023.  exceptions for historical practice.
  14024.  
  14025.  Unless otherwise stated in the utility description, when given an option
  14026.  unrecognized by the implementation, or when a required option-argument is
  14027.  not provided, standard utilities shall issue a diagnostic message to
  14028.  standard error and exit with a nonzero exit status.
  14029.  
  14030.  Default Behavior:  When this subclause is listed as ``None,'' it means
  14031.  that the implementation need not support any options.  Standard utilities
  14032.  that do not accept options, but that do accept operands, shall recognize
  14033.  "--" as a first argument to be discarded.
  14034.  
  14035.  BEGIN_RATIONALE
  14036.  
  14037.  
  14038.  2.11.3.1  Options Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  14039.  
  14040.  Although it has not always been possible, the working group has tried to
  14041.  avoid repeating information and therefore reduced the risk that the
  14042.  duplicate explanations are somehow modified to be out of sync.
  14043.  
  14044.  The requirement for recognizing -- is because portable applications need
  14045.  a way to shield their operands from any arbitrary options that the
  14046.  implementation may provide as an extension.  For example, if the standard
  14047.  utility foo is listed as taking no options, and the application needed to
  14048.  
  14049.                Copyright c 1991 IEEE.  All rights reserved.
  14050.       This is an unapproved IEEE Standards Draft, subject to change.
  14051.  
  14052.  
  14053.  
  14054.  
  14055.  
  14056.  2.11 Utility Description Defaults                                     183
  14057.  
  14058.  
  14059.  
  14060.  
  14061.  
  14062.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  14063.  
  14064.  give it a pathname with a leading hyphen, it could safely do it as:
  14065.  
  14066.        foo -- -myfile
  14067.  
  14068.  and avoid any problems with -m used as an extension.
  14069.  
  14070.  END_RATIONALE
  14071.  
  14072.  
  14073.  2.11.4  Operands
  14074.  
  14075.  The Operands subclause describes the utility operands, and how they
  14076.  affect the actions of the utility.  Apparent disagreements between
  14077.  functionality descriptions in the Operands and Description (or Extended
  14078.  Description) subclauses are always resolved in favor of the Operands
  14079.  subclause.
  14080.  
  14081.  If an operand naming a file can be specified as -, which means to use the
  14082.  standard input instead of a named file, this shall be explicitly stated
  14083.  in this subclause.  Unless otherwise stated, the use of multiple
  14084.  instances of - to mean standard input in a single command produces
  14085.  unspecified results.
  14086.  
  14087.  Unless otherwise stated, the standard utilities that accept operands
  14088.  shall process those operands in the order specified in the command line.
  14089.  
  14090.  Default Behavior:  When this subclause is listed as ``None,'' it means
  14091.  that the implementation need not support any operands.
  14092.  
  14093.  BEGIN_RATIONALE
  14094.  
  14095.  
  14096.  2.11.4.1  Operands Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  14097.  
  14098.  This usage of - is never shown in the Synopsis.  Similarly, this usage of
  14099.  -- is never shown.
  14100.  
  14101.  The requirement for processing operands in command line order is to avoid
  14102.  a ``WeirdNIX'' utility that might choose to sort the input files
  14103.  alphabetically, by size, or by directory order.  Although this might be
  14104.  acceptable for some utilities, in general the programmer has a right to
  14105.  know exactly what order will be chosen.
  14106.  
  14107.  Some of the standard utilities take multiple _f_i_l_e operands and act as if
  14108.  they were processing the concatenation of those files.  For example,
  14109.  
  14110.        asa file1 file2          and          cat file1 file2 | asa
  14111.  
  14112.  have similar results when questions of file access, errors, and
  14113.  performance are ignored.  Other utilities, such as grep or wc, have
  14114.  
  14115.                Copyright c 1991 IEEE.  All rights reserved.
  14116.       This is an unapproved IEEE Standards Draft, subject to change.
  14117.  
  14118.  
  14119.  
  14120.  
  14121.  
  14122.  184                                2 Terminology and General Requirements
  14123.  
  14124.  
  14125.  
  14126.  
  14127.  
  14128.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  14129.  
  14130.  completely different results in these two cases.  This latter type of
  14131.  utility is always identified in its Description or Operands subclauses,
  14132.  whereas the former is not.  Although it might be possible to create a
  14133.  general assertion about the former case, the following points must be
  14134.  addressed:
  14135.  
  14136.      - Access times for the files might be different in the operand case
  14137.        versus the cat case.
  14138.  
  14139.      - The utility may have error messages that are cognizant of the input
  14140.        file name and this added value should not be suppressed.  (As an
  14141.        example, awk sets a variable with the file name at each file
  14142.        boundary.)
  14143.  
  14144.  END_RATIONALE
  14145.  
  14146.  
  14147.  2.11.5  External Influences
  14148.  
  14149.  The External Influences subclause describes all input data that is
  14150.  specified by the invoker, data received from the environment, and other
  14151.  files or databases that may be used by the utility.  There are four
  14152.  subclauses that contain all the substantive information about external
  14153.  influences; because of this, this level of header is always left blank.
  14154.  
  14155.  Certain of the standard utilities describe how they can invoke other
  14156.  utilities or applications, such as by passing a command string to the
  14157.  command interpreter.  The external requirements of such invoked utilities
  14158.  are not described in the subclause concerning the standard utility that
  14159.  invokes them.
  14160.  
  14161.  
  14162.  2.11.5.1  Standard Input
  14163.  
  14164.  The Standard Input subclause describes the standard input of the utility.
  14165.  This subclause is frequently merely a reference to the following
  14166.  subclause, because many utilities treat standard input and input files in
  14167.  the same manner.  Unless otherwise stated, all restrictions described in
  14168.  Input Files apply to this subclause as well.
  14169.  
  14170.  Use of a terminal for standard input may cause any of the standard
  14171.  utilities that read standard input to stop when used in the background.
  14172.  For this reason, applications should not use interactive features in
  14173.  scripts to be placed in the background.
  14174.  
  14175.  The specified standard input format of the standard utilities shall not
  14176.  depend on the existence or value of the environment variables defined in
  14177.  this standard, except as provided by this standard.
  14178.  
  14179.  
  14180.  
  14181.                Copyright c 1991 IEEE.  All rights reserved.
  14182.       This is an unapproved IEEE Standards Draft, subject to change.
  14183.  
  14184.  
  14185.  
  14186.  
  14187.  
  14188.  2.11 Utility Description Defaults                                     185
  14189.  
  14190.  
  14191.  
  14192.  
  14193.  
  14194.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  14195.  
  14196.  Default Behavior:  When this subclause is listed as ``None,'' it means
  14197.  that the standard input shall not be read when the utility is used as
  14198.  described by this standard.
  14199.  
  14200.  BEGIN_RATIONALE
  14201.  
  14202.  2.11.5.1.1  Standard Input Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  14203.              _P_1_0_0_3._2)
  14204.  
  14205.  This subclause was globally renamed from Standard Input Format in
  14206.  previous drafts to better reflect its role in describing the existence
  14207.  and usage of the file, in addition to its format.
  14208.  
  14209.  END_RATIONALE
  14210.  
  14211.  
  14212.  2.11.5.2  Input Files
  14213.  
  14214.  The Input Files subclause describes the files, other than the standard
  14215.  input, used as input by the utility.  It includes files named as operands
  14216.  and option-arguments as well as other files that are referred to, such as
  14217.  startup/initialization files, databases, etc.  Commonly-used files are
  14218.  generally described in one place and cross-referenced by other utilities.
  14219.  
  14220.  Some of the standard utilities, such as filters, process input files a
  14221.  line or a block at a time and have no restrictions on the maximum input
  14222.  file size.  Some utilities may have size limitations that are not as
  14223.  obvious as file space or memory limitations.  Such limitations should
  14224.  reflect resource limitations of some sort, not arbitrary limits set by
  14225.  implementors.  Implementations shall define in the conformance
  14226.  documentation those utilities that are limited by constraints other than
  14227.  file system space, available memory, and other limits specifically cited
  14228.  by this standard, and identify what the constraint is, and indicate a way
  14229.  of estimating when the constraint would be reached.  Similarly, some
  14230.  utilities descend the directory tree (recursively).  Implementations
  14231.  shall also document any limits that they may have in descending the
  14232.  directory tree that are beyond limits cited by this standard.
  14233.  
  14234.  When a standard utility reads a seekable input file and terminates         1
  14235.  without an error before it reaches end-of-file, the utility shall ensure   1
  14236.  that the file offset in the open file description is properly positioned   1
  14237.  just past the last byte processed by the utility.  For files that are not  1
  14238.  seekable, the state of the file offset in the open file description for    1
  14239.  that file is unspecified.                                                  1
  14240.  
  14241.  When an input file is described as a _t_e_x_t _f_i_l_e, the utility produces
  14242.  undefined results if given input that is not from a text file, unless
  14243.  otherwise stated.  Some utilities (e.g., make, read, sh, etc.) allow for
  14244.  continued input lines using an escaped <newline> convention; unless
  14245.  otherwise stated, the utility need not be able to accumulate more than
  14246.  
  14247.                Copyright c 1991 IEEE.  All rights reserved.
  14248.       This is an unapproved IEEE Standards Draft, subject to change.
  14249.  
  14250.  
  14251.  
  14252.  
  14253.  
  14254.  186                                2 Terminology and General Requirements
  14255.  
  14256.  
  14257.  
  14258.  
  14259.  
  14260.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  14261.  
  14262.  {LINE_MAX} bytes from a set of multiple, continued input lines.  If a
  14263.  utility using the escaped <newline> convention detects an end-of-file
  14264.  condition immediately after an escaped <newline>, the results are
  14265.  unspecified.
  14266.  
  14267.  Record formats are described in a notation similar to that used by the C
  14268.  language function, _p_r_i_n_t_f().  See 2.12 for a description of this
  14269.  notation.
  14270.  
  14271.  Default Behavior:  When this subclause is listed as ``None,'' it means
  14272.  that no input files are required to be supplied when the utility is used
  14273.  as described by this standard.
  14274.  
  14275.  BEGIN_RATIONALE
  14276.  
  14277.  2.11.5.2.1  Input Files Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  14278.              _P_1_0_0_3._2)
  14279.  
  14280.  This subclause was globally renamed from Input File Formats in previous
  14281.  drafts to better reflect its role in describing the existence and usage
  14282.  of the files, in addition to their format.
  14283.  
  14284.  The description of file offsets answers the question:  Are the following   1
  14285.  three commands equivalent?                                                 1
  14286.  
  14287.        tail -n +2 file                                                      1
  14288.        (sed -n 1q; cat) < file                                              1
  14289.        cat file | (sed -n 1q; cat)                                          1
  14290.  
  14291.  The answer is that a conforming application cannot assume they are         1
  14292.  equivalent.  The second command is equivalent to the first only when the   1
  14293.  file is seekable.  In the third command, if the file offset in the open    1
  14294.  file description were not unspecified, sed would have to be implemented    1
  14295.  so that it read from the pipe one byte at a time or it would have to       1
  14296.  employ some method to seek backwards on the pipe.  Such functionality is   1
  14297.  not defined currently in POSIX.1 {8} and does not exist on all historical  1
  14298.  systems.  Other utilities, such as head, read, and sh, have similar        1
  14299.  properties, so the restriction is described globally in this clause.  A    1
  14300.  future revision to this standard may require that the standard utilities   1
  14301.  leave the file offset in a consistent state for pipes as well as regular   1
  14302.  files.                                                                     1
  14303.  
  14304.  The description of conformance documentation about file sizes follows
  14305.  many changes of direction by the working group.  Originally, there
  14306.  appeared a limit, {ED_FILE_MAX}, that hoped to impose a minimum file size
  14307.  on ed, which has been historically limited to relatively small files.
  14308.  This received objections from various members who said that such a limit
  14309.  merely invited sloppy programming; there should be no limits to a
  14310.  ``well-written'' ed.  Thus, Draft 8 removed the limit and inserted
  14311.  
  14312.  
  14313.                Copyright c 1991 IEEE.  All rights reserved.
  14314.       This is an unapproved IEEE Standards Draft, subject to change.
  14315.  
  14316.  
  14317.  
  14318.  
  14319.  
  14320.  2.11 Utility Description Defaults                                     187
  14321.  
  14322.  
  14323.  
  14324.  
  14325.  
  14326.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  14327.  
  14328.  rationale that this meant ed would have to process files of virtually
  14329.  unlimited size.  (Surprisingly, no objections or comments were received
  14330.  about that sentence.)  However, in discussing the matter with
  14331.  representatives of POSIX.3, it turned out that omitting the limit meant
  14332.  that a corresponding test assertion would also be omitted and no test
  14333.  suite could legitimately stress ed with large files.  It quickly became
  14334.  clear that restrictions applied to other utilities as well and a solution
  14335.  was needed.
  14336.  
  14337.  It is not possible for this standard to judge which utilities are in the
  14338.  category with arbitrary file size limits; this would impose too much on
  14339.  implementors.  Therefore, the burden is placed on implementors to
  14340.  publicly document any limitations and the resulting pressure in the
  14341.  marketplace should keep most implementations adequate for most portable
  14342.  applications.  Typically, larger systems would have larger limits than
  14343.  smaller systems, but since price typically follows function, the user can
  14344.  select a machine that handles his/her problems reasonably given such
  14345.  information.  The working group considered adding a limit in 2.13.1 for
  14346.  every file-oriented utility, but felt these limits would not actually be
  14347.  used by real applications and would reduce consensus.  This is
  14348.  particularly true for utilities, such as possibly awk or yacc, that might
  14349.  have rather complex limits not directly related to the actual file size.
  14350.  
  14351.  The definition of _t_e_x_t _f_i_l_e (see 2.2.2.151) is strictly enforced for
  14352.  input to the standard utilities; very few of them list exceptions to the
  14353.  undefined results called for here.  (Of course, ``undefined'' here does
  14354.  not mean that existing implementations necessarily have to change to
  14355.  start indicating error conditions.  Conforming applications cannot rely
  14356.  on implementations succeeding or failing when nontext files are used.)
  14357.  
  14358.  The utilities that allow line continuation are generally those that
  14359.  accept input languages, rather than pure data.  It would be unusual for
  14360.  an input line of this type to exceed {LINE_MAX} bytes and unreasonable to
  14361.  require that the implementation allow unlimited accumulation of multiple
  14362.  lines, each of which could reach {LINE_MAX}.  Thus, for a portable
  14363.  application the total of all the continued lines in a set cannot exceed
  14364.  {LINE_MAX}.
  14365.  
  14366.  The format description is intended to be sufficiently rigorous to allow
  14367.  other applications to generate these input files.  However, since
  14368.  <blank>s can legitimately be included in some of the fields described by
  14369.  the standard utilities, particularly in locales other than the POSIX
  14370.  Locale, this intent is not always realized.
  14371.  
  14372.  END_RATIONALE
  14373.  
  14374.  
  14375.  
  14376.  
  14377.  
  14378.  
  14379.                Copyright c 1991 IEEE.  All rights reserved.
  14380.       This is an unapproved IEEE Standards Draft, subject to change.
  14381.  
  14382.  
  14383.  
  14384.  
  14385.  
  14386.  188                                2 Terminology and General Requirements
  14387.  
  14388.  
  14389.  
  14390.  
  14391.  
  14392.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  14393.  
  14394.  2.11.5.3  Environment Variables
  14395.  
  14396.  The Environment Variables subclause lists what variables affect the
  14397.  utility's execution.
  14398.  
  14399.  The entire manner in which environment variables described in this
  14400.  standard affect the behavior of each utility is described in the
  14401.  Environment Variables subclause for that utility, in conjunction with the
  14402.  global effects of the LANG and LC_ALL environment variables described in
  14403.  2.6.  The existence or value of environment variables described in this
  14404.  standard shall not otherwise affect the specified behavior of the
  14405.  standard utilities.  Any effects of the existence or value of environment
  14406.  variables not described by this standard upon the standard utilities are
  14407.  unspecified.
  14408.  
  14409.  For those standard utilities that use environment variables as a means
  14410.  for selecting a utility to execute (such as CC in make), the string
  14411.  provided to the utility shall be subjected to the path search described
  14412.  for PATH in 2.6.
  14413.  
  14414.  Default Behavior:  When this subclause is listed as ``None,'' it means
  14415.  that the behavior of the utility is not directly affected by environment
  14416.  variables described by this standard when the utility is used as
  14417.  described by this standard.
  14418.  
  14419.  BEGIN_RATIONALE
  14420.  
  14421.  2.11.5.3.1  Environment Variables Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  14422.              _p_a_r_t _o_f _P_1_0_0_3._2)
  14423.  
  14424.  The global default text about the PATH search is overkill in this version
  14425.  of POSIX.2 (prior to the UPE) because only one of the standard utilities
  14426.  specifies variables in this way--make's $(CC), $(LEX), etc.  It is
  14427.  described here mostly in anticipation of its heavier usage in POSIX.2a.
  14428.  The description of PATH indicates separately that names including slashes
  14429.  do not apply, so they do not apply here either.
  14430.  
  14431.  END_RATIONALE
  14432.  
  14433.  
  14434.  2.11.5.4  Asynchronous Events
  14435.  
  14436.  The Asynchronous Events subclause lists how the utility reacts to such
  14437.  events as signals and what signals are caught.
  14438.  
  14439.  Default Behavior:  When this subclause is listed as ``Default,'' or it
  14440.  refers to ``the standard action for all other signals; see 2.11.5.4,'' it
  14441.  means that the action taken as a result of the signal shall be one of the
  14442.  following:
  14443.  
  14444.  
  14445.                Copyright c 1991 IEEE.  All rights reserved.
  14446.       This is an unapproved IEEE Standards Draft, subject to change.
  14447.  
  14448.  
  14449.  
  14450.  
  14451.  
  14452.  2.11 Utility Description Defaults                                     189
  14453.  
  14454.  
  14455.  
  14456.  
  14457.  
  14458.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  14459.  
  14460.      (1)  The action is that inherited from the parent according to the
  14461.           rules of inheritance of signal actions defined in POSIX.1 {8}
  14462.           (see 2.9.1), or
  14463.  
  14464.      (2)  When no action has been taken to change the default, the default
  14465.           action is that specified by POSIX.1 {8}, or
  14466.  
  14467.      (3)  The result of the utility's execution is as if default actions
  14468.           had been taken.
  14469.  
  14470.  BEGIN_RATIONALE
  14471.  
  14472.  2.11.5.4.1  Asynchronous Events Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t
  14473.              _o_f _P_1_0_0_3._2)
  14474.  
  14475.  Because there is no language prohibiting it, a utility is permitted to
  14476.  catch a signal, perform some additional processing (such as deleting
  14477.  temporary files), restore the default signal action (or action inherited
  14478.  from the parent process) and resignal itself.
  14479.  
  14480.  END_RATIONALE
  14481.  
  14482.  
  14483.  2.11.6  External Effects
  14484.  
  14485.  The External Effects subclause describes the effects of the utility on
  14486.  the operational environment, including the file system.  There are three
  14487.  subclauses that contain all the substantive information about external
  14488.  effects; because of this, this level of header is usually left blank.
  14489.  
  14490.  Certain of the standard utilities describe how they can invoke other
  14491.  utilities or applications, such as by passing a command string to the
  14492.  command interpreter.  The external effects of such invoked utilities are
  14493.  not described in the subclause concerning the standard utility that
  14494.  invokes them.
  14495.  
  14496.  
  14497.  2.11.6.1  Standard Output
  14498.  
  14499.  The Standard Output subclause describes the standard output of the
  14500.  utility.  This subclause is frequently merely a reference to the
  14501.  following subclause, Output Files, because many utilities treat standard
  14502.  output and output files in the same manner.
  14503.  
  14504.  Use of a terminal for standard output may cause any of the standard
  14505.  utilities that write standard output to stop when used in the background.
  14506.  For this reason, applications should not use interactive features in
  14507.  scripts to be placed in the background.
  14508.  
  14509.  
  14510.  
  14511.                Copyright c 1991 IEEE.  All rights reserved.
  14512.       This is an unapproved IEEE Standards Draft, subject to change.
  14513.  
  14514.  
  14515.  
  14516.  
  14517.  
  14518.  190                                2 Terminology and General Requirements
  14519.  
  14520.  
  14521.  
  14522.  
  14523.  
  14524.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  14525.  
  14526.  Record formats are described in a notation similar to that used by the C
  14527.  language function, _p_r_i_n_t_f().  See 2.12 for a description of this
  14528.  notation.
  14529.  
  14530.  The specified standard output of the standard utilities shall not depend
  14531.  on the existence or value of the environment variables defined in this
  14532.  standard, except as provided by this standard.
  14533.  
  14534.  Default Behavior:  When this subclause is listed as ``None,'' it means
  14535.  that the standard output shall not be written when the utility is used as
  14536.  described by this standard.
  14537.  
  14538.  BEGIN_RATIONALE
  14539.  
  14540.  2.11.6.1.1  Standard Output Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  14541.              _P_1_0_0_3._2)
  14542.  
  14543.  This subclause was globally renamed from Standard Output Format in
  14544.  previous drafts to better reflect its role in describing the existence
  14545.  and usage of the file, in addition to its format.
  14546.  
  14547.  The format description is intended to be sufficiently rigorous to allow
  14548.  post-processing of output by other programs, particularly by an awk or
  14549.  lex parser.
  14550.  
  14551.  END_RATIONALE
  14552.  
  14553.  
  14554.  2.11.6.2  Standard Error
  14555.  
  14556.  The Standard Error subclause describes the standard error output of the
  14557.  utility.  Only those messages that are purposely sent by the utility are
  14558.  described.
  14559.  
  14560.  Use of a terminal for standard error may cause any of the standard
  14561.  utilities that write standard error output to stop when used in the
  14562.  background.  For this reason, applications should not use interactive
  14563.  features in scripts to be placed in the background.
  14564.  
  14565.  The format of diagnostic messages for most utilities is unspecified, but
  14566.  the language and cultural conventions of diagnostic and informative
  14567.  messages whose format is unspecified by this standard should be affected
  14568.  by the setting of LC_MESSAGES.
  14569.  
  14570.  The specified standard error output of standard utilities shall not
  14571.  depend on the existence or value of the environment variables defined in
  14572.  this standard, except as provided by this standard.
  14573.  
  14574.  
  14575.  
  14576.  
  14577.                Copyright c 1991 IEEE.  All rights reserved.
  14578.       This is an unapproved IEEE Standards Draft, subject to change.
  14579.  
  14580.  
  14581.  
  14582.  
  14583.  
  14584.  2.11 Utility Description Defaults                                     191
  14585.  
  14586.  
  14587.  
  14588.  
  14589.  
  14590.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  14591.  
  14592.  Default Behavior:  When this subclause is listed as ``Used only for
  14593.  diagnostic messages,'' it means that, unless otherwise stated, the
  14594.  diagnostic messages shall be sent to the standard error only when the
  14595.  exit status is nonzero and the utility is used as described by this
  14596.  standard.
  14597.  
  14598.  When this subclause is listed as ``None,'' it means that the standard
  14599.  error shall not be used when the utility is used as described in this
  14600.  standard.
  14601.  
  14602.  BEGIN_RATIONALE
  14603.  
  14604.  2.11.6.2.1  Standard Error Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  14605.              _P_1_0_0_3._2)
  14606.  
  14607.  This subclause was globally renamed from Standard Error Format in
  14608.  previous drafts to better reflect its role in describing the existence
  14609.  and usage of the file, in addition to its format.
  14610.  
  14611.  This subclause does not describe error messages that refer to incorrect
  14612.  operation of the utility.  Consider a utility that processes program
  14613.  source code as its input.  This subclause is used to describe messages
  14614.  produced by a correctly operating utility that encounters an error in the
  14615.  program source code on which it is processing.  However, a message
  14616.  indicating that the utility had insufficient memory in which to operate
  14617.  would not be described.
  14618.  
  14619.  Some compilers have traditionally produced warning messages without
  14620.  returning a nonzero exit status; these are specifically noted in their
  14621.  subclauses.  Other utilities are expected to remain absolutely quiet on
  14622.  the standard error if they want to return zero, unless the implementation
  14623.  provides some sort of extension to increase the verbosity or debugging
  14624.  level.
  14625.  
  14626.  The format descriptions are intended to be sufficiently rigorous to allow
  14627.  post-processing of output by other programs.
  14628.  
  14629.  END_RATIONALE
  14630.  
  14631.  
  14632.  2.11.6.3  Output Files
  14633.  
  14634.  The Output Files subclause describes the files created or modified by the
  14635.  utility.  Temporary or system files that are created for internal usage
  14636.  by this utility or other parts of the implementation (spool, log, audit
  14637.  files, etc.)  are not described in this, or any, subclause.  The
  14638.  utilities creating such files and the names of such files are
  14639.  unspecified.  If applications are written to use temporary or
  14640.  intermediate files, they should use the TMPDIR environment variable, if
  14641.  it is set and represents an accessible directory, to select the location   1
  14642.  
  14643.                Copyright c 1991 IEEE.  All rights reserved.
  14644.       This is an unapproved IEEE Standards Draft, subject to change.
  14645.  
  14646.  
  14647.  
  14648.  
  14649.  
  14650.  192                                2 Terminology and General Requirements
  14651.  
  14652.  
  14653.  
  14654.  
  14655.  
  14656.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  14657.  
  14658.  of temporary files.                                                        1
  14659.  
  14660.  Implementations shall ensure that temporary files, when used by the
  14661.  standard utilities, are named so that different utilities or multiple
  14662.  instances of the same utility can operate simultaneously without regard
  14663.  to their working directories, or any other process characteristic other
  14664.  than process ID.  There are two exceptions to this requirement:
  14665.  
  14666.      (1)  Resources for temporary files other than the namespace (for
  14667.           example, disk space, available directory entries, or number of
  14668.           processes allowed) are not guaranteed.
  14669.  
  14670.      (2)  Certain standard utilities generate output files that are
  14671.           intended as input for other utilities, (for example, lex
  14672.           generates lex.yy.c) and these cannot have unique names.  These
  14673.           cases are explicitly identified in the descriptions of the
  14674.           respective utilities.
  14675.  
  14676.  Any temporary files created by the implementation shall be removed by the
  14677.  implementation upon a utility's successful exit, exit because of errors,
  14678.  or before termination by any of the SIGHUP, SIGINT, or SIGTERM signals,
  14679.  unless specified otherwise by the utility description.
  14680.  
  14681.  Record formats are described in a notation similar to that used by the C
  14682.  language function, _p_r_i_n_t_f().  See 2.12 for a description of this
  14683.  notation.
  14684.  
  14685.  Default Behavior:  When this subclause is listed as ``None,'' it means
  14686.  that no files are created or modified as a consequence of direct action
  14687.  on the part of the utility when the utility is used as described by this
  14688.  standard.  However, the utility may create or modify system files, such
  14689.  as log files, that are outside of the utility's normal execution
  14690.  environment.
  14691.  
  14692.  BEGIN_RATIONALE
  14693.  
  14694.  2.11.6.3.1  Output Files Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  14695.              _P_1_0_0_3._2)
  14696.  
  14697.  This subclause was globally renamed from Output File Formats in previous
  14698.  drafts to better reflect its role in describing the existence and usage
  14699.  of the files, in addition to their format.
  14700.  
  14701.  The format description is intended to be sufficiently rigorous to allow
  14702.  post-processing of output by other programs, particularly by an awk or
  14703.  lex parser.
  14704.  
  14705.  Receipt of the SIGQUIT signal should generally cause termination (unless
  14706.  in some debugging mode) that would bypass any attempted recovery actions.
  14707.  
  14708.  
  14709.                Copyright c 1991 IEEE.  All rights reserved.
  14710.       This is an unapproved IEEE Standards Draft, subject to change.
  14711.  
  14712.  
  14713.  
  14714.  
  14715.  
  14716.  2.11 Utility Description Defaults                                     193
  14717.  
  14718.  
  14719.  
  14720.  
  14721.  
  14722.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  14723.  
  14724.  END_RATIONALE
  14725.  
  14726.  
  14727.  2.11.7  Extended Description
  14728.  
  14729.  The Extended Description subclause provides a place for describing the
  14730.  actions of very complicated utilities, such as text editors or language
  14731.  processors, which typically have elaborate command languages.
  14732.  
  14733.  Default Behavior:  When this subclause is listed as ``None,'' no further
  14734.  description is necessary.
  14735.  
  14736.  
  14737.  2.11.8  Exit Status
  14738.  
  14739.  The Exit Status subclause describes the values the utility shall return
  14740.  to the calling program, or shell, and the conditions that cause these
  14741.  values to be returned.  Usually, utilities return zero for successful
  14742.  completion and values greater than zero for various error conditions.  If
  14743.  specific numeric values are listed in this subclause, conforming
  14744.  implementations shall use those values for the errors described.  In some
  14745.  cases, status values are listed more loosely, such as ``>0.''  A Strictly
  14746.  Conforming POSIX.2 Application shall not rely on any specific value in
  14747.  the range shown and shall be prepared to receive any value in the range.
  14748.  
  14749.  Unspecified error conditions may be represented by specific values not
  14750.  listed in the standard.
  14751.  
  14752.  BEGIN_RATIONALE
  14753.  
  14754.  
  14755.  2.11.8.1  Exit Status Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  14756.            _P_1_0_0_3._2)
  14757.  
  14758.  Note the additional discussion of exit status values in 3.8.2.  It         1
  14759.  describes requirements for returning exit values > 125.                    1
  14760.  
  14761.  A utility may list zero as a successful return, 1 as a failure for a
  14762.  specific reason, and >1 as ``an error occurred.''  In this case,
  14763.  unspecified conditions may cause a 2 or 3, or other value, to be
  14764.  returned.  A Strictly Conforming POSIX.2 Application should be written so
  14765.  that it tests for successful exit status values (zero in this case),
  14766.  rather than relying upon the single specific error value listed in the
  14767.  standard.  In that way, it will have maximum portability, even on
  14768.  implementations with extensions.
  14769.  
  14770.  The working group is aware that the general nonenumeration of errors
  14771.  makes it difficult to write test suites that test the _i_n_c_o_r_r_e_c_t operation
  14772.  of utilities.  There are some historical implementations that have
  14773.  expended effort to provide detailed status messages and a helpful
  14774.  
  14775.                Copyright c 1991 IEEE.  All rights reserved.
  14776.       This is an unapproved IEEE Standards Draft, subject to change.
  14777.  
  14778.  
  14779.  
  14780.  
  14781.  
  14782.  194                                2 Terminology and General Requirements
  14783.  
  14784.  
  14785.  
  14786.  
  14787.  
  14788.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  14789.  
  14790.  environment to bypass or explain errors, such as prompting, retrying, or
  14791.  ignoring unimportant syntax errors; other implementations have not.
  14792.  Since there is no realistic way to mandate system behavior in cases of
  14793.  undefined application actions or system problems--in a manner acceptable
  14794.  to all cultures and environments--attention has been limited to the
  14795.  correct operation of utilities by the conforming application.
  14796.  Furthermore, the portable application does not need detailed information
  14797.  concerning errors that it caused through incorrect usage or that it
  14798.  cannot correct anyway.  The high degree of competition in the emerging
  14799.  POSIX marketplace should ensure that users requiring friendly, resilient
  14800.  environments will be able to purchase such without detailed specification
  14801.  in this standard.
  14802.  
  14803.  There is no description of defaults for this subclause because all of the
  14804.  standard utilities specify something (or explicitly state
  14805.  ``Unspecified'') for Exit Status.
  14806.  
  14807.  END_RATIONALE
  14808.  
  14809.  
  14810.  2.11.9  Consequences of Errors
  14811.  
  14812.  The Consequences of Errors subclause describes the effects on the
  14813.  environment, file systems, process state, etc., when error conditions
  14814.  occur.  It does not describe error messages produced or exit status
  14815.  values used.
  14816.  
  14817.  The many reasons for failure of a utility are generally not specified by
  14818.  the utility descriptions.  Utilities may terminate prematurely if they
  14819.  encounter:  invalid usage of options, arguments, or environment
  14820.  variables; invalid usage of the complex syntaxes expressed in Extended
  14821.  Description subclauses; difficulties accessing, creating, reading, or
  14822.  writing files; or, difficulties associated with the privileges of the
  14823.  process.
  14824.  
  14825.  The following shall apply to each utility, unless otherwise stated:
  14826.  
  14827.      - If the requested action cannot be performed on an operand
  14828.        representing a file, directory, user, process, etc., the utility
  14829.        shall issue a diagnostic message to standard error and continue
  14830.        processing the next operand in sequence, but the final exit status
  14831.        shall be returned as nonzero.
  14832.  
  14833.      - If the requested action characterized by an option or option-
  14834.        argument cannot be performed, the utility shall issue a diagnostic
  14835.        message to standard error and the exit status returned shall be
  14836.        nonzero.
  14837.  
  14838.  
  14839.  
  14840.  
  14841.                Copyright c 1991 IEEE.  All rights reserved.
  14842.       This is an unapproved IEEE Standards Draft, subject to change.
  14843.  
  14844.  
  14845.  
  14846.  
  14847.  
  14848.  2.11 Utility Description Defaults                                     195
  14849.  
  14850.  
  14851.  
  14852.  
  14853.  
  14854.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  14855.  
  14856.      - When an unrecoverable error condition is encountered, the utility
  14857.        shall exit with a nonzero exit status.
  14858.  
  14859.      - A diagnostic message shall be written to standard error whenever an
  14860.        error condition occurs.
  14861.  
  14862.  Default Behavior:  When this subclause is listed as ``Default,'' it means
  14863.  that any changes to the environment are unspecified.
  14864.  
  14865.  BEGIN_RATIONALE
  14866.  
  14867.  
  14868.  2.11.9.1  Consequences of Errors Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t
  14869.            _o_f _P_1_0_0_3._2)
  14870.  
  14871.  When a utility encounters an error condition several actions are
  14872.  possible, depending on the severity of the error and the state of the
  14873.  utility.  Included in the possible actions of various utilities are:
  14874.  deletion of temporary or intermediate work files; deletion of incomplete
  14875.  files; validity checking of the file system or directory.
  14876.  
  14877.  In Draft 9, most of the Consequences of Errors subclauses were changed to
  14878.  ``Default.''  This is due to the more elaborate description of the
  14879.  default case now carried in this subclause and the fact that most of the
  14880.  standard utilities actually use that default.
  14881.  
  14882.  END_RATIONALE
  14883.  
  14884.  BEGIN_RATIONALE
  14885.  
  14886.  
  14887.  2.11.10  Rationale
  14888.  
  14889.  This subclause provides historical perspective and justification of
  14890.  working group actions concerning the utility.
  14891.  
  14892.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  14893.  
  14894.  This subclause provides examples and usage of the utility.  In some cases
  14895.  certain characters are interpreted as special characters to the shell.
  14896.  In the rest of the standard, these characters are shown without escape
  14897.  characters or quoting (see 3.2).  In all examples, however, quoting has
  14898.  been used, showing how sample commands (utility names combined with
  14899.  arguments) could be passed correctly to a shell (see sh in 4.56) or as a
  14900.  string to the _s_y_s_t_e_m() function.
  14901.  
  14902.  
  14903.  
  14904.  
  14905.  
  14906.  
  14907.                Copyright c 1991 IEEE.  All rights reserved.
  14908.       This is an unapproved IEEE Standards Draft, subject to change.
  14909.  
  14910.  
  14911.  
  14912.  
  14913.  
  14914.  196                                2 Terminology and General Requirements
  14915.  
  14916.  
  14917.  
  14918.  
  14919.  
  14920.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  14921.  
  14922.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  14923.  
  14924.  This subclause provides historical perspective for decisions that were
  14925.  made.
  14926.  
  14927.  _U_n_r_e_s_o_l_v_e_d__O_b_j_e_c_t_i_o_n_s
  14928.  
  14929.  These subclauses were removed from Draft 10.  The Unresolved Objections
  14930.  are maintained in a separate list and do not meet ISO editing
  14931.  requirements for an informative annex.
  14932.  
  14933.  
  14934.  2.11.10.1  Rationale Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  14935.  
  14936.  The Rationale subclauses will be moved to Annex E in the final POSIX.2.
  14937.  Some of the subheadings may be collapsed in that document; in these
  14938.  drafts the working group has not always been very rigorous about what is
  14939.  a description of usage versus a history of decisions made, for example.
  14940.  The final rationale will de-emphasize the chronological aspects of
  14941.  working group decisions.
  14942.  
  14943.  END_RATIONALE
  14944.  
  14945.  
  14946.  
  14947.  
  14948.  
  14949.  
  14950.  
  14951.  
  14952.  
  14953.  
  14954.  
  14955.  
  14956.  
  14957.  
  14958.  
  14959.  
  14960.  
  14961.  
  14962.  
  14963.  
  14964.  
  14965.  
  14966.  
  14967.  
  14968.  
  14969.  
  14970.  
  14971.  
  14972.  
  14973.                Copyright c 1991 IEEE.  All rights reserved.
  14974.       This is an unapproved IEEE Standards Draft, subject to change.
  14975.  
  14976.  
  14977.  
  14978.  
  14979.  
  14980.  2.11 Utility Description Defaults                                     197
  14981.  
  14982.  
  14983.  
  14984.  
  14985.  
  14986.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  14987.  
  14988.  2.12  File Format Notation
  14989.  
  14990.  The Standard Input, Standard Output, Standard Error, Input Files, and
  14991.  Output Files subclauses of the utility descriptions, when provided, use a
  14992.  syntax to describe the data organization within the files, when that
  14993.  organization is not otherwise obvious.  The syntax is similar to that
  14994.  used by the C language _p_r_i_n_t_f() function, as described in this clause.
  14995.  When used in Standard Input or Input Files subclauses of the utility
  14996.  descriptions, this syntax describes the format that could have been used
  14997.  to write the text to be read, not a format that could be used by the C
  14998.  language _s_c_a_n_f() function to read the input file.
  14999.  
  15000.  The description of an individual record is as follows:
  15001.  
  15002.        "<_f_o_r_m_a_t>", [ <_a_r_g_1>, <_a_r_g_2>, ..., <_a_r_g_n> ]
  15003.  
  15004.  The _f_o_r_m_a_t is a character string that contains three types of objects
  15005.  defined below:
  15006.  
  15007.     _c_h_a_r_a_c_t_e_r_s  Characters that are not _e_s_c_a_p_e _s_e_q_u_e_n_c_e_s or _c_o_n_v_e_r_s_i_o_n
  15008.                 _s_p_e_c_i_f_i_c_a_t_i_o_n_s, as described below, shall be copied to the
  15009.                 output.
  15010.  
  15011.     _e_s_c_a_p_e _s_e_q_u_e_n_c_e_s
  15012.                 Represent nongraphic characters.
  15013.  
  15014.     _c_o_n_v_e_r_s_i_o_n _s_p_e_c_i_f_i_c_a_t_i_o_n_s
  15015.                 Specifies the output format of each argument.  (See
  15016.                 below.)
  15017.  
  15018.  The following characters have the following special meaning in the format
  15019.  string:
  15020.  
  15021.     " "         (An empty character position.)  One or more <blank>
  15022.                 characters.
  15023.  
  15024.     W           Exactly one <space> character.
  15025.  
  15026.  The escape-sequences in Table 2-15 depict the associated action on
  15027.  display devices capable of the action.
  15028.  
  15029.  Each conversion specification shall be introduced by the percent-sign
  15030.  character (%).  After the character %, the following shall appear in
  15031.  sequence:
  15032.  
  15033.     _f_l_a_g_s       Zero or more _f_l_a_g_s, in any order, that modify the meaning
  15034.                 of the conversion specification.
  15035.  
  15036.  
  15037.  
  15038.  
  15039.                Copyright c 1991 IEEE.  All rights reserved.
  15040.       This is an unapproved IEEE Standards Draft, subject to change.
  15041.  
  15042.  
  15043.  
  15044.  
  15045.  
  15046.  198                                2 Terminology and General Requirements
  15047.  
  15048.  
  15049.  
  15050.  
  15051.  
  15052.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  15053.  
  15054.  
  15055.                       Table 2-15  -  Escape Sequences
  15056.  __________________________________________________________________________________________________________________________________________________
  15057.   Escape       Represents
  15058.  Sequence       Character                       Terminal Action
  15059.  _________________________________________________________________________
  15060.  
  15061.     \\      backslash                None.
  15062.     \a      <alert>                  Attempts to alert the user through
  15063.                                      audible or visible notification.
  15064.     \b      <backspace>              Moves the printing position to one
  15065.                                      column before the current position,
  15066.                                      unless the current position is the
  15067.                                      start of a line.
  15068.     \f      <form-feed>              Moves the printing position to the
  15069.                                      initial printing position of the next
  15070.                                      logical page.
  15071.     \n      <newline>                Moves the printing position to the
  15072.                                      start of the next line.
  15073.     \r      <carriage-return>        Moves the printing position to the
  15074.                                      start of the current line.
  15075.     \t      <tab>                    Moves the printing position to the
  15076.                                      next tab position on the current
  15077.                                      line.  If there are no more tab
  15078.                                      positions left on the line, the
  15079.                                      behavior is undefined.
  15080.     \v      <vertical tab>           Moves the printing position to the
  15081.                                      start of the next vertical tab
  15082.                                      position.  If there are no more
  15083.                                      vertical tab positions left on the
  15084.                                      page, the behavior is undefined.
  15085.  __________________________________________________________________________________________________________________________________________________
  15086.  
  15087.  
  15088.     _f_i_e_l_d _w_i_d_t_h An optional string of decimal digits to specify a minimum
  15089.                 _f_i_e_l_d _w_i_d_t_h.  For an output field, if the converted value
  15090.                 has fewer bytes than the field width, it shall be padded
  15091.                 on the left [or right, if the left-adjustment flag (-),
  15092.                 described below, has been given] to the field width.
  15093.  
  15094.     _p_r_e_c_i_s_i_o_n   Gives the minimum number of digits to appear for the d, o,
  15095.                 i, u, x, or X conversions (the field shall be padded with
  15096.                 leading zeros), the number of digits to appear after the
  15097.                 radix character for the e and f conversions, the maximum
  15098.                 number of significant digits for the g conversion; or the
  15099.                 maximum number of bytes to be written from a string in s
  15100.                 conversion.  The precision shall take the form of a period
  15101.                 (.) followed by a decimal digit string; a null digit
  15102.                 string shall be treated as zero.
  15103.  
  15104.  
  15105.                Copyright c 1991 IEEE.  All rights reserved.
  15106.       This is an unapproved IEEE Standards Draft, subject to change.
  15107.  
  15108.  
  15109.  
  15110.  
  15111.  
  15112.  2.12 File Format Notation                                             199
  15113.  
  15114.  
  15115.  
  15116.  
  15117.  
  15118.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  15119.  
  15120.     _c_o_n_v_e_r_s_i_o_n _c_h_a_r_a_c_t_e_r_s
  15121.                 A conversion character (see below) that indicates the type
  15122.                 of conversion to be applied.
  15123.  
  15124.  The _f_l_a_g characters and their meanings are:
  15125.  
  15126.     -           The result of the conversion shall be left-justified
  15127.                 within the field.
  15128.  
  15129.     +           The result of a signed conversion always shall begin with
  15130.                 a sign (+ or -).
  15131.  
  15132.     <space>     If the first character of a signed conversion is not a
  15133.                 sign, a <space> shall be prefixed to the result.  This
  15134.                 means that if the <space> and + flags both appear, the
  15135.                 <space> flag shall be ignored.
  15136.  
  15137.     #           The value is to be converted to an ``alternate form.''
  15138.                 For c, d, i, u, and s conversions, the behavior is
  15139.                 undefined.  For o conversion, it shall increase the
  15140.                 precision to force the first digit of the result to be a
  15141.                 zero.  For x or X conversion, a nonzero result shall have
  15142.                 0x or 0X prefixed to it, respectively.  For e, E, f, g and
  15143.                 G conversions, the result shall always contain a radix
  15144.                 character, even if no digits follow the radix character.
  15145.                 For g and G conversions, trailing zeroes shall not be
  15146.                 removed from the result as they usually are.
  15147.  
  15148.     0           For d, i, o, u, x, X, e, E, f, g, and G conversions,
  15149.                 leading zeroes (following any indication of sign or base)
  15150.                 shall be used to pad to the field width; no space padding
  15151.                 shall be performed.  If the 0 and - flags both appear, the
  15152.                 0 flag shall be ignored.  For d, i, o, u, x, and X
  15153.                 conversions, if a precision is specified, the 0 flag shall
  15154.                 be ignored.  For other conversions, the behavior is
  15155.                 undefined.
  15156.  
  15157.  Each conversion character shall result in fetching zero or more
  15158.  arguments.  The results are undefined if there are insufficient arguments
  15159.  for the format.  If the format is exhausted while arguments remain, the
  15160.  excess arguments shall be ignored.
  15161.  
  15162.  The _c_o_n_v_e_r_s_i_o_n _c_h_a_r_a_c_t_e_r_s and their meanings are:
  15163.  
  15164.     d,i,o,u,x,X The integer argument shall be written as signed decimal (d
  15165.                 or i), unsigned octal (o), unsigned decimal (u), or
  15166.                 unsigned hexadecimal notation (x and X).  The d and i
  15167.                 specifiers shall convert to signed decimal in the style
  15168.                 [-]_d_d_d_d.  The x conversion shall use the numbers and
  15169.  
  15170.  
  15171.                Copyright c 1991 IEEE.  All rights reserved.
  15172.       This is an unapproved IEEE Standards Draft, subject to change.
  15173.  
  15174.  
  15175.  
  15176.  
  15177.  
  15178.  200                                2 Terminology and General Requirements
  15179.  
  15180.  
  15181.  
  15182.  
  15183.  
  15184.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  15185.  
  15186.                 letters 0123456789abcdef and the X conversion shall use
  15187.                 the numbers and letters 0123456789ABCDEF.  The _p_r_e_c_i_s_i_o_n
  15188.                 component of the argument shall specify the minimum number
  15189.                 of digits to appear.  If the value being converted can be
  15190.                 represented in fewer digits than the specified minimum, it
  15191.                 shall be expanded with leading zeroes.  The default
  15192.                 precision shall be 1.  The result of converting a zero
  15193.                 value with a precision of 0 shall be no characters.  If
  15194.                 both the field width and precision are omitted, the
  15195.                 implementation may precede and/or follow numeric arguments
  15196.                 of types d, i, and u with <blank>s; arguments of type o
  15197.                 (octal) may be preceded with leading zeroes.
  15198.  
  15199.     f           The floating point number argument shall be written in
  15200.                 decimal notation in the style "[-]_d_d_d._d_d_d", where the
  15201.                 number of digits after the radix character (shown here as
  15202.                 a decimal point) shall be equal to the _p_r_e_c_i_s_i_o_n
  15203.                 specification.  The LC_NUMERIC locale category shall
  15204.                 determine the radix character to use in this format.  If
  15205.                 the _p_r_e_c_i_s_i_o_n is omitted from the argument, six digits
  15206.                 shall be written after the radix character; if the
  15207.                 _p_r_e_c_i_s_i_o_n is explicitly 0, no radix character shall
  15208.                 appear.
  15209.  
  15210.     e,E         The floating point number argument shall be written in the
  15211.                 style "[-]_d._d_d_d_e+__d_d" (the symbol +_ indicates either a plus
  15212.                 or minus sign), where there is one digit before the radix
  15213.                 character (shown here as a decimal point) and the number
  15214.                 of digits after it is equal to the precision.  The
  15215.                 LC_NUMERIC locale category shall determine the radix
  15216.                 character to use in this format.  When the precision is
  15217.                 missing, six digits shall be written after the radix
  15218.                 character; if the precision is 0, no radix character shall
  15219.                 appear.  The E conversion character shall produce a number
  15220.                 with E instead of e introducing the exponent.  The
  15221.                 exponent always shall contain at least two digits.
  15222.                 However, if the value to be written requires an exponent
  15223.                 greater than two digits, additional exponent digits shall
  15224.                 be written as necessary.
  15225.  
  15226.     g,G         The floating point number argument shall be written in
  15227.                 style f or e (or in style E in the case of a G conversion
  15228.                 character), with the precision specifying the number of
  15229.                 significant digits.  The style used depends on the value
  15230.                 converted:  style e shall be used only if the exponent
  15231.                 resulting from the conversion is less than -4 or greater
  15232.                 than or equal to the precision.  Trailing zeroes shall be
  15233.                 removed from the result.  A radix character shall appear
  15234.                 only if it is followed by a digit.
  15235.  
  15236.  
  15237.                Copyright c 1991 IEEE.  All rights reserved.
  15238.       This is an unapproved IEEE Standards Draft, subject to change.
  15239.  
  15240.  
  15241.  
  15242.  
  15243.  
  15244.  2.12 File Format Notation                                             201
  15245.  
  15246.  
  15247.  
  15248.  
  15249.  
  15250.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  15251.  
  15252.     c           The integer argument shall be converted to an _u_n_s_i_g_n_e_d
  15253.                 _c_h_a_r and the resulting byte shall be written.
  15254.  
  15255.     s           The argument shall be taken to be a string and bytes from
  15256.                 the string shall be written until the end of the string or
  15257.                 the number of bytes indicated by the _p_r_e_c_i_s_i_o_n
  15258.                 specification of the argument is reached.  If the
  15259.                 precision is omitted from the argument, it shall be taken
  15260.                 to be infinite, so all bytes up to the end of the string
  15261.                 shall be written.
  15262.  
  15263.     %           Write a % character; no argument shall be converted.
  15264.  
  15265.  In no case does a nonexistent or insufficient _f_i_e_l_d _w_i_d_t_h cause
  15266.  truncation of a field; if the result of a conversion is wider than the
  15267.  field width, the field shall be simply expanded to contain the conversion
  15268.  result.
  15269.  
  15270.  BEGIN_RATIONALE
  15271.  
  15272.  
  15273.  2.12.1  File Format Notation Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  15274.          _P_1_0_0_3._2)
  15275.  
  15276.  This clause was originally derived from the description of _p_r_i_n_t_f() in
  15277.  the _S_V_I_D, but it has been updated following the publication of the
  15278.  C Standard {7}.  It is not identical to the C Standard's {7} _p_r_i_n_t_f(), as
  15279.  it deals with integers as being essentially one type, disregarding
  15280.  possible internal differences between _i_n_t, _s_h_o_r_t, and _l_o_n_g.  It has also
  15281.  had some of the internal C language dependencies removed (such as the
  15282.  requirement for null-terminated strings).
  15283.  
  15284.  This standard provides a rigorous description of the format of utility
  15285.  input and output files.  It is the intention of this standard that these
  15286.  descriptions be adequate sources of information so that portable
  15287.  applications can use other utilities such as lex or awk to reliably parse
  15288.  the output of these utilities as their input in, say a pipeline.
  15289.  
  15290.  The notation for spaces allows some flexibility for application output.
  15291.  Note that an empty character position in _f_o_r_m_a_t represents one or more
  15292.  <blank> characters on the output (not _w_h_i_t_e _s_p_a_c_e, which can include
  15293.  <newline>s).  Therefore, another utility that reads that output as its
  15294.  input must be prepared to parse the data using _s_c_a_n_f(), awk, etc.  The W
  15295.  character is used when exactly one <space> is output.
  15296.  
  15297.  The treatment of integers and spaces is different from the real _p_r_i_n_t_f(),
  15298.  in that they can be surrounded with <blank>_s.  This was done so that,
  15299.  given a format such as:
  15300.  
  15301.  
  15302.  
  15303.                Copyright c 1991 IEEE.  All rights reserved.
  15304.       This is an unapproved IEEE Standards Draft, subject to change.
  15305.  
  15306.  
  15307.  
  15308.  
  15309.  
  15310.  202                                2 Terminology and General Requirements
  15311.  
  15312.  
  15313.  
  15314.  
  15315.  
  15316.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  15317.  
  15318.        "%d\n", <_f_o_o>
  15319.  
  15320.  the implementation could use a real _p_r_i_n_t_f() such as
  15321.  
  15322.        printf("%6d\n", foo);
  15323.  
  15324.  and still conform.  It would have been possible for the standard to use
  15325.  "%6d\n", but it would have been difficult to pick a number that would
  15326.  have pleased everyone.  This notation is thus somewhat like _s_c_a_n_f() in
  15327.  addition to _p_r_i_n_t_f().
  15328.  
  15329.  The _p_r_i_n_t_f() function was chosen as a model as most of the working group
  15330.  was familiar with it and it was thought that many of the readers would be
  15331.  as well.
  15332.  
  15333.  One difference from the C function _p_r_i_n_t_f() is that the l and h
  15334.  conversion characters are not used.  As expressed by this standard, there
  15335.  is no differentiation between decimal values for _i_n_ts versus _l_o_n_gs versus
  15336.  _s_h_o_r_ts.  The specifications %d or %i should be interpreted as an
  15337.  arbitrary length sequence of digits.  Also, no distinction is made
  15338.  between single precision and double precision numbers (_f_l_o_a_t/_d_o_u_b_l_e in
  15339.  C).  These are simply referred to as floating point numbers.
  15340.  
  15341.  Many of the output descriptions in this standard use the term _l_i_n_e, such
  15342.  as:
  15343.  
  15344.        "%s", <_i_n_p_u_t _l_i_n_e>
  15345.  
  15346.  Since the definition of _l_i_n_e includes the trailing <newline> character
  15347.  already, there is no need to include a "\n" in the format; a double
  15348.  <newline> would otherwise result.
  15349.  
  15350.  In the language at the end of the clause:
  15351.  
  15352.        ``In no case does a nonexistent or insufficient _f_i_e_l_d _w_i_d_t_h
  15353.        cause truncation of a field; ...''
  15354.  
  15355.  the term ``field width'' should not be confused with the term
  15356.  ``precision'' used in the description of %s.
  15357.  
  15358.  Examples:
  15359.  
  15360.  To represent the output of a program that prints a date and time in the
  15361.  form Sunday, July 3, 10:02, where <_w_e_e_k_d_a_y> and <_m_o_n_t_h> are strings:
  15362.  
  15363.        "%s,W%sW%d,W%d:%.2d\n", <_w_e_e_k_d_a_y>, <_m_o_n_t_h>, <_d_a_y>, <_h_o_u_r>,
  15364.        <_m_i_n>
  15365.  
  15366.  
  15367.  
  15368.  
  15369.                Copyright c 1991 IEEE.  All rights reserved.
  15370.       This is an unapproved IEEE Standards Draft, subject to change.
  15371.  
  15372.  
  15373.  
  15374.  
  15375.  
  15376.  2.12 File Format Notation                                             203
  15377.  
  15378.  
  15379.  
  15380.  
  15381.  
  15382.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  15383.  
  15384.  To show J written to 5 decimal places:
  15385.  
  15386.        "piW=W%.5f\n", <_v_a_l_u_e _o_f J>
  15387.  
  15388.  To show an input file format consisting of five colon-separated fields:
  15389.  
  15390.        "%s:%s:%s:%s:%s\n", <_a_r_g_1>, <_a_r_g_2>, <_a_r_g_3>, <_a_r_g_4>, <_a_r_g_5>
  15391.  
  15392.  END_RATIONALE
  15393.  
  15394.  
  15395.  
  15396.  2.13  Configuration Values
  15397.  
  15398.  
  15399.  2.13.1  Symbolic Limits
  15400.  
  15401.  This clause lists magnitude limitations imposed by a specific
  15402.  implementation.  The braces notation, {LIMIT}, is used in this standard
  15403.  to indicate these values, but the braces are not part of the name.  The
  15404.  values specified in Table 2-16 represent the lowest values conforming
  15405.  implementations shall provide; and consequently, the largest values on
  15406.  which an application can rely without further enquiries, as described
  15407.  below.  These values shall be accessible to applications via the getconf
  15408.  utility (see 4.26) and through the interfaces described in 7.8.2, [such
  15409.  as _s_y_s_c_o_n_f() in the C binding].  The literal names shown in the table
  15410.  apply only to the getconf utility; the high-level-language binding shall
  15411.  describe the exact form of each name to be used by the interfaces in that
  15412.  binding.
  15413.  
  15414.  Implementations may provide more liberal, or less restrictive, values
  15415.  than shown in Table 2-16.  These possibly more liberal values are
  15416.  accessible using the symbols in Table 2-17.
  15417.  
  15418.  The functions in 7.8.2 [such as _s_y_s_c_o_n_f() in the C binding] or the
  15419.  getconf utility shall return the value of each symbol on each specific
  15420.  implementation.  The value so retrieved shall be the largest, or most
  15421.  liberal, value that shall be available throughout the session lifetime,
  15422.  as determined at session creation.  The literal names shown in the table
  15423.  apply only to the getconf utility; the high-level-language binding shall
  15424.  describe the exact form of each name to be used by the interfaces in that
  15425.  binding.
  15426.  
  15427.  All numerical limits defined by POSIX.1 {8}, such as {PATH_MAX}, also
  15428.  apply to this standard.  (See POSIX.1 {8} 2.8.)  All the utilities
  15429.  defined by this standard are implicitly limited by these values, unless
  15430.  otherwise noted in the utility descriptions.
  15431.  
  15432.  
  15433.  
  15434.  
  15435.                Copyright c 1991 IEEE.  All rights reserved.
  15436.       This is an unapproved IEEE Standards Draft, subject to change.
  15437.  
  15438.  
  15439.  
  15440.  
  15441.  
  15442.  204                                2 Terminology and General Requirements
  15443.  
  15444.  
  15445.  
  15446.  
  15447.  
  15448.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  15449.  
  15450.  
  15451.                 Table 2-16  -  Utility Limit Minimum Values
  15452.  __________________________________________________________________________________________________________________________________________________
  15453.              Name                       Description              Value
  15454.    ____________________________________________________________________
  15455.  
  15456.    {POSIX2_BC_BASE_MAX}        The maximum _o_b_a_s_e value            99
  15457.                                allowed by the bc utility.
  15458.    {POSIX2_BC_DIM_MAX}         The maximum number of elements   2048
  15459.                                permitted in an array by the
  15460.                                bc utility.
  15461.    {POSIX2_BC_SCALE_MAX}       The maximum _s_c_a_l_e value            99
  15462.                                allowed by the bc utility.
  15463.    {POSIX2_BC_STRING_MAX}      The maximum length of a string   1000
  15464.                                constant accepted by the bc
  15465.                                utility.
  15466.    {POSIX2_COLL_WEIGHTS_MAX}   The maximum number of weights       2
  15467.                                that can be assigned to an
  15468.                                entry of the LC_COLLATE order
  15469.                                keyword in the locale
  15470.                                definition file; see
  15471.                                2.5.2.2.3.
  15472.    {POSIX2_EXPR_NEST_MAX}      The maximum number of              32
  15473.                                expressions that can be nested
  15474.                                within parentheses by the expr
  15475.                                utility.
  15476.    {POSIX2_LINE_MAX}           Unless otherwise noted, the      2048
  15477.                                maximum length, in bytes, of a
  15478.                                utility's input line (either
  15479.                                standard input or another
  15480.                                file), when the utility is
  15481.                                described as processing text
  15482.                                files.  The length includes
  15483.                                room for the trailing
  15484.                                <newline>.
  15485.    {POSIX2_RE_DUP_MAX}         The maximum number of repeated    255
  15486.                                occurrences of a regular
  15487.                                expression permitted when
  15488.                                using the interval notation
  15489.                                \{_m,_n\}; see 2.8.3.3.
  15490.    {POSIX2_VERSION}            This value indicates the          199???     11
  15491.                                version of the utilities in                  1
  15492.                                this standard that are                       1
  15493.                                provided by the                              1
  15494.                                implementation.  It will                     1
  15495.                                change with each published                   1
  15496.                                version of this standard.                    1
  15497.  __________________________________________________________________________________________________________________________________________________
  15498.  
  15499.  
  15500.  
  15501.                Copyright c 1991 IEEE.  All rights reserved.
  15502.       This is an unapproved IEEE Standards Draft, subject to change.
  15503.  
  15504.  
  15505.  
  15506.  
  15507.  
  15508.  2.13 Configuration Values                                             205
  15509.  
  15510.  
  15511.  
  15512.  
  15513.  
  15514.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  15515.  
  15516.  
  15517.                   Table 2-17  -  Symbolic Utility Limits
  15518.  __________________________________________________________________________________________________________________________________________________
  15519.                                                        Minimum
  15520.           Name              Description                 Value
  15521.    ____________________________________________________________________
  15522.  
  15523.    {BC_BASE_MAX}      The maximum _o_b_a_s_e value {POSIX2_BC_BASE_MAX}
  15524.                       allowed by the bc
  15525.                       utility.
  15526.    {BC_DIM_MAX}       The maximum number of   {POSIX2_BC_DIM_MAX}
  15527.                       elements permitted in
  15528.                       an array by the bc
  15529.                       utility.
  15530.    {BC_SCALE_MAX}     The maximum _s_c_a_l_e value {POSIX2_BC_SCALE_MAX}
  15531.                       allowed by the bc
  15532.                       utility.
  15533.    {BC_STRING_MAX}    The maximum length of a {POSIX2_BC_STRING_MAX}
  15534.                       string constant
  15535.                       accepted by the bc
  15536.                       utility.
  15537.    {COLL_WEIGHTS_MAX} The maximum number of   {POSIX2_COLL_WEIGHTS_MAX}
  15538.                       weights that can be
  15539.                       assigned to an entry of
  15540.                       the LC_COLLATE order
  15541.                       keyword in the locale
  15542.                       definition file; see
  15543.                       2.5.2.2.3.
  15544.    {EXPR_NEST_MAX}    The maximum number of   {POSIX2_EXPR_NEST_MAX}
  15545.                       expressions that can be
  15546.                       nested within
  15547.                       parentheses by the expr
  15548.                       utility.
  15549.    {LINE_MAX}         Unless otherwise noted, {POSIX2_LINE_MAX}
  15550.                       the maximum length, in
  15551.                       bytes, of a utility's
  15552.                       input line (either
  15553.                       standard input or
  15554.                       another file), when the
  15555.                       utility is described as
  15556.                       processing text files.
  15557.                       The length includes
  15558.                       room for the trailing
  15559.                       <newline>.
  15560.                       The maximum number of
  15561.                       repeated occurrences of
  15562.                       a regular expression
  15563.                       permitted when using
  15564.                       the interval notation
  15565.                       \{_m,_n\}; see 2.8.3.3.
  15566.  
  15567.                Copyright c 1991 IEEE.  All rights reserved.
  15568.       This is an unapproved IEEE Standards Draft, subject to change.
  15569.  
  15570.  
  15571.  
  15572.  
  15573.  
  15574.  206                                2 Terminology and General Requirements
  15575.  
  15576.  
  15577.  
  15578.  
  15579.  
  15580.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  15581.  
  15582.    {RE_DUP_MAX}                               {POSIX2_RE_DUP_MAX}
  15583.  
  15584.  
  15585.  
  15586.  
  15587.  
  15588.  __________________________________________________________________________________________________________________________________________________
  15589.  
  15590.  
  15591.  It is not guaranteed that the application can in fact push a value to the
  15592.  implementation's specified limit in any given case, or at all, as a lack
  15593.  of virtual memory or other resources may prevent this.  The limit value
  15594.  indicates only that the implementation does not specifically impose any
  15595.  arbitrary, more restrictive limit.
  15596.  
  15597.  BEGIN_RATIONALE
  15598.  
  15599.  
  15600.  2.13.1.1  Symbolic Limits Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  15601.            _P_1_0_0_3._2)
  15602.  
  15603.  This clause grew out of an idea that originated in POSIX.1 {8}, in the
  15604.  form of _s_y_s_c_o_n_f() and _p_a_t_h_c_o_n_f().  (In fact, the same person wrote the
  15605.  original text for both standards.)  The idea is that a Strictly
  15606.  Conforming POSIX.2 Application can be written to use the most restrictive
  15607.  values that a minimal system can provide, but it shouldn't have to.  The
  15608.  values shown in Table 2-17 represent compromises so that some vendors can
  15609.  use historically-limited versions of UNIX system utilities.  They are the
  15610.  highest values that Strictly Conforming POSIX.2 Applications or
  15611.  Conforming POSIX.2 Applications can assume, given no other information.
  15612.  
  15613.  However, by using getconf or _s_y_s_c_o_n_f(), the elegant application can
  15614.  tailor itself to the more liberal values on some of the specific
  15615.  instances of specific implementations.
  15616.  
  15617.  There is no explicitly-stated requirement that an implementation provide
  15618.  finite limits for any of these numeric values; the implementation is free
  15619.  to provide essentially unbounded capabilities (where it makes sense),
  15620.  stopping only at reasonable points such as {ULONG_MAX} (from the
  15621.  C Standard {7} via POSIX.1 {8}).  Therefore, applications desiring to
  15622.  tailor themselves to the values on a particular implementation need to be
  15623.  ready for possibly huge values; it may not be a good idea to blindly
  15624.  allocate a buffer for an input line based on the value of {LINE_MAX}, for
  15625.  instance.  However, unlike POSIX.1 {8}, there is no set of limits in this
  15626.  standard that return a special indication meaning ``unbounded.''  The
  15627.  implementation should always return an actual number, even if the number
  15628.  is very large.
  15629.  
  15630.  
  15631.  
  15632.  
  15633.                Copyright c 1991 IEEE.  All rights reserved.
  15634.       This is an unapproved IEEE Standards Draft, subject to change.
  15635.  
  15636.  
  15637.  
  15638.  
  15639.  
  15640.  2.13 Configuration Values                                             207
  15641.  
  15642.  
  15643.  
  15644.  
  15645.  
  15646.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  15647.  
  15648.  The statement
  15649.  
  15650.        ``It is not guaranteed that the application ...
  15651.  
  15652.  is an indication that many of these limits are designed to ensure that
  15653.  implementors design their utilities without arbitrary constraints related
  15654.  to unimaginative programming.  There are certainly conditions under which
  15655.  combinations of options can cause failures that would not render an
  15656.  implementation nonconforming.  For example, {EXPR_NEST_MAX} and {ARG_MAX}
  15657.  could collide when expressions are large; combinations of {BC_SCALE_MAX}
  15658.  and {BC_DIM_MAX} could exceed virtual memory.
  15659.  
  15660.  In POSIX.2, the notion of a limit being guaranteed for the process
  15661.  lifetime, as it is in POSIX.1 {8}, is not as useful to a shell script.
  15662.  The getconf utility is probably a process itself, so the guarantee would
  15663.  be valueless.  Therefore, POSIX.2 requires the guarantee to be for the
  15664.  session lifetime.  This will mean that many vendors will either return
  15665.  very conservative values or possibly implement getconf as a built-in.
  15666.  
  15667.  It may seem confusing to have limits that apply only to a single utility
  15668.  grouped into one global clause.  However, the alternative, which would be
  15669.  to disperse them out into their utility description clauses, would cause
  15670.  great difficulty when _s_y_s_c_o_n_f() and getconf were described.  Therefore,
  15671.  the working group chose the global approach.
  15672.  
  15673.  Each language binding could provide symbol names that are slightly
  15674.  different than are shown here.  For example, the C binding prefixes the
  15675.  symbols with a leading underscore.
  15676.  
  15677.  The following comments describe selection criteria for the symbols and
  15678.  their values.
  15679.  
  15680.     {ARG_MAX}
  15681.           This is defined by POSIX.1 {8}.  Unfortunately, it is very
  15682.           difficult for a portable application to deal with this value, as
  15683.           it does not know how much of its argument space is being
  15684.           consumed by the user's environment variables.
  15685.  
  15686.     {BC_BASE_MAX}
  15687.     {BC_DIM_MAX}
  15688.     {BC_SCALE_MAX}
  15689.           These were originally one value, {BC_SCALE_MAX}, but it was
  15690.           unreasonable to link all three concepts into one limit.
  15691.  
  15692.     {CHILD_MAX}
  15693.           This is defined by POSIX.1 {8}.
  15694.  
  15695.     {CUT_FIELD_MAX}
  15696.           This value was removed from an earlier draft.  It represented
  15697.  
  15698.  
  15699.                Copyright c 1991 IEEE.  All rights reserved.
  15700.       This is an unapproved IEEE Standards Draft, subject to change.
  15701.  
  15702.  
  15703.  
  15704.  
  15705.  
  15706.  208                                2 Terminology and General Requirements
  15707.  
  15708.  
  15709.  
  15710.  
  15711.  
  15712.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  15713.  
  15714.           the maximum length of the _l_i_s_t argument to the cut -c or -f
  15715.           options.  Since the length is now unspecified, the utility
  15716.           should have to deal with arbitrarily long lists, as long as
  15717.           {ARG_MAX} is not exceeded.
  15718.  
  15719.     {CUT_LINE_MAX}
  15720.           This value was removed from an earlier draft.  Historical cuts
  15721.           have had input line limits of 1024; this removal therefore
  15722.           mandates that a conforming cut shall process files with lines of  1
  15723.           unlimited length.                                                 1
  15724.  
  15725.     {DEPTH_MAX}
  15726.           This directory-traversing depth limit (which at one time applied
  15727.           to rm and find) was removed from an earlier draft for two major
  15728.           reasons:
  15729.  
  15730.            (1)  It could be a security problem if utilities searching for
  15731.                 files could not descend below a published depth; this
  15732.                 would be a semi-reliable means of hiding files from the
  15733.                 administrator.
  15734.  
  15735.            (2)  There is no reason a reasonable implementation should have
  15736.                 to limit itself in this way.
  15737.  
  15738.     {ED_FILE_MAX}
  15739.           This value was removed from an earlier draft.  Historical eds
  15740.           have had very small file limits; since {ED_FILE_MAX} is no
  15741.           longer specified, implementations have to document the limits as
  15742.           described in 2.11.  It is recommended that implementations set
  15743.           much more reasonable file size limits as they modify ed to deal
  15744.           with other features required by POSIX.2.
  15745.  
  15746.     {ED_LINE_MAX}
  15747.           This value was removed from an earlier draft.  Historical eds
  15748.           have had small input line limits; this removal therefore
  15749.           mandates that a conforming ed shall process files with lines of
  15750.           length {LINE_MAX}.
  15751.  
  15752.     {COLL_WEIGHTS_MAX}
  15753.           The weights assigned to order can be considered as ``passes''
  15754.           through the collation algorithm.
  15755.  
  15756.     {EXPR_NEST_MAX}
  15757.           The value for expression nesting was borrowed from the
  15758.           C Standard {7}.
  15759.  
  15760.     {FIND_DEPTH_MAX}
  15761.           This was removed from an earlier draft in favor of a common
  15762.  
  15763.  
  15764.  
  15765.                Copyright c 1991 IEEE.  All rights reserved.
  15766.       This is an unapproved IEEE Standards Draft, subject to change.
  15767.  
  15768.  
  15769.  
  15770.  
  15771.  
  15772.  2.13 Configuration Values                                             209
  15773.  
  15774.  
  15775.  
  15776.  
  15777.  
  15778.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  15779.  
  15780.           value, {DEPTH_MAX}.
  15781.  
  15782.     {FIND_FILESYS_MAX}
  15783.           This was removed from an earlier draft.  It indicated the limit
  15784.           of the number of file systems that find could traverse in its
  15785.           search.  It was dropped because this standard does not really
  15786.           acknowledge the historical nature of separate file systems.
  15787.  
  15788.     {FIND_NEWER_MAX}
  15789.           This value, which allowed find to limit the number of -newer
  15790.           operands it processed, was deleted from an earlier draft.  It
  15791.           was felt to be a vestige of a particular implementation with an
  15792.           incorrect programming algorithm that should not limit
  15793.           applications.
  15794.  
  15795.     {JOIN_LINE_MAX}
  15796.           This value was removed from an earlier draft.  Historical joins
  15797.           have had input line limits of 1024; this removal therefore
  15798.           mandates that a conforming join shall process files with lines
  15799.           of length {LINE_MAX}.
  15800.  
  15801.     {LINE_MAX}
  15802.           This is a global limit that affects all utilities, unless
  15803.           otherwise noted.  The {MAX_CANON} value from POSIX.1 {8} may
  15804.           further limit input lines from terminals.  The {LINE_MAX} value
  15805.           was the subject of much debate and is a compromise between those
  15806.           who wished unlimited lines and those who understood that many
  15807.           historical utilities were written with fixed buffers.
  15808.           Frequently, utility writers selected the UNIX system constant
  15809.           BUFSIZ to allocate these buffers; therefore, some utilities were
  15810.           limited to 512 bytes for I/O lines, while others achieved 4096
  15811.           or greater.
  15812.  
  15813.           It should be noted that {LINE_MAX} applies only to input line
  15814.           length; there is no requirement in the standard that limits the
  15815.           length of output lines.  Utilities such as awk, sed, and paste
  15816.           could theoretically construct lines longer than any of the input
  15817.           lines they received, depending on the options used or the
  15818.           instructions from the application.  They are not required to
  15819.           truncate their output to {LINE_MAX}.  It is the responsibility
  15820.           of the application to deal with this.  If the output of one of
  15821.           those utilities is to be piped into another of the standard
  15822.           utilities, line lengths restrictions will have to be considered;
  15823.           the fold utility, among others, could be used to ensure that
  15824.           only reasonable line lengths reach utilities or applications.
  15825.  
  15826.     {LINK_MAX}
  15827.           This is defined by POSIX.1 {8}.
  15828.  
  15829.  
  15830.  
  15831.                Copyright c 1991 IEEE.  All rights reserved.
  15832.       This is an unapproved IEEE Standards Draft, subject to change.
  15833.  
  15834.  
  15835.  
  15836.  
  15837.  
  15838.  210                                2 Terminology and General Requirements
  15839.  
  15840.  
  15841.  
  15842.  
  15843.  
  15844.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  15845.  
  15846.     {LP_LINE_MAX}
  15847.           This value was removed from an earlier draft.  Since so little
  15848.           is being required for the details of the lp utility, it made
  15849.           little sense to specify how long its output lines are.  Thus,
  15850.           implementations of lp will be expected to deal with lines up to
  15851.           {LINE_MAX}, but whether those lines print sensibly on every
  15852.           device is unspecified.
  15853.  
  15854.     {MAX_CANON}
  15855.           This is defined by POSIX.1 {8}.
  15856.  
  15857.     {MAX_INPUT}
  15858.           This is defined by POSIX.1 {8}.
  15859.  
  15860.     {NAME_MAX}
  15861.           This is defined by POSIX.1 {8}.
  15862.  
  15863.     {NGROUPS_MAX}
  15864.           This is defined by POSIX.1 {8}.
  15865.  
  15866.     {OPEN_MAX}
  15867.           This is defined by POSIX.1 {8}.
  15868.  
  15869.     {PATH_MAX}
  15870.           This is defined by POSIX.1 {8}.
  15871.  
  15872.     {PIPE_BUF}
  15873.           This is defined by POSIX.1 {8}.
  15874.  
  15875.     {RM_DEPTH_MAX}
  15876.           This was removed from an earlier draft in favor of a common
  15877.           value, {DEPTH_MAX}.
  15878.  
  15879.     {RE_DUP_MAX}
  15880.           The value selected is consistent with historical practice.
  15881.  
  15882.     {SED_PATTERN_MAX}
  15883.           This symbolic value, the size of the sed pattern space, was
  15884.           replaced by a specific value in the sed description.  It is
  15885.           unlikely that any real application would ever need to access
  15886.           this value symbolically.
  15887.  
  15888.     {SORT_LINE_MAX}
  15889.           This was removed from an earlier draft.  Now that cut and fold
  15890.           can handle unlimited-length input lines, a special long input
  15891.           line limit for sort is not needed.
  15892.  
  15893.  There are different limits associated with command lines and input to
  15894.  utilities, depending on the method of invocation.  In the case of a C
  15895.  
  15896.  
  15897.                Copyright c 1991 IEEE.  All rights reserved.
  15898.       This is an unapproved IEEE Standards Draft, subject to change.
  15899.  
  15900.  
  15901.  
  15902.  
  15903.  
  15904.  2.13 Configuration Values                                             211
  15905.  
  15906.  
  15907.  
  15908.  
  15909.  
  15910.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  15911.  
  15912.  program _e_x_e_c-ing a utility, {ARG_MAX} is the underlying limit.  In the
  15913.  case of the shell reading a script and _e_x_e_c-ing a utility, {LINE_MAX}
  15914.  limits the length of lines the shell is required to process and {ARG_MAX}
  15915.  will still be a limit.  If a user is entering a command on a terminal to
  15916.  the shell, requesting that it invoke the utility, {MAX_INPUT} may
  15917.  restrict the length of the line that can be given to the shell to a value
  15918.  below {LINE_MAX}.
  15919.  
  15920.  END_RATIONALE
  15921.  
  15922.  
  15923.  2.13.2  Symbolic Constants for Portability Specifications
  15924.  
  15925.  
  15926.            Table 2-18  -  Optional Facility Configuration Values
  15927.  __________________________________________________________________________________________________________________________________________________
  15928.         Name                                   Description
  15929.  _________________________________________________________________________
  15930.  
  15931.  {POSIX2_C_BIND}                The C language development facilities in
  15932.                                 Annex A support the C Language Bindings
  15933.                                 Option (see Annex B).
  15934.  {POSIX2_C_DEV}                 The system supports the C Language
  15935.                                 Development Utilities Option (see
  15936.                                 Annex A).
  15937.  {POSIX2_FORT_DEV}              The system supports the FORTRAN
  15938.                                 Development Utilities Option (see
  15939.                                 Annex C).
  15940.  {POSIX2_FORT_RUN}              The system supports the FORTRAN Runtime
  15941.                                 Utilities Option (see Annex C).
  15942.  {POSIX2_LOCALEDEF}             The system supports the creation of
  15943.                                 locales as described in 4.35.
  15944.  {POSIX2_SW_DEV}                The system supports the Software
  15945.                                 Development Utilities Option (see Section
  15946.                                 6).
  15947.  __________________________________________________________________________________________________________________________________________________
  15948.  
  15949.  
  15950.  Table 2-18 lists symbols that can be used by the application to determine
  15951.  which optional facilities are present on the implementation.  The
  15952.  functions defined in 7.8.2 [such as _s_y_s_c_o_n_f()] or the getconf utility can
  15953.  be used to retrieve the value of each symbol on each specific
  15954.  implementation.  The literal names shown in the table apply only to the
  15955.  getconf utility; the high-level-language binding shall describe the exact
  15956.  form of each name to be used by the interfaces in that binding.
  15957.  
  15958.  Each of these symbols shall be considered valid names by the
  15959.  implementation.  Each shall be defined on the system with a value of 1 if
  15960.  the corresponding option is supported; otherwise, the symbol shall be
  15961.  undefined.
  15962.  
  15963.                Copyright c 1991 IEEE.  All rights reserved.
  15964.       This is an unapproved IEEE Standards Draft, subject to change.
  15965.  
  15966.  
  15967.  
  15968.  
  15969.  
  15970.  212                                2 Terminology and General Requirements
  15971.  
  15972.  
  15973.  
  15974.  
  15975.  
  15976.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  15977.  
  15978.  BEGIN_RATIONALE
  15979.  
  15980.  
  15981.  2.13.2.1  Symbolic Constants for Portability Specifications Rationale.
  15982.            (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  15983.  
  15984.  When an option is supported, getconf returns a value of 1.  For example,
  15985.  when C development is supported:
  15986.  
  15987.        if [ "$(getconf POSIX2_C_DEV)" -eq 1 ]; then
  15988.                echo C supported
  15989.        fi
  15990.  
  15991.  The _s_y_s_c_o_n_f() function in the C binding would return 1.
  15992.  
  15993.  The following comments describe selection criteria for the symbols and
  15994.  their values.
  15995.  
  15996.     {POSIX2_C_BIND}
  15997.     {POSIX2_C_DEV}
  15998.     {POSIX2_FORT_DEV}
  15999.     {POSIX2_SW_DEV}
  16000.           These were renamed from _POSIX_* in Draft 9 after it was pointed
  16001.           out that each of the POSIX standards should keep generally in
  16002.           its own namespace.
  16003.  
  16004.           It is possible for some (usually privileged) operations to
  16005.           remove utilities that support these options, or otherwise render
  16006.           these options unsupported.  The header files, the _s_y_s_c_o_n_f()
  16007.           function, or the getconf utility will not necessarily detect
  16008.           such actions, in which case they should not be considered as
  16009.           rendering the implementation nonconforming.  A test suite should
  16010.           not attempt tests like:
  16011.  
  16012.                 rm /usr/bin/c89
  16013.                 getconf POSIX2_C_DEV
  16014.  
  16015.     {_POSIX_LOCALEDEF}
  16016.           This symbol was introduced to allow implementations to restrict
  16017.           supported locales to only those supplied by the implementation.
  16018.  
  16019.  END_RATIONALE
  16020.  
  16021.  
  16022.  
  16023.  
  16024.  
  16025.  
  16026.  
  16027.  
  16028.  
  16029.                Copyright c 1991 IEEE.  All rights reserved.
  16030.       This is an unapproved IEEE Standards Draft, subject to change.
  16031.  
  16032.  
  16033.  
  16034.  
  16035.  
  16036.  2.13 Configuration Values                                             213
  16037.  
  16038.  
  16039.  
  16040.  
  16041.  
  16042.  
  16043.  
  16044.  
  16045.  
  16046.  
  16047.  
  16048.  
  16049.  
  16050.  
  16051.  
  16052.  
  16053.  
  16054.  
  16055.  
  16056.  
  16057.  
  16058.  
  16059.  
  16060.  
  16061.  
  16062.  
  16063.  
  16064.  
  16065.  
  16066.  
  16067.  
  16068.  
  16069.  
  16070.  
  16071.  
  16072.  
  16073.  
  16074.  
  16075.  
  16076.  
  16077.  
  16078.  
  16079.  
  16080.  
  16081.  
  16082.  
  16083.  
  16084.  
  16085.  
  16086.  
  16087.  
  16088.  
  16089.  
  16090.  
  16091.  
  16092.  
  16093.  
  16094.  
  16095.  
  16096.  
  16097.  
  16098.  
  16099.  
  16100.  
  16101.  
  16102.  
  16103.  
  16104.  
  16105.  
  16106.  
  16107.  
  16108.                                                              P1003.2/D11.2
  16109.  
  16110.  
  16111.  
  16112.  
  16113.  
  16114.  
  16115.  
  16116.  
  16117.                      Section 3: Shell Command Language
  16118.  
  16119.  
  16120.  
  16121.  The shell is a command language interpreter.  This section describes the
  16122.  syntax of that command language as it is used by the sh utility and the
  16123.  functions in 7.1 [such as _s_y_s_t_e_m() and _p_o_p_e_n() in the C binding].
  16124.  
  16125.  The shell operates according to the following general overview of
  16126.  operations.  The specific details are included in the cited clauses and
  16127.  subclauses of this section.  The shell:
  16128.  
  16129.      (1)  Reads its input from a file (see sh in 4.56), from the -c
  16130.           option, or from one of the functions in 7.1.  If the first line
  16131.           of a file of shell commands starts with the characters #!, the
  16132.           results are unspecified.
  16133.  
  16134.      (2)  Breaks the input into tokens:  words and operators.  (See 3.3.)
  16135.  
  16136.      (3)  Parses the input into simple (3.9.1) and compound (3.9.4)
  16137.           commands.
  16138.  
  16139.      (4)  Performs various expansions (separately) on different parts of
  16140.           each command, resulting in a list of pathnames and fields to be
  16141.           treated as a command and arguments (3.6).
  16142.  
  16143.      (5)  Performs redirection (3.7) and removes redirection operators and
  16144.           their operands from the parameter list.
  16145.  
  16146.      (6)  Executes a function (3.9.5), built-in (3.14), executable file,
  16147.           or script, giving the name of the command (or, in the case of a   1
  16148.           function within a script, the name of the script) as the          1
  16149.           ``zero'th'' argument and the remaining words and fields as
  16150.           parameters (3.9.1.1).
  16151.  
  16152.      (7)  Optionally waits for the command to complete and collects the
  16153.           exit status (3.8.2).
  16154.  
  16155.  BEGIN_RATIONALE
  16156.  
  16157.  
  16158.  
  16159.  
  16160.  
  16161.                Copyright c 1991 IEEE.  All rights reserved.
  16162.       This is an unapproved IEEE Standards Draft, subject to change.
  16163.  
  16164.  
  16165.  
  16166.  
  16167.  
  16168.  3 Shell Command Language                                              215
  16169.  
  16170.  
  16171.  
  16172.  
  16173.  
  16174.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  16175.  
  16176.  3.0.1  Shell Command Language Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  16177.         _P_1_0_0_3._2)
  16178.  
  16179.  The System V shell was selected as the starting point for this standard.
  16180.  The BSD C-shell was excluded from consideration, for the following
  16181.  reasons:
  16182.  
  16183.      (1)  Most historically portable shell scripts assume the Version 7
  16184.           ``Bourne'' shell, from which the System V shell is derived.
  16185.  
  16186.      (2)  The majority of tutorial materials on shell programming assume
  16187.           the System V shell.
  16188.  
  16189.  Despite the selection of the System V shell, the developers of the
  16190.  standard did not limit the possibilities for a shell command language
  16191.  that was upward-compatible.
  16192.  
  16193.  The only programmatic interfaces to the shell language are through the
  16194.  functions in 7.1 and the sh utility.  Most implementations provide an
  16195.  interface to, and processing mode for, the shell that is suitable for
  16196.  direct user interaction.  The behavior of this interactive mode is not
  16197.  defined by this standard; however, places where historically an
  16198.  interactive shell behaves differently from the behavior described here
  16199.  are noted.
  16200.  
  16201.      (1)  Aliases are not included in the base POSIX.2 because they
  16202.           duplicate functionality already available to applications with
  16203.           functions.  In early drafts, the search order of simple command
  16204.           lookup was ``aliases, built-ins, functions, file system,'' and
  16205.           therefore an alias was necessary to create a user-defined
  16206.           command having the same name as a built-in.  To retain this
  16207.           capability, the search order has changed to ``special built-ins,
  16208.           functions, built-ins, file system,'' and a built-in, called
  16209.           command, has been added, which disables the looking up of
  16210.           functions.  Aliases are a part of the POSIX.2a UPE because they
  16211.           are widely used by human users, as differentiated from
  16212.           applications.
  16213.  
  16214.      (2)  All references to job control and related commands have been
  16215.           omitted from the base POSIX.2.  POSIX.2 describes the
  16216.           noninteractive operation of the shell; job control is outside
  16217.           the scope of this standard until the UPE revision is developed.
  16218.           Apparently it is not widely known that traditionally, even in a
  16219.           job control environment, the commands executed during the
  16220.           execution of a shell script are not placed into separate process
  16221.           groups.  If they were, one could not stop the execution of the
  16222.           shell script from the interactive shell, for example.  This
  16223.           standard does not require or prohibit job control; it simply
  16224.           does not mention it.
  16225.  
  16226.  
  16227.                Copyright c 1991 IEEE.  All rights reserved.
  16228.       This is an unapproved IEEE Standards Draft, subject to change.
  16229.  
  16230.  
  16231.  
  16232.  
  16233.  
  16234.  216                                              3 Shell Command Language
  16235.  
  16236.  
  16237.  
  16238.  
  16239.  
  16240.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  16241.  
  16242.      (3)  The conditional command (double bracket [[ ]]) was removed from
  16243.           an earlier draft.  Objections were lodged that the real problem
  16244.           is misuse of the test command ([), and putting it into the shell
  16245.           is the wrong way to fix the problem.  Instead, proper
  16246.           documentation and a new shell reserved word (!) are sufficient.
  16247.           Tests that require multiple test operations can be done at the
  16248.           shell level using individual invocations of the test command and
  16249.           shell logicals, rather than the error prone -o flag of test.
  16250.  
  16251.      (4)  Exportable functions were removed from an earlier draft.  See
  16252.           the rationale in 3.9.5.1.
  16253.  
  16254.  The construct #! is reserved for implementations wishing to provide that
  16255.  extension.  If it were not reserved, the standard would disallow it by
  16256.  forcing it to be a comment.  As it stands, a conforming application shall
  16257.  not use #!  as the first line of a shell script.
  16258.  
  16259.  END_RATIONALE
  16260.  
  16261.  
  16262.  
  16263.  3.1  Shell Definitions
  16264.  
  16265.  The following terms are used in Section 3.  Because they are specific to
  16266.  the shell, they do not appear in 2.2.2.
  16267.  
  16268.  3.1.1  control operator:  A token that performs a control function.
  16269.  
  16270.  It is one of the following symbols:
  16271.  
  16272.                          &           )       <newline>
  16273.                         &&           ;           |
  16274.                          (          ;;          ||
  16275.  
  16276.  The end-of-input indicator used internally by the shell is also
  16277.  considered a control operator.  See 3.3.
  16278.  
  16279.  On some systems, the symbol (( is a control operator; its use produces     1
  16280.  unspecified results.
  16281.  
  16282.  3.1.2  expand:  When not qualified, the act of applying all the
  16283.  expansions described in 3.6.
  16284.  
  16285.  3.1.3  field:  A unit of text that is the result of parameter expansion
  16286.  (3.6.2), arithmetic expansion (3.6.4), command substitution (3.6.3), or
  16287.  field splitting (3.6.5).
  16288.  
  16289.  During command processing (see 3.9.1), the resulting fields are used as
  16290.  the command name and its arguments.
  16291.  
  16292.  
  16293.                Copyright c 1991 IEEE.  All rights reserved.
  16294.       This is an unapproved IEEE Standards Draft, subject to change.
  16295.  
  16296.  
  16297.  
  16298.  
  16299.  
  16300.  3.1 Shell Definitions                                                 217
  16301.  
  16302.  
  16303.  
  16304.  
  16305.  
  16306.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  16307.  
  16308.  3.1.4  interactive shell:  A processing mode of the shell that is
  16309.  suitable for direct user interaction.
  16310.  
  16311.  The behavior in this mode is not defined by this standard.
  16312.  
  16313.  NOTE:  The preceding sentence is expected to change following the
  16314.  eventual approval of the UPE supplement.
  16315.  
  16316.  3.1.5  name:  A word consisting solely of underscores, digits, and
  16317.  alphabetics from the portable character set (see 2.4).
  16318.  
  16319.  The first character of a name shall not be a digit.
  16320.  
  16321.  3.1.6  operator:  Either a control operator or a redirection operator.
  16322.  
  16323.  3.1.7  parameter:  An entity that stores values.
  16324.  
  16325.  There are three types of parameters:  variables (named parameters),
  16326.  positional parameters, and special parameters.  Parameter expansion is
  16327.  accomplished by introducing a parameter with the $ character.  See 3.5.
  16328.  
  16329.  3.1.8  positional parameter:  A parameter denoted by a single digit or
  16330.  one or more digits in curly braces.
  16331.  
  16332.  See 3.5.1.
  16333.  
  16334.  3.1.9  redirection:  A method of associating files with the input/output
  16335.  of commands.
  16336.  
  16337.  See 3.7.
  16338.  
  16339.  3.1.10  redirection operator:  A token that performs a redirection
  16340.  function.
  16341.  
  16342.  It is one of the following symbols:
  16343.  
  16344.        <     >     >|     <<     >>     <&     >&     <<-     <>
  16345.  
  16346.  3.1.11  special parameter:  A parameter named by a single character from
  16347.  the following list:
  16348.  
  16349.        *         @         #         ?         !         -         $        0
  16350.  
  16351.  See 3.5.2.
  16352.  
  16353.  3.1.12  subshell:  A shell execution environment, distinguished from the
  16354.  main or current shell execution environment by the attributes described
  16355.  in 3.12.
  16356.  
  16357.  
  16358.  
  16359.                Copyright c 1991 IEEE.  All rights reserved.
  16360.       This is an unapproved IEEE Standards Draft, subject to change.
  16361.  
  16362.  
  16363.  
  16364.  
  16365.  
  16366.  218                                              3 Shell Command Language
  16367.  
  16368.  
  16369.  
  16370.  
  16371.  
  16372.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  16373.  
  16374.  3.1.13  token:  A sequence of characters that the shell considers as a
  16375.  single unit when reading input, according to the rules in 3.3.
  16376.  
  16377.  A token is either an operator or a word.
  16378.  
  16379.  3.1.14  variable:  A named parameter.  See 3.5.
  16380.  
  16381.  3.1.15  variable assignment [assignment]:  A word consisting of the
  16382.  following parts
  16383.  
  16384.        _v_a_r_n_a_m_e=_v_a_l_u_e
  16385.  
  16386.  When used in a context where assignment is defined to occur (see 3.9.1)
  16387.  and at no other time, the _v_a_l_u_e (representing a word or field) shall be
  16388.  assigned as the value of the variable denoted by _v_a_r_n_a_m_e. The _v_a_r_n_a_m_e and
  16389.  _v_a_l_u_e parts meet the requirements for a name and a word, respectively,
  16390.  except that they are delimited by the embedded unquoted equals-sign in
  16391.  addition to the delimiting described in 3.3.  In all cases, the variable
  16392.  shall be created if it did not already exist.  If _v_a_l_u_e is not specified,
  16393.  the variable shall be given a null value.
  16394.  
  16395.  An alternative form of variable assignment:
  16396.  
  16397.        _s_y_m_b_o_l=_v_a_l_u_e
  16398.  
  16399.  (where _s_y_m_b_o_l is a valid word delimited by an equals-sign, but not a
  16400.  valid name) produces unspecified results.
  16401.  
  16402.  3.1.16  word:  A token other than an operator.
  16403.  
  16404.  In some cases a word is also a portion of a word token:  in the various
  16405.  forms of parameter expansion (3.6.2), such as ${_n_a_m_e-_w_o_r_d}, and variable
  16406.  assignment, such as _n_a_m_e=_w_o_r_d, the word is the portion of the token
  16407.  depicted by _w_o_r_d. The concept of a word is no longer applicable following
  16408.  word expansions--only fields remain; see 3.6.
  16409.  
  16410.  BEGIN_RATIONALE
  16411.  
  16412.  
  16413.  3.1.17  Shell Definitions Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  16414.          _P_1_0_0_3._2)
  16415.  
  16416.  The _w_o_r_d=_w_o_r_d form of variable assignment was included, producing
  16417.  unspecified results, to allow the KornShell _n_a_m_e[_e_x_p_r_e_s_s_i_o_n]=_v_a_l_u_e syntax
  16418.  to conform.
  16419.  
  16420.  The (( symbol is a control operator in the KornShell, used for an          1
  16421.  alternative syntax of an arithmetic expression command.  A strictly
  16422.  conforming POSIX.2 application cannot use (( as a single token [with the
  16423.  
  16424.  
  16425.                Copyright c 1991 IEEE.  All rights reserved.
  16426.       This is an unapproved IEEE Standards Draft, subject to change.
  16427.  
  16428.  
  16429.  
  16430.  
  16431.  
  16432.  3.1 Shell Definitions                                                 219
  16433.  
  16434.  
  16435.  
  16436.  
  16437.  
  16438.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  16439.  
  16440.  obvious exception of the $(( form described in POSIX.2].  The decision to
  16441.  require this is based solely on the pragmatic knowledge that there are
  16442.  many more historical shell scripts using the KornShell syntax than there
  16443.  might be using nested subshells, such as
  16444.  
  16445.        ((foo))       or        ((foo);(bar))
  16446.  
  16447.  The latter example should not be misinterpreted by the shell as
  16448.  arithmetic because attempts to balance the parentheses pairs would
  16449.  indicate that they are subshells.  Thus, in most cases, while a few
  16450.  scripts will no longer be strictly portable, the chances of breaking
  16451.  existing scripts is even smaller.
  16452.  
  16453.  There are no explicit limits in this standard on the sizes of names,       1
  16454.  words, lines, or other objects.  However, other implicit limits do apply:  1
  16455.  shell script lines produced by many of the standard utilities cannot       1
  16456.  exceed {LINE_MAX} and the sum of exported variables comes under the        1
  16457.  {ARG_MAX} limit.  Historical shells dynamically allocate memory for names  1
  16458.  and words and parse incoming lines a byte at a time.  Lines cannot have    1
  16459.  an arbitrary {LINE_MAX} limit because of historical practice such as       1
  16460.  makefiles, where make removes the <newline>s associated with the commands  1
  16461.  for a target and presents the shell with one very long line.  The text in  1
  16462.  2.11.5.2 does allow a shell to run out of memory, but it cannot have
  16463.  arbitrary programming limits.
  16464.  
  16465.  END_RATIONALE
  16466.  
  16467.  
  16468.  
  16469.  3.2  Quoting
  16470.  
  16471.  Quoting is used to remove the special meaning of certain characters or
  16472.  words to the shell.  Quoting can be used to preserve the literal meaning
  16473.  of the special characters in the next paragraph; prevent reserved words
  16474.  from being recognized as such; and prevent parameter expansion and
  16475.  command substitution within here-document processing (see 3.7.4).
  16476.  
  16477.  The following characters shall be quoted if they are to represent
  16478.  themselves:
  16479.  
  16480.        |    &    ;    <    >    (    )    $    `    \    "    '
  16481.        <space>    <tab>    <newline>
  16482.  
  16483.  and the following may need to be quoted under certain circumstances.
  16484.  That is, these characters may be special depending on conditions
  16485.  described elsewhere in the standard:
  16486.  
  16487.        *          ?          [          #          ~          =          %
  16488.  
  16489.  
  16490.  
  16491.                Copyright c 1991 IEEE.  All rights reserved.
  16492.       This is an unapproved IEEE Standards Draft, subject to change.
  16493.  
  16494.  
  16495.  
  16496.  
  16497.  
  16498.  220                                              3 Shell Command Language
  16499.  
  16500.  
  16501.  
  16502.  
  16503.  
  16504.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  16505.  
  16506.  The various quoting mechanisms are the escape character, single-quotes,
  16507.  and double-quotes.  The here-document represents another form of quoting;
  16508.  see 3.7.4.
  16509.  
  16510.  
  16511.  3.2.1  Escape Character (Backslash)
  16512.  
  16513.  A backslash that is not quoted shall preserve the literal value of the
  16514.  following character, with the exception of a <newline>.  If a <newline>
  16515.  follows the backslash, the shell shall interpret this as line
  16516.  continuation.  The backslash and <newline> shall be removed before
  16517.  splitting the input into tokens.
  16518.  
  16519.  
  16520.  3.2.2  Single-Quotes
  16521.  
  16522.  Enclosing characters in single-quotes (' ') shall preserve the literal
  16523.  value of each character within the single-quotes.  A single-quote cannot
  16524.  occur within single-quotes.
  16525.  
  16526.  
  16527.  3.2.3  Double-Quotes
  16528.  
  16529.  Enclosing characters in double-quotes (" ") shall preserve the literal
  16530.  value of all characters within the double-quotes, with the exception of
  16531.  the characters dollar-sign, backquote, and backslash, as follows:
  16532.  
  16533.     $     The dollar-sign shall retain its special meaning introducing
  16534.           parameter expansion (see 3.6.2), a form of command substitution
  16535.           (see 3.6.3), and arithmetic expansion (see 3.6.4).
  16536.  
  16537.           The input characters within the quoted string that are also
  16538.           enclosed between $( and the matching ) shall not be affected by
  16539.           the double-quotes, but rather shall define that command whose
  16540.           output replaces the $(...) when the word is expanded.  The
  16541.           tokenizing rules in 3.3 shall be applied recursively to find the
  16542.           matching ).
  16543.  
  16544.           Within the string of characters from an enclosed ${ to the
  16545.           matching }, an even number of unescaped double-quotes or
  16546.           single-quotes, if any, shall occur.  A preceding backslash
  16547.           character shall be used to escape a literal { or }.  The rule in
  16548.           3.6.2 shall be used to determine the matching }.
  16549.  
  16550.     `     The backquote shall retain its special meaning introducing the
  16551.           other form of command substitution (see 3.6.3).  The portion of
  16552.           the quoted string from the initial backquote and the characters
  16553.           up to the next backquote that is not preceded by a backslash,
  16554.           having escape characters removed, defines that command whose
  16555.  
  16556.  
  16557.                Copyright c 1991 IEEE.  All rights reserved.
  16558.       This is an unapproved IEEE Standards Draft, subject to change.
  16559.  
  16560.  
  16561.  
  16562.  
  16563.  
  16564.  3.2 Quoting                                                           221
  16565.  
  16566.  
  16567.  
  16568.  
  16569.  
  16570.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  16571.  
  16572.           output replaces `...` when the word is expanded.  Either of the
  16573.           following cases produces undefined results:
  16574.  
  16575.            - A single- or double-quoted string that begins, but does not
  16576.              end, within the `...` sequence.
  16577.  
  16578.            - A `...` sequence that begins, but does not end, within the
  16579.              same double-quoted string.
  16580.  
  16581.     \     The backslash shall retain its special meaning as an escape
  16582.           character (see 3.2.1) only when followed by one of the
  16583.           characters:
  16584.  
  16585.                 $     `     "     \     <newline>
  16586.  
  16587.  A double-quote shall be preceded by a backslash to be included within
  16588.  double-quotes.  The parameter @ has special meaning inside double-quotes
  16589.  and is described in 3.5.2.
  16590.  
  16591.  BEGIN_RATIONALE
  16592.  
  16593.  
  16594.  3.2.4  Quotes Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  16595.  
  16596.  A backslash cannot be used to escape a single-quote in a single-quoted
  16597.  string.  An embedded quote can be created by writing, for example,
  16598.  'a'\''b', which yields a'b.  (See 3.6.5 for a better understanding of how
  16599.  portions of words are either split into fields or remain concatenated.)
  16600.  A single token can be made up of concatenated partial strings containing
  16601.  all three kinds of quoting/escaping, thus permitting any combination of
  16602.  characters.
  16603.  
  16604.  The escaped <newline> used for line continuation is removed entirely from
  16605.  the input and is not replaced by any white space.  Therefore, it cannot
  16606.  serve as a token separator.
  16607.  
  16608.  In double-quoting, if a backslash is immediately followed by a character
  16609.  that would be interpreted as having a special meaning, the backslash is
  16610.  deleted and the subsequent character is taken literally.  If a backslash
  16611.  does not precede a character that would have a special meaning, it is
  16612.  left in place unmodified and the character immediately following it is
  16613.  also left unmodified.  Thus, for example:
  16614.  
  16615.        "\$"   =>   $
  16616.  
  16617.        "\a"   =>   \a
  16618.  
  16619.  It would be desirable to include the statement ``The characters from an
  16620.  enclosed ${ to the matching } shall not be affected by the double-
  16621.  
  16622.  
  16623.                Copyright c 1991 IEEE.  All rights reserved.
  16624.       This is an unapproved IEEE Standards Draft, subject to change.
  16625.  
  16626.  
  16627.  
  16628.  
  16629.  
  16630.  222                                              3 Shell Command Language
  16631.  
  16632.  
  16633.  
  16634.  
  16635.  
  16636.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  16637.  
  16638.  quotes,'' similar to the one for $( ).  However, historical practice in
  16639.  the System V shell prevents this.  The requirement that double-quotes be
  16640.  matched inside ${...} within double-quotes and the rule for finding the
  16641.  matching } in 3.6.2 eliminate several subtle inconsistencies in expansion
  16642.  for historical shells in rare cases; for example,
  16643.  
  16644.        "${foo-bar"}
  16645.  
  16646.  yields bar when foo is not defined, and is an invalid substitution when    1
  16647.  foo is defined, in many historical shells.  The differences in processing
  16648.  the "${...}" form have led to inconsistencies between the historical
  16649.  System V, BSD, and KornShells, and the text in POSIX.2 is an attempt to
  16650.  converge them without breaking many applications.  A consequence of the
  16651.  new rule is that single-quotes cannot be used to quote the } within
  16652.  "${...}"; for example
  16653.  
  16654.        unset bar
  16655.        foo="${bar-'}'}"
  16656.  
  16657.  is invalid because the "${...}" substitution contains an unpaired          1
  16658.  unescaped single-quote.  The backslash can be used to escape the } in      1
  16659.  this example to achieve the desired result:
  16660.  
  16661.        unset bar
  16662.        foo="${bar-\}}"
  16663.  
  16664.  The only alternative to this compromise between shells would be to make
  16665.  the behavior unspecified whenever the literal characters ', {, }, and "
  16666.  appear within ${...}.  To write a portable script that uses these values,
  16667.  a user would have to assign variables, say,
  16668.  
  16669.        squote=\' dquote=\" lbrace='{' rbrace='}'
  16670.        ${foo-$squote$rbrace$squote}
  16671.  
  16672.  rather than
  16673.  
  16674.        ${foo-"'}'"}
  16675.  
  16676.  Some systems have allowed the end of the word to terminate the backquoted
  16677.  command substitution, such as in
  16678.  
  16679.        "`echo hello"
  16680.  
  16681.  This usage is undefined in POSIX.2, where the matching backquote is
  16682.  required.  The other undefined usage can be illustrated by the example:
  16683.  
  16684.        sh -c '` echo "foo`'
  16685.  
  16686.  
  16687.  
  16688.  
  16689.                Copyright c 1991 IEEE.  All rights reserved.
  16690.       This is an unapproved IEEE Standards Draft, subject to change.
  16691.  
  16692.  
  16693.  
  16694.  
  16695.  
  16696.  3.2 Quoting                                                           223
  16697.  
  16698.  
  16699.  
  16700.  
  16701.  
  16702.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  16703.  
  16704.  The description of the recursive actions involving command substitution
  16705.  can be illustrated with an example.  Upon recognizing the introduction of
  16706.  command substitution, the shell must parse input (in a new context),
  16707.  gathering the ``source'' for the command substitution until an unbalanced
  16708.  ) or ` is located.  For example, in the following
  16709.  
  16710.        echo "$(date; echo "
  16711.                one" )"
  16712.  
  16713.  the double-quote following the echo does not terminate the first double-
  16714.  quote; it is part of the command substitution ``script.''  Similarly, in
  16715.  
  16716.        echo "$(echo *)"
  16717.  
  16718.  the asterisk is not quoted since it is inside command substitution;
  16719.  however,
  16720.  
  16721.        echo "$(echo "*")"
  16722.  
  16723.  is quoted (and represents the asterisk character itself).
  16724.  
  16725.  END_RATIONALE
  16726.  
  16727.  
  16728.  
  16729.  3.3  Token Recognition
  16730.  
  16731.  The shell reads its input in terms of lines from a file, from a terminal
  16732.  in the case of an interactive shell, or from a string in the case of
  16733.  sh -c or _s_y_s_t_e_m().  The input lines can be of unlimited length.  These     1
  16734.  lines are parsed using two major modes:  ordinary token recognition and    1
  16735.  processing of here-documents.
  16736.  
  16737.  When an io_here token has been recognized by the grammar (see 3.10), one
  16738.  or more of the immediately subsequent lines form the body of one or more
  16739.  here-documents and shall be parsed according to the rules of 3.7.4.
  16740.  
  16741.  When it is not processing an io_here, the shell shall break its input      1
  16742.  into tokens by applying the first applicable rule below to the next
  16743.  character in its input.  The token shall be from the current position in
  16744.  the input until a token is delimited according to one of the rules below;
  16745.  the characters forming the token are exactly those in the input,
  16746.  including any quoting characters.  If it is indicated that a token is
  16747.  delimited, and no characters have been included in a token, processing
  16748.  shall continue until an actual token is delimited.
  16749.  
  16750.      (1)  If the end of input is recognized, the current token shall be
  16751.           delimited.  If there is no current token, the end-of-input
  16752.           indicator shall be returned as the token.
  16753.  
  16754.  
  16755.                Copyright c 1991 IEEE.  All rights reserved.
  16756.       This is an unapproved IEEE Standards Draft, subject to change.
  16757.  
  16758.  
  16759.  
  16760.  
  16761.  
  16762.  224                                              3 Shell Command Language
  16763.  
  16764.  
  16765.  
  16766.  
  16767.  
  16768.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  16769.  
  16770.      (2)  If the previous character was used as part of an operator and
  16771.           the current character is not quoted and can be used with the
  16772.           current characters to form an operator, it shall be used as part
  16773.           of that (operator) token.
  16774.  
  16775.      (3)  If the previous character was used as part of an operator and
  16776.           the current character cannot be used with the current characters
  16777.           to form an operator, the operator containing the previous
  16778.           character shall be delimited.
  16779.  
  16780.      (4)  If the current character is backslash, single-quote, or double-
  16781.           quote (\, ', or ") and it is not quoted, it shall affect quoting
  16782.           for subsequent character(s) up to the end of the quoted text.
  16783.           The rules for quoting are as described in 3.2.  During token
  16784.           recognition no substitutions shall be actually performed, and
  16785.           the result token shall contain exactly the characters that
  16786.           appear in the input (except for <newline> joining), unmodified,
  16787.           including any embedded or enclosing quotes or substitution
  16788.           operators, between the quote mark and the end of the quoted
  16789.           text.  The token shall not be delimited by the end of the quoted
  16790.           field.
  16791.  
  16792.      (5)  If the current character is an unquoted $ or `, the shell shall
  16793.           identify the start of any candidates for parameter expansion
  16794.           (3.6.2), command substitution (3.6.3), or arithmetic expansion
  16795.           (3.6.4) from their introductory unquoted character sequences:  $
  16796.           or ${, $( or `, and $((, respectively.  The shell shall read
  16797.           sufficient input to determine the end of the unit to be expanded
  16798.           (as explained in the cited subclauses).  While processing the
  16799.           characters, if instances of expansions or quoting are found
  16800.           nested within the substitution, the shell shall recursively
  16801.           process them in the manner specified for the construct that is
  16802.           found.  The characters found from the beginning of the
  16803.           substitution to its end, allowing for any recursion necessary to
  16804.           recognize embedded constructs, shall be included unmodified in
  16805.           the result token, including any embedded or enclosing
  16806.           substitution operators or quotes.  The token shall not be
  16807.           delimited by the end of the substitution.
  16808.  
  16809.      (6)  If the current character is not quoted and can be used as the
  16810.           first character of a new operator, the current token (if any)
  16811.           shall be delimited.  The current character shall be used as the
  16812.           beginning of the next (operator) token.
  16813.  
  16814.      (7)  If the current character is an unquoted <newline>, the current
  16815.           token shall be delimited.
  16816.  
  16817.      (8)  If the current character is an unquoted <blank>, any token
  16818.           containing the previous character is delimited and the current
  16819.  
  16820.  
  16821.                Copyright c 1991 IEEE.  All rights reserved.
  16822.       This is an unapproved IEEE Standards Draft, subject to change.
  16823.  
  16824.  
  16825.  
  16826.  
  16827.  
  16828.  3.3 Token Recognition                                                 225
  16829.  
  16830.  
  16831.  
  16832.  
  16833.  
  16834.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  16835.  
  16836.           character is discarded.
  16837.  
  16838.      (9)  If the previous character was part of a word, the current
  16839.           character is appended to that word.
  16840.  
  16841.     (10)  If the current character is a #, it and all subsequent
  16842.           characters up to, but excluding, the next <newline> are
  16843.           discarded as a comment.  The <newline> that ends the line is not
  16844.           considered part of the comment.
  16845.  
  16846.     (11)  The current character is used as the start of a new word.
  16847.  
  16848.  Once a token is delimited, it shall be categorized as required by the
  16849.  grammar in 3.10.
  16850.  
  16851.  BEGIN_RATIONALE
  16852.  
  16853.  
  16854.  3.3.1  Token Recognition Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  16855.         _P_1_0_0_3._2)
  16856.  
  16857.  The (3) rule about combining characters to form operators is not meant to  1
  16858.  preclude systems from extending the shell language when characters are     1
  16859.  combined in otherwise invalid ways.  Portable applications cannot use      1
  16860.  invalid combinations and test suites should not penalize systems that      1
  16861.  take advantage of this fact.  For example, the unquoted combination |& is  1
  16862.  not valid in a POSIX.2 script, but has a specific KornShell meaning.       1
  16863.  
  16864.  The (10) rule about # as the current character is the first in the
  16865.  sequence in which a new token is being assembled.  The # starts a comment
  16866.  only when it is at the beginning of a token.  This rule is also written
  16867.  to indicate that the search for the end-of-comment does not consider
  16868.  escaped <newline> specially, so that a comment cannot be continued to the
  16869.  next line.
  16870.  
  16871.  END_RATIONALE
  16872.  
  16873.  
  16874.  
  16875.  3.4  Reserved Words
  16876.  
  16877.  Reserved words are words that have special meaning to the shell.  (See
  16878.  3.9.)  The following words shall be recognized as reserved words:
  16879.  
  16880.                    !       elif    fi      in      while
  16881.                    case    else    for     then    {4)
  16882.                    do      esac    if      until   }
  16883.                    done
  16884.  
  16885.  
  16886.  
  16887.                Copyright c 1991 IEEE.  All rights reserved.
  16888.       This is an unapproved IEEE Standards Draft, subject to change.
  16889.  
  16890.  
  16891.  
  16892.  
  16893.  
  16894.  226                                              3 Shell Command Language
  16895.  
  16896.  
  16897.  
  16898.  
  16899.  
  16900.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  16901.  
  16902.  This recognition shall occur only when none of the characters are quoted
  16903.  and when the word is used as:
  16904.  
  16905.      (1)  The first word of a command
  16906.  
  16907.      (2)  The first word following one of the reserved words other than
  16908.           case, for, or in
  16909.  
  16910.      (3)  The third word in a case or for command (only in is valid in
  16911.           this case)
  16912.  
  16913.  See the grammar in 3.10.
  16914.  
  16915.  The following words may be recognized as reserved words on some systems
  16916.  (when none of the characters are quoted), causing unspecified results:
  16917.  
  16918.                  function   select     [[         ]]                        2
  16919.  
  16920.  Words that are the concatenation of a name and a colon (:) are reserved;
  16921.  their use produces unspecified results.
  16922.  
  16923.  BEGIN_RATIONALE
  16924.  
  16925.  
  16926.  3.4.1  Reserved Words Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  16927.         _P_1_0_0_3._2)
  16928.  
  16929.  All reserved words are recognized syntactically as such in the contexts
  16930.  described.  However, it is useful to point out that in is the only
  16931.  meaningful reserved word after a case or for; similarly, in is not
  16932.  meaningful as the first word of a simple command.
  16933.  
  16934.  Reserved words are recognized only when they are delimited (i.e., meet
  16935.  the definition of _w_o_r_d; see 3.1.16), whereas operators are themselves
  16936.  delimiters.  For instance, ( and ) are control operators, so that no
  16937.  <space> is needed in (list).  However, { and } are reserved words in
  16938.  { list;}, so that in this case the leading <space> and semicolon are
  16939.  required.
  16940.  
  16941.  
  16942.  
  16943.  __________
  16944.   4) In some historical systems, the curly braces are treated as control
  16945.      operators.  To assist in future standardization activities, portable
  16946.      applications should avoid using unquoted braces to represent the
  16947.      characters themselves.  It is possible that a future version of
  16948.      POSIX.2 may require this, although probably not for the often-used
  16949.      find {} construct.
  16950.  
  16951.  
  16952.  
  16953.                Copyright c 1991 IEEE.  All rights reserved.
  16954.       This is an unapproved IEEE Standards Draft, subject to change.
  16955.  
  16956.  
  16957.  
  16958.  
  16959.  
  16960.  3.4 Reserved Words                                                    227
  16961.  
  16962.  
  16963.  
  16964.  
  16965.  
  16966.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  16967.  
  16968.  The list of unspecified reserved words is from the KornShell, so portable
  16969.  applications cannot use them in places a reserved word would be
  16970.  recognized.  This list contained time in earlier drafts, but it was        2
  16971.  removed when the time utility was selected for the UPE.                    2
  16972.  
  16973.  There was a strong argument for promoting braces to operators (instead of
  16974.  reserved words), so they would be syntactically equivalent to subshell
  16975.  operators.  Concerns about compatibility outweighed the advantages of
  16976.  this approach.  Nevertheless, portable applications should consider
  16977.  quoting { and } when they represent themselves.
  16978.  
  16979.  The restriction on ending a name with a colon is to allow future
  16980.  implementations that support named labels for flow control.  See the
  16981.  rationale for break (3.14.1.1).
  16982.  
  16983.  END_RATIONALE
  16984.  
  16985.  
  16986.  
  16987.  3.5  Parameters and Variables
  16988.  
  16989.  A parameter can be denoted by a name, a number, or one of the special
  16990.  characters listed in 3.5.2.  A variable is a parameter denoted by a name.
  16991.  
  16992.  A parameter is set if it has an assigned value (null is a valid value).
  16993.  Once a variable is set, it can only be unset by using the unset special
  16994.  built-in command.
  16995.  
  16996.  
  16997.  3.5.1  Positional Parameters
  16998.  
  16999.  A positional parameter is a parameter denoted by the decimal value
  17000.  represented by one or more digits, other than the single digit 0.  When a
  17001.  positional parameter with more than one digit is specified, the
  17002.  application shall enclose the digits in braces (see 3.6.2).  Positional
  17003.  parameters are initially assigned when the shell is invoked (see sh in
  17004.  4.56), temporarily replaced when a shell function is invoked (see 3.9.5),
  17005.  and can be reassigned with the set special built-in command.
  17006.  
  17007.  BEGIN_RATIONALE
  17008.  
  17009.  3.5.1.1  Positional Parameters Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t
  17010.           _o_f _P_1_0_0_3._2)
  17011.  
  17012.  The digits denoting the positional parameters are always interpreted as a
  17013.  decimal value, even if there is a leading zero.
  17014.  
  17015.  END_RATIONALE
  17016.  
  17017.  
  17018.  
  17019.                Copyright c 1991 IEEE.  All rights reserved.
  17020.       This is an unapproved IEEE Standards Draft, subject to change.
  17021.  
  17022.  
  17023.  
  17024.  
  17025.  
  17026.  228                                              3 Shell Command Language
  17027.  
  17028.  
  17029.  
  17030.  
  17031.  
  17032.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  17033.  
  17034.  3.5.2  Special Parameters
  17035.  
  17036.  Listed below are the special parameters and the values to which they
  17037.  shall expand.  Only the values of the special parameters are listed; see
  17038.  3.6 for a detailed summary of all the stages involved in expanding words.
  17039.  
  17040.     *     Expands to the positional parameters, starting from one.  When
  17041.           the expansion occurs within a double-quoted string (see 3.2.3),
  17042.           it expands to a single field with the value of each parameter
  17043.           separated by the first character of the IFS variable, or by a
  17044.           <space> if IFS is unset.
  17045.  
  17046.     @     Expands to the positional parameters, starting from one.  When
  17047.           the expansion occurs within double-quotes, each positional
  17048.           parameter expands as a separate field, with the provision that
  17049.           the expansion of the first parameter is still joined with the
  17050.           beginning part of the original word (assuming that the expanded
  17051.           parameter was embedded within a word), and the expansion of the
  17052.           last parameter is still joined with the last part of the
  17053.           original word.  If there are no positional parameters, the        1
  17054.           expansion of @ shall generate zero fields, even when @ is         1
  17055.           double-quoted.                                                    1
  17056.  
  17057.     #     Expands to the decimal number of positional parameters.
  17058.  
  17059.     ?     Expands to the decimal exit status of the most recent pipeline
  17060.           (see 3.9.2).
  17061.  
  17062.     -     (Hyphen) Expands to the current option flags (the single-letter
  17063.           option names concatenated into a string) as specified on
  17064.           invocation, by the set special built-in command, or implicitly
  17065.           by the shell.
  17066.  
  17067.     $     Expands to the decimal process ID of the invoked shell.  In a
  17068.           subshell (see 3.12), $ shall expand to the same value as that of
  17069.           the current shell.
  17070.  
  17071.     !     Expands to the decimal process ID of the most recent background
  17072.           command (see 3.9.3) executed from the current shell.  For a       1
  17073.           pipeline, the process ID is that of the last command in the
  17074.           pipeline.
  17075.  
  17076.     0     (Zero.)  Expands to the name of the shell or shell script.  See
  17077.           sh (4.56) for a detailed description of how this name is
  17078.           derived.
  17079.  
  17080.  See the description of the IFS variable in 3.5.3.
  17081.  
  17082.  
  17083.  
  17084.  
  17085.                Copyright c 1991 IEEE.  All rights reserved.
  17086.       This is an unapproved IEEE Standards Draft, subject to change.
  17087.  
  17088.  
  17089.  
  17090.  
  17091.  
  17092.  3.5 Parameters and Variables                                          229
  17093.  
  17094.  
  17095.  
  17096.  
  17097.  
  17098.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  17099.  
  17100.  BEGIN_RATIONALE
  17101.  
  17102.  
  17103.  3.5.2.1  Special Parameters Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  17104.           _P_1_0_0_3._2)
  17105.  
  17106.  Most historical implementations implement subshells by forking; thus, the
  17107.  special parameter $ does not necessarily represent the process ID of the
  17108.  shell process executing the commands since the subshell execution
  17109.  environment preserves the value of $.
  17110.  
  17111.  If a subshell were to execute a background command, the value of its       1
  17112.  parent's $! would not change.  For example:                                1
  17113.  
  17114.        (                                                                    1
  17115.        date &                                                               1
  17116.        echo $!                                                              1
  17117.        )                                                                    1
  17118.        echo $!                                                              1
  17119.  
  17120.  would echo two different values for $!.                                    1
  17121.  
  17122.  The descriptions of parameters * and @ assume the reader is familiar with
  17123.  the field splitting discussion in 3.6.5 and understands that portions of
  17124.  the word will remain concatenated unless there is some reason to split
  17125.  them into separate fields.  Some examples of the * and @ properties,
  17126.  including the concatenation aspects:
  17127.  
  17128.        set "abc" "def ghi" "jkl"
  17129.  
  17130.        echo $*         => "abc" "def" "ghi" "jkl"
  17131.        echo "$*"       => "abc def ghi jkl"
  17132.        echo $@         => "abc" "def" "ghi" "jkl"
  17133.  
  17134.        _b_u_t
  17135.  
  17136.        echo "$@"       => "abc" "def ghi" "jkl"
  17137.        echo "xx$@yy"   => "xxabc" "def ghi" "jklyy"
  17138.        echo "$@$@"     => "abc" "def ghi" "jklabc" "def ghi" "jkl"
  17139.  
  17140.  In the preceding examples, the double-quote characters that appear after
  17141.  the => do not appear in the output and are used only to illustrate word
  17142.  boundaries.
  17143.  
  17144.  Historical versions of the Bourne shell have used <space> as a separator
  17145.  between the expanded members of "$*".  The KornShell has used the first
  17146.  character in IFS, which is <space> by default.  If IFS is set to a null    1
  17147.  string, this is not equivalent to unsetting it; its first character will   1
  17148.  not exist, so the parameter values are concatenated.  For example:         1
  17149.  
  17150.  
  17151.                Copyright c 1991 IEEE.  All rights reserved.
  17152.       This is an unapproved IEEE Standards Draft, subject to change.
  17153.  
  17154.  
  17155.  
  17156.  
  17157.  
  17158.  230                                              3 Shell Command Language
  17159.  
  17160.  
  17161.  
  17162.  
  17163.  
  17164.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  17165.  
  17166.        $ IFS=''                                                             1
  17167.        $ set foo bar bam                                                    1
  17168.        $ echo "$@"                                                          1
  17169.        foo bar bam                                                          1
  17170.        $ echo "$*"                                                          1
  17171.        foobarbam                                                            1
  17172.        $ unset IFS                                                          1
  17173.        $ echo "$*"                                                          1
  17174.        foo bar bam                                                          1
  17175.  
  17176.  The $- can be used to save and restore set options:
  17177.  
  17178.        Save=$(echo $- | sed 's/[ics]//g')                                   1
  17179.        ...
  17180.        set +aCefnuvx                                                        2
  17181.        set -$Save
  17182.  
  17183.  The three options are removed using sed in the example because they may    1
  17184.  appear in the value of $- (from the sh command line), but are not valid    1
  17185.  options to set.                                                            1
  17186.  
  17187.  The command name (parameter 0) is not counted in the number given by #
  17188.  because it is a special parameter, not a positional parameter.
  17189.  
  17190.  END_RATIONALE
  17191.  
  17192.  
  17193.  3.5.3  Variables
  17194.  
  17195.  Variables shall be initialized from the environment (as defined by
  17196.  POSIX.1 {8}) and can be given new values with variable assignment
  17197.  commands.  If a variable is initialized from the environment, it shall be
  17198.  marked for export immediately; see 3.14.8.  New variables can be defined
  17199.  and initialized with variable assignments, with the read or getopts
  17200.  utilities, with the _n_a_m_e parameter in a for loop (see 3.9.4.2), with the
  17201.  ${_n_a_m_e=_w_o_r_d} expansion, or with other mechanisms provided as
  17202.  implementation extensions.  The following variables shall affect the
  17203.  execution of the shell:
  17204.  
  17205.     HOME               This variable shall be interpreted as the pathname
  17206.                        of the user's home directory.  The contents of HOME
  17207.                        are used in Tilde Expansion (see 3.6.1).
  17208.  
  17209.     IFS                _I_n_p_u_t _f_i_e_l_d _s_e_p_a_r_a_t_o_r_s:  a string treated as a list
  17210.                        of characters that is used for field splitting and
  17211.                        to split lines into fields with the read command.
  17212.                        If IFS is not set, the shell shall behave as if the
  17213.                        value of IFS were the <space>, <tab>, and <newline>
  17214.                        characters.  (See 3.6.5.)
  17215.  
  17216.  
  17217.                Copyright c 1991 IEEE.  All rights reserved.
  17218.       This is an unapproved IEEE Standards Draft, subject to change.
  17219.  
  17220.  
  17221.  
  17222.  
  17223.  
  17224.  3.5 Parameters and Variables                                          231
  17225.  
  17226.  
  17227.  
  17228.  
  17229.  
  17230.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  17231.  
  17232.     LANG               This variable shall provide a default value for the
  17233.                        LC_* variables, as described in 2.6.
  17234.  
  17235.     LC_ALL             This variable shall interact with the LANG and LC_*
  17236.                        variables as described in 2.6.
  17237.  
  17238.     LC_COLLATE         This variable shall determine the behavior of range
  17239.                        expressions, equivalence classes, and
  17240.                        multicharacter collating elements within pattern
  17241.                        matching.
  17242.  
  17243.     LC_CTYPE           This variable shall determine the interpretation of
  17244.                        sequences of bytes of text data as characters
  17245.                        (e.g., single- versus multibyte characters), which
  17246.                        characters are defined as letters (character class
  17247.                        alpha), and the behavior of character classes
  17248.                        within pattern matching.
  17249.  
  17250.     LC_MESSAGES        This variable shall determine the language in which
  17251.                        messages should be written.
  17252.  
  17253.     PATH               This variable represents a string formatted as
  17254.                        described in 2.6, used to effect command
  17255.                        interpretation.  See 3.9.1.1.                        1
  17256.  
  17257.  BEGIN_RATIONALE
  17258.  
  17259.  
  17260.  3.5.3.1  Variables Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  17261.  
  17262.  A description of PWD (which is automatically set by the KornShell
  17263.  whenever the current working directory changes) was omitted because its
  17264.  functionality is easily reproduced using $(pwd).
  17265.  
  17266.  See the discussion of IFS in 3.6.5.1.
  17267.  
  17268.  Other common environment variables used by historical shells are not
  17269.  specified by this standard, but they should be reserved for the
  17270.  historical uses.  For interactive use, other shell variables are expected
  17271.  to be introduced by the UPE (and this rationale will be updated
  17272.  accordingly):  ENV, FCEDIT, HISTFILE, HISTSIZE, LINENO, PPID, PS1, PS2,
  17273.  PS4.
  17274.  
  17275.  Tilde expansion for components of the PATH in an assignment such as:
  17276.  
  17277.        PATH=~hlj/bin:~dwc/bin:$PATH                                         1
  17278.  
  17279.  is a feature of some historical shells and is allowed by the wording of    1
  17280.  3.6.1.  Note that the tildes are expanded during the assignment to PATH,   1
  17281.  not when PATH is accessed during command search.                           1
  17282.  
  17283.                Copyright c 1991 IEEE.  All rights reserved.
  17284.       This is an unapproved IEEE Standards Draft, subject to change.
  17285.  
  17286.  
  17287.  
  17288.  
  17289.  
  17290.  232                                              3 Shell Command Language
  17291.  
  17292.  
  17293.  
  17294.  
  17295.  
  17296.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  17297.  
  17298.  END_RATIONALE                                                              1
  17299.  
  17300.  
  17301.  
  17302.  3.6  Word Expansions
  17303.  
  17304.  This clause describes the various expansions that are performed on words.
  17305.  Not all expansions are performed on every word, as explained in the
  17306.  following subclauses.
  17307.  
  17308.  Tilde expansions, parameter expansions, command substitutions, arithmetic
  17309.  expansions, and quote removals that occur within a single word expand to
  17310.  a single field.  It is only field splitting or pathname expansion that
  17311.  can create multiple fields from a single word.  The single exception to
  17312.  this rule is the expansion of the special parameter @ within double-
  17313.  quotes, as is described in 3.5.2.
  17314.  
  17315.  The order of word expansion shall be as follows:
  17316.  
  17317.      (1)  Tilde Expansion (see 3.6.1), Parameter Expansion (see 3.6.2),     1
  17318.           Command Substitution (see 3.6.3), and Arithmetic Expansion (see
  17319.           3.6.4) shall be performed, beginning to end.  [See item (5) in
  17320.           3.3.]
  17321.  
  17322.      (2)  Field Splitting (see 3.6.5) shall be performed on fields
  17323.           generated by step (1) unless IFS is null.
  17324.  
  17325.      (3)  Pathname Expansion (see 3.6.6) shall be performed, unless set -f
  17326.           is in effect.
  17327.  
  17328.      (4)  Quote Removal (see 3.6.7) shall always be performed last.
  17329.  
  17330.  The expansions described in this clause shall occur in the same shell
  17331.  environment as that in which the command is executed.
  17332.  
  17333.  If the complete expansion appropriate for a word results in an empty
  17334.  field, that empty field shall be deleted from the list of fields that
  17335.  form the completely expanded command, unless the original word contained   1
  17336.  single-quote or double-quote characters.                                   1
  17337.  
  17338.  The $ character is used to introduce parameter expansion, command
  17339.  substitution, or arithmetic evaluation.  If an unquoted $ is followed by
  17340.  a character that is either not numeric, the name of one of the special
  17341.  parameters (see 3.5.2), a valid first character of a variable name, a
  17342.  left curly brace ({), or a left parenthesis, the result is unspecified.
  17343.  
  17344.  BEGIN_RATIONALE
  17345.  
  17346.  
  17347.  
  17348.  
  17349.                Copyright c 1991 IEEE.  All rights reserved.
  17350.       This is an unapproved IEEE Standards Draft, subject to change.
  17351.  
  17352.  
  17353.  
  17354.  
  17355.  
  17356.  3.6 Word Expansions                                                   233
  17357.  
  17358.  
  17359.  
  17360.  
  17361.  
  17362.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  17363.  
  17364.  3.6.0.1  Word Expansions Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  17365.           _P_1_0_0_3._2)
  17366.  
  17367.  IFS is used for performing field splitting on the results of parameter
  17368.  and command substitution; it is not used for splitting all fields.
  17369.  Previous versions of the shell used it for splitting all fields during
  17370.  field splitting, but this has severe problems because the shell can no
  17371.  longer parse its own script.  There are also important security
  17372.  implications caused by this behavior.  All useful applications of IFS use
  17373.  it for parsing input of the read utility and for splitting the results of
  17374.  parameter and command substitution.  New versions of the shell have fixed
  17375.  this bug, and POSIX.2 requires the corrected behavior.
  17376.  
  17377.  The rule concerning expansion to a single field requires that if foo=abc
  17378.  and bar=def, that
  17379.  
  17380.        "$foo""$bar"
  17381.  
  17382.  expands to the single field
  17383.  
  17384.        abcdef
  17385.  
  17386.  The rule concerning empty fields can be illustrated by:
  17387.  
  17388.        $ unset foo
  17389.        $ set $foo bar '' xyz "$foo" abc
  17390.        $ for i
  17391.        > do
  17392.        >       echo "-$i-"
  17393.        > done
  17394.        -bar-
  17395.        --
  17396.        -xyz-
  17397.        --
  17398.        -abc-
  17399.  
  17400.  Step (1) indicates that Tilde Expansion, Parameter Expansion, Command      1
  17401.  Substitution, and Arithmetic Expansion are all processed simultaneously
  17402.  as they are scanned.  For example, the following is valid arithmetic:
  17403.  
  17404.        x=1
  17405.        echo $(( $(echo 3)+$x ))
  17406.  
  17407.  An earlier draft stated that Tilde Expansion preceded the other steps,     1
  17408.  but this is not the case in known historical implementations; if it were,  1
  17409.  and a referenced home directory contained a $ character, expansions would  1
  17410.  result within the directory name.                                          1
  17411.  
  17412.  
  17413.  
  17414.  
  17415.                Copyright c 1991 IEEE.  All rights reserved.
  17416.       This is an unapproved IEEE Standards Draft, subject to change.
  17417.  
  17418.  
  17419.  
  17420.  
  17421.  
  17422.  234                                              3 Shell Command Language
  17423.  
  17424.  
  17425.  
  17426.  
  17427.  
  17428.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  17429.  
  17430.  END_RATIONALE                                                              1
  17431.  
  17432.  
  17433.  3.6.1  Tilde Expansion
  17434.  
  17435.  A _t_i_l_d_e-_p_r_e_f_i_x consists of an unquoted tilde character at the beginning
  17436.  of a word, followed by all of the characters preceding the first unquoted  2
  17437.  slash in the word, or all the characters in the word if there is no        2
  17438.  slash.  In an assignment (see 3.1.15), multiple tilde prefixes can be      2
  17439.  used:  at the beginning of the word (i.e., following the equals-sign of    2
  17440.  the assignment) and/or following any unquoted colon.  A tilde prefix in    2
  17441.  an assignment is terminated by the first unquoted colon or slash.  If      2
  17442.  none of the characters in the tilde-prefix are quoted, the characters in   1
  17443.  the tilde-prefix following the tilde shall be treated as a possible login  1
  17444.  name from the user database (see POSIX.1 {8} Section 9).  A portable       2
  17445.  login name cannot contain characters outside the set given in the          2
  17446.  description of the LOGNAME environment variable in POSIX.1 {8}.  If the    2
  17447.  login name is null (i.e., the tilde-prefix contains only the tilde), the
  17448.  tilde-prefix shall be replaced by the value of the variable HOME.  If
  17449.  HOME is unset, the results are unspecified.  Otherwise, the tilde-prefix
  17450.  shall be replaced by a pathname of the home directory associated with the
  17451.  login name obtained using the equivalent of the POSIX.1 {8} _g_e_t_p_w_n_a_m()     1
  17452.  function.  If the system does not recognize the login name, the results    1
  17453.  are undefined.
  17454.  
  17455.  BEGIN_RATIONALE
  17456.  
  17457.  
  17458.  3.6.1.1  Tilde Expansion Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  17459.           _P_1_0_0_3._2)
  17460.  
  17461.                                                                             2
  17462.  
  17463.  The text about quoting of the word indicates that \~hlj/, ~h\lj/,          2
  17464.  ~"hlj"/, ~hlj\/, and ~hlj/ are not equivalent: only the last will cause    2
  17465.  tilde expansion.                                                           2
  17466.  
  17467.  Tilde expansion generally occurs only at the beginning of words, but       2
  17468.  POSIX.2 has adopted an exception based on historical practice in the       2
  17469.  KornShell:                                                                 2
  17470.  
  17471.        PATH=/posix/bin:~dgk/bin                                             2
  17472.  
  17473.  is eligible for tilde expansion because tilde follows a colon and none of  2
  17474.  the relevant characters is quoted.  Consideration was given to             2
  17475.  prohibiting this behavior because any of the following are reasonable      2
  17476.  substitutes:                                                               2
  17477.  
  17478.  
  17479.  
  17480.  
  17481.                Copyright c 1991 IEEE.  All rights reserved.
  17482.       This is an unapproved IEEE Standards Draft, subject to change.
  17483.  
  17484.  
  17485.  
  17486.  
  17487.  
  17488.  3.6 Word Expansions                                                   235
  17489.  
  17490.  
  17491.  
  17492.  
  17493.  
  17494.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  17495.  
  17496.        PATH=$(printf %s:  rms/bin  bfox/bin ...)                            2
  17497.        PATH=$(printf %s  ~karels/bi~n :  bostic/bin)                          2
  17498.        for Dir in  maart~/bin  srb/bin ~...                                   2
  17499.        do         ~          ~                                              2
  17500.                PATH=${PATH:+$PATH:}$Dir                                     2
  17501.        done                                                                 2
  17502.  
  17503.  (In the first command, any number of directory names are concatenated and  2
  17504.  separated with colons, but it may be undesirable to end the variable with  2
  17505.  a colon because this is an obsolescent means to include dot at the end of  2
  17506.  the PATH.  In the second, explicit colons are used for each directory.     2
  17507.  In all cases, the shell performs tilde expansion on each directory         2
  17508.  because all are separate words to the shell.)                              2
  17509.  
  17510.  The exception was included to avoid breaking numerous KornShell scripts    2
  17511.  and interactive users and despite the fact that variable assignments in    2
  17512.  scripts derived from other systems will have to use quoting in some cases  2
  17513.  to allow literal tildes in strings.  (This latter problem should be        2
  17514.  relatively rare because only tildes preceding known login names in         2
  17515.  unquoted strings are affected.)                                            2
  17516.  
  17517.  Note that expressions in operands such as                                  2
  17518.  
  17519.        make -k mumble LIBDIR= chet/lib                                      2
  17520.                              ~
  17521.  do not qualify as shell variable assignments and tilde expansion is not    2
  17522.  performed (unless the command does so itself, which make does not).        2
  17523.  
  17524.  In an earlier draft, tilde expansion occurred following any unquoted       2
  17525.  equals-sign or colon, but this was removed because of its complexity and   2
  17526.  to avoid breaking commands such as:                                        2
  17527.  
  17528.        rcp hostname: marc/.profile .                                        2
  17529.                     ~
  17530.  A suggestion was made that the special sequence ``$ '' should be allowed   2
  17531.  to force tilde expansion anywhere.  Since this is n~ot historical           2
  17532.  practice, it has been left for future implementations to evaluate.  (The   2
  17533.  description in 3.2 requires that a dollar-sign be quoted to represent      2
  17534.  itself, so the $  combination is already unspecified.)                     2
  17535.                  ~
  17536.  The results of giving tilde with an unknown login name are undefined
  17537.  because the KornShell  + and  - constructs make use of this condition,
  17538.  but in general it is a~n error~to give an incorrect login name with tilde.
  17539.  The results of having HOME unset are unspecified because some historical
  17540.  shells treat this as an error.
  17541.  
  17542.  END_RATIONALE
  17543.  
  17544.  
  17545.  
  17546.  
  17547.                Copyright c 1991 IEEE.  All rights reserved.
  17548.       This is an unapproved IEEE Standards Draft, subject to change.
  17549.  
  17550.  
  17551.  
  17552.  
  17553.  
  17554.  236                                              3 Shell Command Language
  17555.  
  17556.  
  17557.  
  17558.  
  17559.  
  17560.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  17561.  
  17562.  3.6.2  Parameter Expansion
  17563.  
  17564.  The format for parameter expansion is as follows:
  17565.  
  17566.        ${_e_x_p_r_e_s_s_i_o_n}
  17567.  
  17568.  where _e_x_p_r_e_s_s_i_o_n consists of all characters until the matching }.  Any }   2
  17569.  escaped by a backslash or within a quoted string, and characters in        2
  17570.  embedded arithmetic expansions, command substitutions, and variable        2
  17571.  expansions, shall not be examined in determining the matching }.
  17572.  
  17573.  The simplest form for parameter expansion is:
  17574.  
  17575.        ${_p_a_r_a_m_e_t_e_r}
  17576.  
  17577.  The value, if any, of _p_a_r_a_m_e_t_e_r shall be substituted.
  17578.  
  17579.  The parameter name or symbol can be enclosed in braces, which are
  17580.  optional except for positional parameters with more than one digit or
  17581.  when _p_a_r_a_m_e_t_e_r is followed by a character that could be interpreted as
  17582.  part of the name.  The matching closing brace shall be determined by
  17583.  counting brace levels, skipping over enclosed quoted strings and command
  17584.  substitutions.
  17585.  
  17586.  If the parameter name or symbol is not enclosed in braces, the expansion
  17587.  shall use the longest valid name (see 3.1.5), whether or not the symbol
  17588.  represented by that name exists.  If a parameter expansion occurs inside
  17589.  double-quotes:
  17590.  
  17591.      - Pathname expansion shall not be performed on the results of the
  17592.        expansion.
  17593.  
  17594.      - Field splitting shall not be performed on the results of the
  17595.        expansion, with the exception of @; see 3.5.2.
  17596.  
  17597.  In addition, a parameter expansion can be modified by using one of the
  17598.  following formats.  In each case that a value of _w_o_r_d is needed (based on
  17599.  the state of _p_a_r_a_m_e_t_e_r, as described below), _w_o_r_d shall be subjected to
  17600.  tilde expansion, parameter expansion, command substitution, and
  17601.  arithmetic expansion.  If _w_o_r_d is not needed, it shall not be expanded.
  17602.  The } character that delimits the following parameter expansion            1
  17603.  modifications shall be determined as described previously in this          1
  17604.  subclause and in 3.2.3.  (For example, ${foo-bar}xyz} would result in the  1
  17605.  expansion of foo followed by the string xyz} if foo is set, else the
  17606.  string barxyz}).
  17607.  
  17608.  
  17609.  
  17610.  
  17611.  
  17612.  
  17613.                Copyright c 1991 IEEE.  All rights reserved.
  17614.       This is an unapproved IEEE Standards Draft, subject to change.
  17615.  
  17616.  
  17617.  
  17618.  
  17619.  
  17620.  3.6 Word Expansions                                                   237
  17621.  
  17622.  
  17623.  
  17624.  
  17625.  
  17626.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  17627.  
  17628.     ${_p_a_r_a_m_e_t_e_r:-_w_o_r_d}       Use Default Values.  If _p_a_r_a_m_e_t_e_r is unset or
  17629.                              null, the expansion of _w_o_r_d shall be
  17630.                              substituted; otherwise, the value of
  17631.                              _p_a_r_a_m_e_t_e_r shall be substituted.
  17632.  
  17633.     ${_p_a_r_a_m_e_t_e_r:=_w_o_r_d}       Assign Default Values.  If _p_a_r_a_m_e_t_e_r is unset
  17634.                              or null, the expansion of _w_o_r_d shall be
  17635.                              assigned to _p_a_r_a_m_e_t_e_r.  In all cases, the
  17636.                              final value of _p_a_r_a_m_e_t_e_r shall be
  17637.                              substituted.  Only variables, not positional
  17638.                              parameters or special parameters, can be
  17639.                              assigned in this way.
  17640.  
  17641.     ${_p_a_r_a_m_e_t_e_r:?[_w_o_r_d]}     Indicate Error if Null or Unset.  If
  17642.                              _p_a_r_a_m_e_t_e_r is unset or null, the expansion of
  17643.                              _w_o_r_d (or a message indicating it is unset if
  17644.                              _w_o_r_d is omitted) shall be written to standard
  17645.                              error and the shell shall exit with a nonzero
  17646.                              exit status.  Otherwise, the value of
  17647.                              _p_a_r_a_m_e_t_e_r shall be substituted.  An
  17648.                              interactive shell need not exit.
  17649.  
  17650.     ${_p_a_r_a_m_e_t_e_r:+_w_o_r_d}       Use Alternate Value.  If _p_a_r_a_m_e_t_e_r is unset
  17651.                              or null, null shall be substituted;
  17652.                              otherwise, the expansion of _w_o_r_d shall be
  17653.                              substituted.
  17654.  
  17655.  In the parameter expansions shown previously, use of the colon in the
  17656.  format results in a test for a parameter that is unset or null; omission
  17657.  of the colon results in a test for a parameter that is only unset.
  17658.  
  17659.     ${#_p_a_r_a_m_e_t_e_r}            String Length.  The length in characters of
  17660.                              the value of _p_a_r_a_m_e_t_e_r. If _p_a_r_a_m_e_t_e_r is * or
  17661.                              @, the result of the expansion is
  17662.                              unspecified.
  17663.  
  17664.  The following four varieties of parameter expansion provide for substring
  17665.  processing.  In each case, pattern matching notation (see 3.13), rather
  17666.  than regular expression notation, shall be used to evaluate the patterns.
  17667.  If _p_a_r_a_m_e_t_e_r is * or @, the result of the expansion is unspecified.
  17668.  Enclosing the full parameter expansion string in double-quotes shall not   1
  17669.  cause the following four varieties of pattern characters to be quoted,     1
  17670.  whereas quoting characters within the braces shall have this effect.
  17671.  
  17672.     ${_p_a_r_a_m_e_t_e_r%_w_o_r_d}        Remove Smallest Suffix Pattern.  The _w_o_r_d
  17673.                              shall be expanded to produce a pattern.  The
  17674.                              parameter expansion then shall result in
  17675.                              _p_a_r_a_m_e_t_e_r, with the smallest portion of the
  17676.                              suffix matched by the _p_a_t_t_e_r_n deleted.
  17677.  
  17678.  
  17679.                Copyright c 1991 IEEE.  All rights reserved.
  17680.       This is an unapproved IEEE Standards Draft, subject to change.
  17681.  
  17682.  
  17683.  
  17684.  
  17685.  
  17686.  238                                              3 Shell Command Language
  17687.  
  17688.  
  17689.  
  17690.  
  17691.  
  17692.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  17693.  
  17694.     ${_p_a_r_a_m_e_t_e_r%%_w_o_r_d}       Remove Largest Suffix Pattern.  The _w_o_r_d
  17695.                              shall be expanded to produce a pattern.  The
  17696.                              parameter expansion then shall result in
  17697.                              _p_a_r_a_m_e_t_e_r, with the largest portion of the
  17698.                              suffix matched by the _p_a_t_t_e_r_n deleted.
  17699.  
  17700.     ${_p_a_r_a_m_e_t_e_r#_w_o_r_d}        Remove Smallest Prefix Pattern.  The _w_o_r_d
  17701.                              shall be expanded to produce a pattern.  The
  17702.                              parameter expansion then shall result in
  17703.                              _p_a_r_a_m_e_t_e_r, with the smallest portion of the
  17704.                              prefix matched by the _p_a_t_t_e_r_n deleted.
  17705.  
  17706.     ${_p_a_r_a_m_e_t_e_r##_w_o_r_d}       Remove Largest Prefix Pattern.  The _w_o_r_d
  17707.                              shall be expanded to produce a pattern.  The
  17708.                              parameter expansion then shall result in
  17709.                              _p_a_r_a_m_e_t_e_r, with the largest portion of the
  17710.                              prefix matched by the _p_a_t_t_e_r_n deleted.
  17711.  
  17712.  BEGIN_RATIONALE
  17713.  
  17714.  
  17715.  3.6.2.1  Parameter Expansion Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  17716.           _P_1_0_0_3._2)
  17717.  
  17718.  When the shell is scanning its input to determine the boundaries of a
  17719.  name, it is not bound by its knowledge of what names are already defined.
  17720.  For example, if F is a defined shell variable, the command "echo $Fred"
  17721.  does not echo the value of $F followed by red; it selects the longest
  17722.  possible valid name, Fred, which in this case might be unset.
  17723.  
  17724.  The rule for finding the closing } in ${...} is the one used in the
  17725.  KornShell and is upward compatible with the Bourne shell, which does not
  17726.  determine the closing } until the word is expanded.  The advantage of
  17727.  this is that incomplete expansions, such as
  17728.  
  17729.        ${foo
  17730.  
  17731.  can be determined during tokenization, rather than during expansion.
  17732.  
  17733.  The four expansions with the optional colon have been hard to understand
  17734.  from the historical documentation.  The following table summarizes the
  17735.  effect of the colon:
  17736.  
  17737.  
  17738.  
  17739.  
  17740.  
  17741.  
  17742.  
  17743.  
  17744.  
  17745.                Copyright c 1991 IEEE.  All rights reserved.
  17746.       This is an unapproved IEEE Standards Draft, subject to change.
  17747.  
  17748.  
  17749.  
  17750.  
  17751.  
  17752.  3.6 Word Expansions                                                   239
  17753.  
  17754.  
  17755.  
  17756.  
  17757.  
  17758.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  17759.  
  17760.                              _pppp_aaaa_rrrr_aaaa_mmmm_eeee_tttt_eeee_rrrr        _pppp_aaaa_rrrr_aaaa_mmmm_eeee_tttt_eeee_rrrr     _pppp_aaaa_rrrr_aaaa_mmmm_eeee_tttt_eeee_rrrr
  17761.                           set and not null   set but null     unset
  17762.                           ________________   ____________   __________
  17763.      ${_p_a_r_a_m_e_t_e_r:-_w_o_r_d}      substitute       substitute    substitute
  17764.                              _p_a_r_a_m_e_t_e_r           _w_o_r_d          _w_o_r_d
  17765.  
  17766.      ${_p_a_r_a_m_e_t_e_r-_w_o_r_d}       substitute       substitute    substitute
  17767.                              _p_a_r_a_m_e_t_e_r           null          _w_o_r_d
  17768.  
  17769.      ${_p_a_r_a_m_e_t_e_r:=_w_o_r_d}      substitute         assign        assign
  17770.                              _p_a_r_a_m_e_t_e_r           _w_o_r_d          _w_o_r_d
  17771.  
  17772.      ${_p_a_r_a_m_e_t_e_r=_w_o_r_d}       substitute       substitute      assign
  17773.                              _p_a_r_a_m_e_t_e_r        _p_a_r_a_m_e_t_e_r        _w_o_r_d
  17774.  
  17775.      ${_p_a_r_a_m_e_t_e_r:?_w_o_r_d}      substitute         error,        error,
  17776.                              _p_a_r_a_m_e_t_e_r           exit          exit
  17777.  
  17778.      ${_p_a_r_a_m_e_t_e_r?_w_o_r_d}       substitute       substitute      error,
  17779.                              _p_a_r_a_m_e_t_e_r           null          exit
  17780.  
  17781.      ${_p_a_r_a_m_e_t_e_r:+_w_o_r_d}      substitute       substitute    substitute
  17782.                                 _w_o_r_d             null          null         1
  17783.  
  17784.      ${_p_a_r_a_m_e_t_e_r+_w_o_r_d}       substitute       substitute    substitute
  17785.                                 _w_o_r_d             _w_o_r_d          null         1
  17786.  
  17787.  
  17788.  In all cases shown with ``substitute,'' the expression is replaced with
  17789.  the value shown.  In all cases shown with ``assign,'' _p_a_r_a_m_e_t_e_r is
  17790.  assigned that value, which also replaces the expression.
  17791.  
  17792.  The string length and substring capabilities were included because of the
  17793.  demonstrated need for them, based on their usage in other shells, such as
  17794.  C-shell and KornShell.
  17795.  
  17796.  Historical versions of the KornShell have not performed tilde expansion
  17797.  on the word part of parameter expansion; however, it is more consistent
  17798.  to do so.
  17799.  
  17800.  
  17801.  
  17802.  
  17803.  
  17804.  
  17805.  
  17806.  
  17807.  
  17808.  
  17809.  
  17810.  
  17811.                Copyright c 1991 IEEE.  All rights reserved.
  17812.       This is an unapproved IEEE Standards Draft, subject to change.
  17813.  
  17814.  
  17815.  
  17816.  
  17817.  
  17818.  240                                              3 Shell Command Language
  17819.  
  17820.  
  17821.  
  17822.  
  17823.  
  17824.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  17825.  
  17826.  _E_x_a_m_p_l_e_s
  17827.  
  17828.     ${_p_a_r_a_m_e_t_e_r:-_w_o_r_d}
  17829.  
  17830.                 In this example, ls is executed only if x is null or
  17831.                 unset.  [The $(ls) command substitution notation is
  17832.                 explained in 3.6.3.]
  17833.  
  17834.                 ${x:-$(ls)}
  17835.  
  17836.     ${_p_a_r_a_m_e_t_e_r:=_w_o_r_d}
  17837.  
  17838.                 unset X
  17839.                 echo ${X:=abc}
  17840.                 abc
  17841.  
  17842.     ${_p_a_r_a_m_e_t_e_r:?_w_o_r_d}
  17843.  
  17844.                 unset posix
  17845.                 echo ${posix:?}
  17846.                 sh: posix: parameter null or not set
  17847.  
  17848.     ${_p_a_r_a_m_e_t_e_r:+_w_o_r_d}
  17849.  
  17850.                 set a b c
  17851.                 echo ${3:+posix}
  17852.                 posix
  17853.  
  17854.     ${#_p_a_r_a_m_e_t_e_r}
  17855.  
  17856.                 HOME=/usr/posix
  17857.                 echo ${#HOME}
  17858.                 10
  17859.  
  17860.     ${_p_a_r_a_m_e_t_e_r%_w_o_r_d}
  17861.  
  17862.                 x=file.c
  17863.                 echo ${x%.c}.o
  17864.                 file.o
  17865.  
  17866.     ${_p_a_r_a_m_e_t_e_r%%_w_o_r_d}
  17867.  
  17868.                 x=posix/src/std
  17869.                 echo ${x%%/*}
  17870.                 posix
  17871.  
  17872.  
  17873.  
  17874.  
  17875.  
  17876.  
  17877.                Copyright c 1991 IEEE.  All rights reserved.
  17878.       This is an unapproved IEEE Standards Draft, subject to change.
  17879.  
  17880.  
  17881.  
  17882.  
  17883.  
  17884.  3.6 Word Expansions                                                   241
  17885.  
  17886.  
  17887.  
  17888.  
  17889.  
  17890.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  17891.  
  17892.     ${_p_a_r_a_m_e_t_e_r#_w_o_r_d}
  17893.  
  17894.                 x=$HOME/src/cmd
  17895.                 echo ${x#$HOME}
  17896.                 /src/cmd
  17897.  
  17898.     ${_p_a_r_a_m_e_t_e_r##_w_o_r_d}
  17899.  
  17900.                 x=/one/two/three
  17901.                 echo ${x##*/}
  17902.                 three
  17903.  
  17904.  The double-quoting of patterns is different depending on where the
  17905.  double-quotes are placed:
  17906.  
  17907.     "${x#*}"         The asterisk is a pattern character.
  17908.  
  17909.     ${x#"*"}         The literal asterisk is quoted and not special.
  17910.  
  17911.  END_RATIONALE
  17912.  
  17913.  
  17914.  3.6.3  Command Substitution
  17915.  
  17916.  Command substitution allows the output of a command to be substituted in
  17917.  place of the command name itself.  Command substitution shall occur when
  17918.  the command is enclosed as follows:
  17919.  
  17920.        $(_c_o_m_m_a_n_d)
  17921.  
  17922.  or (``backquoted'' version):
  17923.  
  17924.        `_c_o_m_m_a_n_d`
  17925.  
  17926.  The shell shall expand the command substitution by executing _c_o_m_m_a_n_d in a
  17927.  subshell environment (see 3.12) and replacing the command substitution
  17928.  [the text of _c_o_m_m_a_n_d plus the enclosing $( ) or backquotes] with the
  17929.  standard output of the command, removing sequences of one or more
  17930.  <newline>s at the end of the substitution.  (Embedded <newline>s before
  17931.  the end of the output shall not be removed; however, during field
  17932.  splitting, they may be translated into <space>s, depending on the value
  17933.  of IFS and quoting that is in effect.)
  17934.  
  17935.  Within the backquoted style of command substitution, backslash shall
  17936.  retain its literal meaning, except when followed by
  17937.  
  17938.        $  `  \
  17939.  
  17940.  (dollar-sign, backquote, backslash).  The search for the matching          2
  17941.  
  17942.  
  17943.                Copyright c 1991 IEEE.  All rights reserved.
  17944.       This is an unapproved IEEE Standards Draft, subject to change.
  17945.  
  17946.  
  17947.  
  17948.  
  17949.  
  17950.  242                                              3 Shell Command Language
  17951.  
  17952.  
  17953.  
  17954.  
  17955.  
  17956.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  17957.  
  17958.  backquote shall be satisfied by the first backquote found without a        2
  17959.  preceding backslash; during this search, if a nonescaped backquote is      2
  17960.  encountered within a shell comment, a here-document, an embedded command   2
  17961.  substitution of the $(_c_o_m_m_a_n_d) form, or a quoted string, undefined         2
  17962.  results occur.  A single- or double-quoted string that begins, but does
  17963.  not end, within the `...` sequence produces undefined results.
  17964.  
  17965.  With the $(_c_o_m_m_a_n_d) form, all characters following the open parenthesis
  17966.  to the matching closing parenthesis constitute the _c_o_m_m_a_n_d. Any valid      2
  17967.  shell script can be used for _c_o_m_m_a_n_d, except:                              2
  17968.  
  17969.      - A script consisting solely of redirections produces unspecified      2
  17970.        results.                                                             2
  17971.  
  17972.      - See the restriction on single subshells described below.             2
  17973.  
  17974.  The results of command substitution shall not be processed for further     1
  17975.  tilde expansion, parameter expansion, command substitution, or arithmetic  1
  17976.  expansion.  If a command substitution occurs inside double-quotes, field
  17977.  splitting and pathname expansion shall not be performed on the results of
  17978.  the substitution.
  17979.  
  17980.  Command substitution can be nested.  To specify nesting within the
  17981.  backquoted version, the application shall precede the inner backquotes
  17982.  with backslashes; for example,
  17983.  
  17984.        \`_c_o_m_m_a_n_d\`
  17985.  
  17986.  If the command substitution consists of a single subshell, such as
  17987.  
  17988.        $( (_c_o_m_m_a_n_d) )
  17989.  
  17990.  a conforming application shall separate the $( and ( into two tokens
  17991.  (i.e., separate them with white space).
  17992.  
  17993.  BEGIN_RATIONALE
  17994.  
  17995.  
  17996.  3.6.3.1  Command Substitution Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  17997.           _P_1_0_0_3._2)
  17998.  
  17999.  The new $( ) form of command substitution was adopted from the KornShell
  18000.  to solve a problem of inconsistent behavior when using backquotes.  For
  18001.  example:
  18002.  
  18003.                         _____C_o_m_m_a_n_d_______   O_u_t_p_u_t_
  18004.                         echo '\$x'           \$x
  18005.  
  18006.  
  18007.  
  18008.  
  18009.                Copyright c 1991 IEEE.  All rights reserved.
  18010.       This is an unapproved IEEE Standards Draft, subject to change.
  18011.  
  18012.  
  18013.  
  18014.  
  18015.  
  18016.  3.6 Word Expansions                                                   243
  18017.  
  18018.  
  18019.  
  18020.  
  18021.  
  18022.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  18023.  
  18024.                         echo `echo '\$x'`    $x
  18025.                         echo $(echo '\$x')   \$x
  18026.  
  18027.  Additionally, the backquoted syntax has historical restrictions on the     2
  18028.  contents of the embedded command.  While the new $( ) form can process     2
  18029.  any kind of valid embedded script, the backquoted cannot handle some       2
  18030.  valid scripts that include backquotes.  For example, these otherwise       2
  18031.  valid embedded scripts do not work in the left column, but do work on the  2
  18032.  right:                                                                     2
  18033.  
  18034.          echo `                        echo $(                              2
  18035.          cat <<\eof                    cat <<\eof                           2
  18036.          a here-doc with `             a here-doc with )                    2
  18037.          eof                           eof                                  2
  18038.          `                             )                                    2
  18039.  
  18040.          echo `                        echo $(                              2
  18041.          echo abc # a comment with `   echo abc # a comment with )          2
  18042.          `                             )                                    2
  18043.  
  18044.          echo `                        echo $(                              2
  18045.          echo '`'                      echo ')'                             2
  18046.          `                             )                                    2
  18047.  
  18048.  Some historical KornShell implementations did not process the first two    2
  18049.  examples correctly, but the author has agreed to make the appropriate      2
  18050.  modifications to do so.  The KornShell will also be modified so that the   2
  18051.  following works:                                                           2
  18052.  
  18053.        echo $(                                                              2
  18054.                case word in                                                 2
  18055.                        [Ff]oo) echo found foo ;;                            2
  18056.                esac                                                         2
  18057.        )                                                                    2
  18058.  
  18059.  Because of these inconsistent behaviors, the backquoted variety of
  18060.  command substitution is not recommended for new applications that nest
  18061.  command substitutions or attempt to embed complex scripts.  Because of     2
  18062.  its widespread historical use, particularly by interactive users,
  18063.  however, the backquotes were retained in POSIX.2 without being declared
  18064.  obsolescent.
  18065.  
  18066.  The KornShell feature:
  18067.  
  18068.        If _c_o_m_m_a_n_d is of the form <_w_o_r_d, _w_o_r_d is expanded to generate a
  18069.        pathname, and the value of the command substitution is the contents
  18070.        of this file with any trailing <newline>_s deleted.
  18071.  
  18072.  
  18073.  
  18074.  
  18075.                Copyright c 1991 IEEE.  All rights reserved.
  18076.       This is an unapproved IEEE Standards Draft, subject to change.
  18077.  
  18078.  
  18079.  
  18080.  
  18081.  
  18082.  244                                              3 Shell Command Language
  18083.  
  18084.  
  18085.  
  18086.  
  18087.  
  18088.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  18089.  
  18090.  was omitted from this standard because $(cat word) is an appropriate
  18091.  substitute.  However, to prevent breaking numerous scripts relying on      2
  18092.  this feature, it is unspecified to have a script within $( ) that has      2
  18093.  only redirections.                                                         2
  18094.  
  18095.  The requirement to separate $( and ( when a single subshell is command-
  18096.  substituted is to avoid any ambiguities with Arithmetic Expansion.  See
  18097.  3.6.4.1.
  18098.  
  18099.  END_RATIONALE
  18100.  
  18101.  
  18102.  3.6.4  Arithmetic Expansion
  18103.  
  18104.  Arithmetic expansion provides a mechanism for evaluating an arithmetic
  18105.  expression and substituting its value.  The format for arithmetic
  18106.  expansion shall be as follows:
  18107.  
  18108.        $((_e_x_p_r_e_s_s_i_o_n))
  18109.  
  18110.  The expression shall be treated as if it were in double-quotes, except
  18111.  that a double-quote inside the expression is not treated specially.  The
  18112.  shell shall expand all tokens in the expression for parameter expansion,
  18113.  command substitution, and quote removal.
  18114.  
  18115.  Next, the shell shall treat this as an arithmetic expression and
  18116.  substitute the value of the expression.  The arithmetic expression shall
  18117.  be processed according to the rules given in 2.9.2.1, with the following
  18118.  exceptions:
  18119.  
  18120.      (1)  Only integer arithmetic is required.
  18121.  
  18122.      (2)  The sizeof() operator and the prefix and postfix ++ and --
  18123.           operators are not required.
  18124.  
  18125.      (3)  Selection, Iteration, and Jump Statements are not supported.
  18126.  
  18127.  As an extension, the shell may recognize arithmetic expressions beyond
  18128.  those listed.  If the expression is invalid, the expansion fails and the
  18129.  shell shall write a message to standard error indicating the failure.
  18130.  
  18131.  BEGIN_RATIONALE
  18132.  
  18133.  
  18134.  
  18135.  
  18136.  
  18137.  
  18138.  
  18139.  
  18140.  
  18141.                Copyright c 1991 IEEE.  All rights reserved.
  18142.       This is an unapproved IEEE Standards Draft, subject to change.
  18143.  
  18144.  
  18145.  
  18146.  
  18147.  
  18148.  3.6 Word Expansions                                                   245
  18149.  
  18150.  
  18151.  
  18152.  
  18153.  
  18154.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  18155.  
  18156.  3.6.4.1  Arithmetic Expansion Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  18157.           _P_1_0_0_3._2)
  18158.  
  18159.  Numerous ballots were received objecting to the inclusion of the (( ))
  18160.  form of KornShell arithmetic in previous drafts.  The developers of the
  18161.  standard concluded that there is a strong desire for some kind of
  18162.  arithmetic evaluator to replace expr, and that tying it in with $ makes
  18163.  it fit in nicely with the standard shell language, and provides access to
  18164.  arithmetic evaluation in places where accessing a utility would be
  18165.  inconvenient or clumsy.
  18166.  
  18167.  Following long debate by interested members of the balloting group, the
  18168.  syntax and semantics for arithmetic were changed.  The language is
  18169.  essentially a pure arithmetic evaluator of constants and operators
  18170.  (excluding assignment) and represents a simple subset of the previous
  18171.  arithmetic language [which was derived from the KornShell's (( ))
  18172.  construct].  The syntax was changed from that of a command denoted by
  18173.  ((_e_x_p_r_e_s_s_i_o_n)), to an expansion denoted by $((_e_x_p_r_e_s_s_i_o_n)).  The new form
  18174.  is a dollar expansion ($), which evaluates the expression and substitutes
  18175.  the resulting value.  Objections to the previous style of arithmetic
  18176.  included that it was too complicated, did not fit in well with the
  18177.  shell's use of variables, and the syntax conflicted with subshells.  The
  18178.  justification for the new syntax is that the shell is traditionally a
  18179.  macro language, and if a new feature is to be added, it should be done by
  18180.  extending the capabilities presented by the current model of the shell,
  18181.  rather than by inventing a new one outside the model:  adding a new
  18182.  dollar expansion was perceived to be the most intuitive and least
  18183.  destructive way to add such a new capability.
  18184.  
  18185.  In Drafts 9 and 10, a form $[_e_x_p_r_e_s_s_i_o_n] was used.  It was functionally
  18186.  equivalent to the $(( )) of the current text, but objections were lodged
  18187.  that the 1988 KornShell had already implemented $(( )) and there was no
  18188.  compelling reason to invent yet another syntax.  Furthermore, the $[]
  18189.  syntax had a minor incompatibility involving the patterns in case
  18190.  statements.
  18191.  
  18192.  The portion of the C Standard {7} arithmetic operations selected
  18193.  corresponds to the operations historically supported in the KornShell.
  18194.  
  18195.  A simple example using arithmetic expansion:
  18196.  
  18197.        # repeat a command 100 times
  18198.        x=100
  18199.        while [ $x -gt 0 ]
  18200.        do
  18201.                _c_o_m_m_a_n_d
  18202.                x=$(($x-1))
  18203.        done
  18204.  
  18205.  
  18206.  
  18207.                Copyright c 1991 IEEE.  All rights reserved.
  18208.       This is an unapproved IEEE Standards Draft, subject to change.
  18209.  
  18210.  
  18211.  
  18212.  
  18213.  
  18214.  246                                              3 Shell Command Language
  18215.  
  18216.  
  18217.  
  18218.  
  18219.  
  18220.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  18221.  
  18222.  It was concluded that the test command ([) was sufficient for the
  18223.  majority of relational arithmetic tests, and that tests involving
  18224.  complicated relational expressions within the shell are rare, yet could
  18225.  still be accommodated by testing the value of $(()) itself.  For example:
  18226.  
  18227.        # a complicated relational expression
  18228.        while [ $(( (($x + $y)/($a * $b)) < ($foo*$bar) )) -ne 0 ]
  18229.  
  18230.  or better yet, the rare script that has many complex relational
  18231.  expressions could define a function like this:
  18232.  
  18233.        val() {
  18234.                return $((!$1))
  18235.        }
  18236.  
  18237.  and complicated tests would be less intimidating:
  18238.  
  18239.        while val $(( (($x + $y)/($a * $b)) < ($foo*$bar) ))
  18240.        do
  18241.                # some calculations
  18242.        done
  18243.  
  18244.  Another suggestion was to modify true and false to take an optional
  18245.  argument, and true would exit true only if the argument is nonzero, and
  18246.  false would exit false only if the argument is nonzero.  The suggestion
  18247.  was not favorably received by the balloting group (those contacted were
  18248.  negative about it, all others were silent in their latest ballots).
  18249.  
  18250.        while true $(($x > 5 && $y <= 25))
  18251.  
  18252.  There is a minor portability concern with the new syntax.  The example
  18253.  $((2+2)) could have been intended to mean a command substitution of a
  18254.  utility named 2+2 in a subshell.  The developers of POSIX.2 consider this
  18255.  to be obscure and isolated to some KornShell scripts [because $( )
  18256.  command substitution existed previously only in the KornShell].  The text
  18257.  on Command Substitution has been changed to require that the $( and ( be
  18258.  separate tokens if this usage is needed.
  18259.  
  18260.  An example such as
  18261.  
  18262.        echo $((echo hi);(echo there))
  18263.  
  18264.  should not be misinterpreted by the shell as arithmetic because attempts
  18265.  to balance the parentheses pairs would indicate that they are subshells.   1
  18266.  However, as indicated by 3.1.1, a conforming application must separate     1
  18267.  two adjacent parentheses with white space to indicate nested subshells.    1
  18268.  
  18269.  END_RATIONALE                                                              1
  18270.  
  18271.  
  18272.  
  18273.                Copyright c 1991 IEEE.  All rights reserved.
  18274.       This is an unapproved IEEE Standards Draft, subject to change.
  18275.  
  18276.  
  18277.  
  18278.  
  18279.  
  18280.  3.6 Word Expansions                                                   247
  18281.  
  18282.  
  18283.  
  18284.  
  18285.  
  18286.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  18287.  
  18288.  3.6.5  Field Splitting
  18289.  
  18290.  After parameter expansion (3.6.2), command substitution (3.6.3), and
  18291.  arithmetic expansion (3.6.4) the shell shall scan the results of
  18292.  expansions and substitutions that did not occur in double-quotes for
  18293.  field splitting and multiple fields can result.
  18294.  
  18295.  The shell shall treat each character of the IFS as a delimiter and use
  18296.  the delimiters to split the results of parameter expansion and command
  18297.  substitution into fields.
  18298.  
  18299.      (1)  If the value of IFS is <space>, <tab>, and <newline>, or if it
  18300.           is unset, any sequence of <space>, <tab>, or <newline>
  18301.           characters at the beginning or end of the input shall be ignored
  18302.           and any sequence of those characters within the input shall
  18303.           delimit a field.  (For example, the input
  18304.  
  18305.                 <newline><space><tab>foo<tab><tab>bar<space>
  18306.  
  18307.           yields two fields, foo and bar).
  18308.  
  18309.      (2)  If the value of IFS is null, no field splitting shall be
  18310.           performed.
  18311.  
  18312.      (3)  Otherwise, the following rules shall be applied in sequence.      1
  18313.           The term ``IFS white space'' is used to mean any sequence (zero   1
  18314.           or more instances) of white-space characters that are in the IFS  1
  18315.           value (e.g., if IFS contains <space><comma><tab>, any sequence    1
  18316.           of <space> and <tab> characters is considered IFS white space).   1
  18317.  
  18318.            (a)  IFS white space shall be ignored at the beginning and end   1
  18319.                 of the input.                                               1
  18320.  
  18321.            (b)  Each occurrence in the input of an IFS character that is    1
  18322.                 not IFS white space, along with any adjacent IFS white      1
  18323.                 space, shall delimit a field, as described previously.      1
  18324.  
  18325.            (c)  Nonzero-length IFS white space shall delimit a field.       1
  18326.  
  18327.  BEGIN_RATIONALE
  18328.  
  18329.  
  18330.  3.6.5.1  Field Splitting Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  18331.           _P_1_0_0_3._2)
  18332.  
  18333.  The operation of field splitting using IFS as described in earlier drafts
  18334.  was based on the way the KornShell splits words, but is incompatible with
  18335.  other common versions of the shell.  However, each has merit, and so a
  18336.  decision was made to allow both.  If the IFS variable is unset, or is
  18337.  <space><tab><newline>, the operation is equivalent to the way the
  18338.  
  18339.                Copyright c 1991 IEEE.  All rights reserved.
  18340.       This is an unapproved IEEE Standards Draft, subject to change.
  18341.  
  18342.  
  18343.  
  18344.  
  18345.  
  18346.  248                                              3 Shell Command Language
  18347.  
  18348.  
  18349.  
  18350.  
  18351.  
  18352.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  18353.  
  18354.  System V shell splits words.  Using characters outside the
  18355.  <space><tab><newline> set yields the KornShell behavior, where each of
  18356.  the non-<space><tab><newline> characters is significant.  This behavior,
  18357.  which affords the most flexibility, was taken from the way the original
  18358.  awk handled field splitting.
  18359.  
  18360.  The (3) rule can be summarized as a pseudo ERE:                            1
  18361.  
  18362.        (s*ns*|s+)                                                           1
  18363.  
  18364.  where s is an IFS white-space character and n is a character in the IFS    1
  18365.  that is not white space.  Any string matching that ERE delimits a field,   1
  18366.  except that the s+ form does not delimit fields at the beginning or the    1
  18367.  end of a line.  For example, if IFS is <space><comma>, the string          1
  18368.  
  18369.        <space><space>red<space><space>,<space>white<space>blue              1
  18370.  
  18371.  yields the three colors as the delimited fields.                           1
  18372.  
  18373.  END_RATIONALE                                                              1
  18374.  
  18375.  
  18376.  3.6.6  Pathname Expansion
  18377.  
  18378.  After field splitting, if set -f is not in effect, each field in the
  18379.  resulting command line shall be expanded using the algorithm described in
  18380.  3.13, qualified by the rules in 3.13.3.
  18381.  
  18382.  
  18383.  3.6.7  Quote Removal
  18384.  
  18385.  The quote characters
  18386.  
  18387.        \  '  "
  18388.  
  18389.  (backslash, single-quote, double-quote) that were present in the original
  18390.  word shall be removed unless they have themselves been quoted.
  18391.  
  18392.  
  18393.  
  18394.  3.7  Redirection
  18395.  
  18396.  Redirection is used to open and close files for the current shell
  18397.  execution environment (see 3.12) or for any command.  _R_e_d_i_r_e_c_t_i_o_n
  18398.  _o_p_e_r_a_t_o_r_s can be used with numbers representing file descriptors (see the
  18399.  definition in POSIX.1 {8}) as described below.  See also 2.9.1.  The
  18400.  relationship between these file descriptors and access to them in a
  18401.  programming language is specified in the language binding for that
  18402.  language to this standard.
  18403.  
  18404.  
  18405.                Copyright c 1991 IEEE.  All rights reserved.
  18406.       This is an unapproved IEEE Standards Draft, subject to change.
  18407.  
  18408.  
  18409.  
  18410.  
  18411.  
  18412.  3.7 Redirection                                                       249
  18413.  
  18414.  
  18415.  
  18416.  
  18417.  
  18418.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  18419.  
  18420.  The overall format used for redirection is:
  18421.  
  18422.        [_n]_r_e_d_i_r-_o_p   _w_o_r_d
  18423.  
  18424.  The number _n is an optional decimal number designating the file
  18425.  descriptor number; it shall be delimited from any preceding text and
  18426.  immediately precede the redirection operator _r_e_d_i_r-_o_p. If _n is quoted,
  18427.  the number shall not be recognized as part of the redirection expression.
  18428.  (For example, echo \2>a writes the character 2 into file a).  If any part
  18429.  of _r_e_d_i_r-_o_p is quoted, no redirection expression shall be recognized.
  18430.  (For example, echo 2\>a writes the characters 2>a to standard output.)
  18431.  The optional number, redirection operator, and _w_o_r_d shall not appear in
  18432.  the arguments provided to the command to be executed (if any).
  18433.  
  18434.  In this standard, open files are represented by decimal numbers starting
  18435.  with zero.  It is implementation defined what the largest value can be;
  18436.  however, all implementations shall support at least 0 through 9 for use
  18437.  by the application.  These numbers are called _f_i_l_e _d_e_s_c_r_i_p_t_o_r_s.  The
  18438.  values 0, 1, and 2 have special meaning and conventional uses and are
  18439.  implied by certain redirection operations; they are referred to as
  18440.  _s_t_a_n_d_a_r_d _i_n_p_u_t, _s_t_a_n_d_a_r_d _o_u_t_p_u_t, and _s_t_a_n_d_a_r_d _e_r_r_o_r, respectively.
  18441.  Programs usually take their input from standard input, and write output
  18442.  on standard output.  Error messages are usually written to standard
  18443.  error.  The redirection operators can be preceded by one or more digits
  18444.  (with no intervening <blank>s allowed) to designate the file descriptor
  18445.  number.
  18446.  
  18447.  If the redirection operator is << or <<-, the word that follows the
  18448.  redirection operator shall be subjected to quote removal; it is
  18449.  unspecified whether any of the other expansions occur.  For the other
  18450.  redirection operators, the word that follows the redirection operator
  18451.  shall be subjected to tilde expansion, parameter expansion, command
  18452.  substitution, arithmetic expansion, and quote removal.  Pathname
  18453.  expansion shall not be performed on the word by a noninteractive shell;
  18454.  an interactive shell may perform it, but shall do so only when the
  18455.  expansion would result in one word.
  18456.  
  18457.  If more than one redirection operator is specified with a command, the
  18458.  order of evaluation is from beginning to end.
  18459.  
  18460.  In the following description of redirections, references are made to
  18461.  opening and creating files.  These references shall conform to the
  18462.  requirements in 2.9.1.4.  A failure to open or create a file shall cause
  18463.  the redirection to fail.
  18464.  
  18465.  
  18466.  
  18467.  
  18468.  
  18469.  
  18470.  
  18471.                Copyright c 1991 IEEE.  All rights reserved.
  18472.       This is an unapproved IEEE Standards Draft, subject to change.
  18473.  
  18474.  
  18475.  
  18476.  
  18477.  
  18478.  250                                              3 Shell Command Language
  18479.  
  18480.  
  18481.  
  18482.  
  18483.  
  18484.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  18485.  
  18486.  3.7.1  Redirecting Input
  18487.  
  18488.  Input redirection shall cause the file whose name results from the
  18489.  expansion of _w_o_r_d to be opened for reading on the designated file
  18490.  descriptor, or standard input if the file descriptor is not specified.
  18491.  
  18492.  The general format for redirecting input is:
  18493.  
  18494.        [_n]<_w_o_r_d
  18495.  
  18496.  where the optional _n represents the file descriptor number.  If the
  18497.  number is omitted, the redirection shall refer to standard input (file
  18498.  descriptor 0).
  18499.  
  18500.  
  18501.  3.7.2  Redirecting Output
  18502.  
  18503.  The two general formats for redirecting output are:
  18504.  
  18505.        [_n]>_w_o_r_d
  18506.        [_n]>|_w_o_r_d
  18507.  
  18508.  where the optional _n represents the file descriptor number.  If the
  18509.  number is omitted, the redirection shall refer to standard output (file
  18510.  descriptor 1).
  18511.  
  18512.  Output redirection using the > format shall fail if the _n_o_c_l_o_b_b_e_r option   1
  18513.  is set (see the description of set -C in 3.14.11) and the file named by    1
  18514.  the expansion of _w_o_r_d exists and is a regular file.  Otherwise,            1
  18515.  redirection using the > or >| formats shall cause the file whose name      1
  18516.  results from the expansion of _w_o_r_d to be created and opened for ouput on
  18517.  the designated file descriptor, or standard output if none is specified.
  18518.  If the file does not exist, it shall be created; otherwise, it shall be
  18519.  truncated to be an empty file after being opened.
  18520.  
  18521.  
  18522.  3.7.3  Appending Redirected Output
  18523.  
  18524.  Appended output redirection shall cause the file whose name results from
  18525.  the expansion of word to be opened for output on the designated file
  18526.  descriptor.  The file is opened as if the POSIX.1 {8} _o_p_e_n() function was
  18527.  called with the O_APPEND flag.  If the file does not exist, it shall be
  18528.  created.
  18529.  
  18530.  The general format for appending redirected output is as follows:
  18531.  
  18532.        [_n]>>_w_o_r_d
  18533.  
  18534.  where the optional _n represents the file descriptor number.
  18535.  
  18536.  
  18537.                Copyright c 1991 IEEE.  All rights reserved.
  18538.       This is an unapproved IEEE Standards Draft, subject to change.
  18539.  
  18540.  
  18541.  
  18542.  
  18543.  
  18544.  3.7 Redirection                                                       251
  18545.  
  18546.  
  18547.  
  18548.  
  18549.  
  18550.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  18551.  
  18552.  3.7.4  Here-Document
  18553.  
  18554.  The redirection operators << and <<- both allow redirection of lines
  18555.  contained in a shell input file, known as a _h_e_r_e-_d_o_c_u_m_e_n_t, to the
  18556.  standard input of a command.
  18557.  
  18558.  The here-document shall be treated as a single word that begins after the
  18559.  next <newline> and continues until there is a line containing only the
  18560.  delimiter, with no trailing <blank>_s.  Then the next here-document
  18561.  starts, if there is one.  The format is as follows:
  18562.  
  18563.        [_n]<<_w_o_r_d
  18564.                _h_e_r_e-_d_o_c_u_m_e_n_t
  18565.        _d_e_l_i_m_i_t_e_r
  18566.  
  18567.  If any character in _w_o_r_d is quoted, the delimiter shall be formed by
  18568.  performing quote removal on _w_o_r_d, and the here-document lines shall not
  18569.  be expanded.  Otherwise, the delimiter shall be the _w_o_r_d itself.
  18570.  
  18571.  If no characters in _w_o_r_d are quoted, all lines of the here-document shall
  18572.  be expanded for parameter expansion, command substitution, and arithmetic
  18573.  expansion.  In this case, the backslash in the input shall behave as the
  18574.  backslash inside double-quotes (see 3.2.3).  However, the double-quote
  18575.  character (") shall not be treated specially within a here-document,
  18576.  except when the double-quote appears within $( ), ` `, or ${ }.            1
  18577.  
  18578.  If the redirection symbol is <<-, all leading <tab> characters shall be
  18579.  stripped from input lines and the line containing the trailing delimiter.
  18580.  If more than one << or <<- operator is specified on a line, the here-
  18581.  document associated with the first operator shall be supplied first by
  18582.  the application and shall be read first by the shell.
  18583.  
  18584.  
  18585.  3.7.5  Duplicating an Input File Descriptor
  18586.  
  18587.  The redirection operator
  18588.  
  18589.        [_n]<&_w_o_r_d
  18590.  
  18591.  is used to duplicate one input file descriptor from another, or to close
  18592.  one.  If _w_o_r_d evaluates to one or more digits, the file descriptor
  18593.  denoted by _n, or standard input if _n is not specified, shall be made to
  18594.  be a copy of the file descriptor denoted by _w_o_r_d; if the digits in _w_o_r_d
  18595.  do not represent a file descriptor already open for input, a redirection   1
  18596.  error shall result (see 3.8.1).  If _w_o_r_d evaluates to -, file descriptor   1
  18597.  _n, or standard input if _n is not specified, shall be closed.  If _w_o_r_d
  18598.  evaluates to something else, the behavior is unspecified.
  18599.  
  18600.  
  18601.  
  18602.  
  18603.                Copyright c 1991 IEEE.  All rights reserved.
  18604.       This is an unapproved IEEE Standards Draft, subject to change.
  18605.  
  18606.  
  18607.  
  18608.  
  18609.  
  18610.  252                                              3 Shell Command Language
  18611.  
  18612.  
  18613.  
  18614.  
  18615.  
  18616.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  18617.  
  18618.  3.7.6  Duplicating an Output File Descriptor
  18619.  
  18620.  The redirection operator
  18621.  
  18622.        [_n]>&_w_o_r_d
  18623.  
  18624.  is used to duplicate one output file descriptor from another, or to close
  18625.  one.  If _w_o_r_d evaluates to one or more digits, the file descriptor
  18626.  denoted by _n, or standard output if _n is not specified, shall be made to
  18627.  be a copy of the file descriptor denoted by _w_o_r_d; if the digits in _w_o_r_d
  18628.  do not represent a file descriptor already open for output, a redirection  1
  18629.  error shall result (see 3.8.1).  If _w_o_r_d evaluates to -, file descriptor   1
  18630.  _n, or standard output if _n is not specified, shall be closed.  If _w_o_r_d
  18631.  evaluates to something else, the behavior is unspecified.
  18632.  
  18633.  
  18634.  3.7.7  Open File Descriptors for Reading and Writing.
  18635.  
  18636.  The redirection operator
  18637.  
  18638.        [_n]<>_w_o_r_d
  18639.  
  18640.  shall cause the file whose name is the expansion of _w_o_r_d to be opened for
  18641.  both reading and writing on the file descriptor denoted by _n, or standard
  18642.  input if _n is not specified.  If the file does not exist, it shall be
  18643.  created.
  18644.  
  18645.  BEGIN_RATIONALE
  18646.  
  18647.  
  18648.  3.7.8  Redirection Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  18649.  
  18650.  In the C binding for POSIX.1 {8}, file descriptors are integers in the
  18651.  range 0 - ({OPEN_MAX}-1).  The file descriptors discussed in Redirection
  18652.  are that same set of small integers.
  18653.  
  18654.  As POSIX.2 is being finalized, it is not known how file descriptors will
  18655.  be represented in the language-independent description of POSIX.1 {8}.
  18656.  The current consensus appears to be that they will remain as small
  18657.  integers, but it is still possible that they will be defined as an opaque
  18658.  type.  If they remain as integers, then the current POSIX.2 wording is
  18659.  acceptable.  If they become an opaque type, then the C binding to
  18660.  POSIX.1 {8} will have to define the mapping from the binding's small
  18661.  integers to the opaque type, and the Redirection clause in POSIX.2 will
  18662.  have to be modified to specify that same mapping.
  18663.  
  18664.  Having multidigit file descriptor numbers for I/O redirection can cause
  18665.  some obscure compatibility problems.  Specifically, scripts that depend
  18666.  on an example command:
  18667.  
  18668.  
  18669.                Copyright c 1991 IEEE.  All rights reserved.
  18670.       This is an unapproved IEEE Standards Draft, subject to change.
  18671.  
  18672.  
  18673.  
  18674.  
  18675.  
  18676.  3.7 Redirection                                                       253
  18677.  
  18678.  
  18679.  
  18680.  
  18681.  
  18682.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  18683.  
  18684.        echo 22>/dev/null
  18685.  
  18686.  echoing "2" are somewhat broken to begin with.  However, the file
  18687.  descriptor number still must be delimited from the preceding text.  For
  18688.  example,
  18689.  
  18690.        cat file2>foo
  18691.  
  18692.  will write the contents of file2, not the contents of file.
  18693.  
  18694.  The >| format of output redirection was adopted from the KornShell.
  18695.  Along with the _n_o_c_l_o_b_b_e_r option, set -C, it provides a safety feature to
  18696.  prevent inadvertent overwriting of existing files.  (See the rationale
  18697.  with the pathchk utility for why this step was taken.)  The restriction
  18698.  on regular files is historical practice.
  18699.  
  18700.  The System V shell and the KornShell have differed historically on
  18701.  pathname expansion of _w_o_r_d; the former never performed it, the latter
  18702.  only when the result was a single field (file).  As a compromise, it was
  18703.  decided that the KornShell functionality was useful, but only as a
  18704.  shorthand device for interactive users.  No reasonable shell script would
  18705.  be written with a command such as:
  18706.  
  18707.        cat foo > a*
  18708.  
  18709.  Thus, shell scripts are prohibited from doing it, while interactive users
  18710.  can select the shell with which they are most comfortable.
  18711.  
  18712.  The construct 2>&1 is often used to redirect standard error to the same
  18713.  file as standard output.  Since the redirections take place beginning to
  18714.  end, the order of redirections is significant.  For example:
  18715.  
  18716.        ls > foo 2>&1
  18717.  
  18718.  directs both standard output and standard error to file foo.  However
  18719.  
  18720.        ls 2>&1 > foo
  18721.  
  18722.  only directs standard output to file foo because standard error was
  18723.  duplicated as standard output before standard output was directed to file
  18724.  foo.
  18725.  
  18726.  The <> operator is a feature first documented in the KornShell, but it
  18727.  has been silently present in both System V and BSD shells.  It could be
  18728.  useful in writing an application that worked with several terminals, and
  18729.  occasionally wanted to start up a shell.  That shell would in turn be
  18730.  unable to run applications that run from an ordinary controlling terminal  1
  18731.  unless it could make use of <> redirection.  The specific example is a     1
  18732.  historical version of the pager more, which reads from standard error to
  18733.  
  18734.  
  18735.                Copyright c 1991 IEEE.  All rights reserved.
  18736.       This is an unapproved IEEE Standards Draft, subject to change.
  18737.  
  18738.  
  18739.  
  18740.  
  18741.  
  18742.  254                                              3 Shell Command Language
  18743.  
  18744.  
  18745.  
  18746.  
  18747.  
  18748.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  18749.  
  18750.  get its commands, so standard input and standard output are both
  18751.  available for their usual usage.  There is no way of saying the following
  18752.  in the shell without <>:
  18753.  
  18754.        cat food | more - >/dev/tty03 2<>/dev/tty03
  18755.  
  18756.  Another example of <> is one that opens /dev/tty on file descriptor 3 for
  18757.  reading and writing:
  18758.  
  18759.        exec 3<> /dev/tty
  18760.  
  18761.  An example of creating a lock file for a critical code region:
  18762.  
  18763.        set -C
  18764.        until   2> /dev/null > lockfile
  18765.        do      sleep 30
  18766.        done
  18767.        set +C
  18768.        _p_e_r_f_o_r_m _c_r_i_t_i_c_a_l _f_u_n_c_t_i_o_n
  18769.        rm lockfile
  18770.  
  18771.  Since /dev/null is not a regular file, no error is generated by
  18772.  redirecting to it in _n_o_c_l_o_b_b_e_r mode.
  18773.  
  18774.  The case of a missing delimiter at the end of a here-document is not
  18775.  specified.  This is considered an error in the script (one that sometimes
  18776.  can be difficult to diagnose), although some systems have treated end-
  18777.  of-file as an implicit delimiter.
  18778.  
  18779.  Tilde expansion is not performed on a here-document because the data is    1
  18780.  treated as if it were enclosed in double-quotes.                           1
  18781.  
  18782.  END_RATIONALE                                                              1
  18783.  
  18784.  
  18785.  
  18786.  3.8  Exit Status and Errors
  18787.  
  18788.  
  18789.  3.8.1  Consequences of Shell Errors
  18790.  
  18791.  For a noninteractive shell, an error condition encountered by a special
  18792.  built-in (see 3.14) or other type of utility shall cause the shell to
  18793.  write a diagnostic message to standard error and exit as shown in the
  18794.  following table:
  18795.  
  18796.                                      S_p_e_c_i_a_l__B_u_i_l_t_-_i_n_ O_t_h_e_r__U_t_i_l_i_t_i_e_s_
  18797.  
  18798.  
  18799.  
  18800.  
  18801.                Copyright c 1991 IEEE.  All rights reserved.
  18802.       This is an unapproved IEEE Standards Draft, subject to change.
  18803.  
  18804.  
  18805.  
  18806.  
  18807.  
  18808.  3.8 Exit Status and Errors                                            255
  18809.  
  18810.  
  18811.  
  18812.  
  18813.  
  18814.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  18815.  
  18816.       Shell language syntax error       shall exit      shall exit
  18817.       Utility syntax error (option      shall exit    shall not exit
  18818.       or operand error)
  18819.       Redirection error                 shall exit    shall not exit
  18820.       Variable assignment error         shall exit    shall not exit
  18821.       Expansion error                   shall exit      shall exit
  18822.       Command not found                    n/a           may exit
  18823.       dot script not found              shall exit          n/a
  18824.  
  18825.  An ``expansion error'' is one that occurs when the shell expansions
  18826.  defined in 3.6 are carried out (e.g., ${x!y}, because ! is not a valid
  18827.  operator); an implementation may treat these as syntax errors if it is
  18828.  able to detect them during tokenization, rather than during expansion.
  18829.  
  18830.  If any of the errors shown as ``shall (may) exit'' occur in a subshell,
  18831.  the subshell shall (may) exit with a nonzero status, but the script
  18832.  containing the subshell shall not exit because of the error.
  18833.  
  18834.  In all of the cases shown in the table, an interactive shell shall write
  18835.  a diagnostic message to standard error without exiting.
  18836.  
  18837.  
  18838.  3.8.2  Exit Status for Commands
  18839.  
  18840.  Each command has an exit status that can influence the behavior of other
  18841.  shell commands.  The exit status of commands that are not utilities are
  18842.  documented in this subclause.  The exit status of the standard utilities
  18843.  are documented in their respective clauses.
  18844.  
  18845.  If a command is not found by the shell, the exit status shall be 127.  If  1
  18846.  the command name is found, but it is not an executable utility, the exit   1
  18847.  status shall be 126.  See 3.9.1.1.  Applications that invoke utilities     1
  18848.  without using the shell should use these exit status values to report      1
  18849.  similar errors.                                                            1
  18850.  
  18851.  If a command fails during word expansion or redirection, its exit status
  18852.  shall be greater than zero.
  18853.  
  18854.  Internally, for purposes of deciding if a command exits with a nonzero
  18855.  exit status, the shell shall recognize the entire status value retrieved
  18856.  for the command by the equivalent of the POSIX.1 {8} _w_a_i_t() function
  18857.  WEXITSTATUS macro.  When reporting the exit status with the special
  18858.  parameter ?, the shell shall report the full eight bits of exit status
  18859.  available.  The exit status of a command that terminated because it
  18860.  received a signal shall be reported as greater than 128.
  18861.  
  18862.  BEGIN_RATIONALE
  18863.  
  18864.  
  18865.  
  18866.  
  18867.                Copyright c 1991 IEEE.  All rights reserved.
  18868.       This is an unapproved IEEE Standards Draft, subject to change.
  18869.  
  18870.  
  18871.  
  18872.  
  18873.  
  18874.  256                                              3 Shell Command Language
  18875.  
  18876.  
  18877.  
  18878.  
  18879.  
  18880.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  18881.  
  18882.  3.8.3  Exit Status and Errors Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  18883.         _P_1_0_0_3._2)
  18884.  
  18885.  There is a historical difference in sh and ksh noninteractive error
  18886.  behavior.  When a command named in a script is not found, some
  18887.  implementations of sh exit immediately, but ksh continues with the next
  18888.  command.  Thus, POSIX.2 says that the shell ``may'' exit in this case.
  18889.  This puts a small burden on the programmer, who will have to test for
  18890.  successful completion following a command if it is important that the
  18891.  next command not be executed if the previous was not found.  If it is
  18892.  important for the command to have been found, it was probably also
  18893.  important for it to complete successfully.  The test for successful
  18894.  completion would not need to change.
  18895.  
  18896.  Historically, shells have returned an exit status of 128+_n, where _n
  18897.  represents the signal number.  Since signal numbers are not standardized,
  18898.  there is no portable way to determine which signal caused the
  18899.  termination.  Also, it is possible for a command to exit with a status in
  18900.  the same range of numbers that the shell would use to report that the
  18901.  command was terminated by a signal.  Implementations are encouraged to     1
  18902.  chose exit values greater than 256 to indicate programs that terminated    1
  18903.  by a signal so that the exit status cannot be confused with an exit        1
  18904.  status generated by a normal termination.                                  1
  18905.  
  18906.  Historical shells make the distinction between ``utility not found'' and   1
  18907.  ``utility found but cannot execute'' in their error messages.  By          1
  18908.  specifying two seldomly used exit status values for these cases, 127 and   1
  18909.  126 respectively, this gives an application the opportunity to make use    1
  18910.  of this distinction without having to parse an error message that would    1
  18911.  probably change from locale to locale.  The POSIX.2 command, env, nohup,   1
  18912.  and xargs utilities also have been specified to use this convention.       1
  18913.  
  18914.  When a command fails during word expansion or redirection, most
  18915.  historical implementations exit with a status of 1.  However, there was
  18916.  some sentiment that this value should probably be much higher, so that an
  18917.  application could distinguish this case from the more normal exit status
  18918.  values.  Thus, the language ``greater than zero'' was selected to allow
  18919.  either method to be implemented.
  18920.  
  18921.  END_RATIONALE
  18922.  
  18923.  
  18924.  
  18925.  
  18926.  
  18927.  
  18928.  
  18929.  
  18930.  
  18931.  
  18932.  
  18933.                Copyright c 1991 IEEE.  All rights reserved.
  18934.       This is an unapproved IEEE Standards Draft, subject to change.
  18935.  
  18936.  
  18937.  
  18938.  
  18939.  
  18940.  3.8 Exit Status and Errors                                            257
  18941.  
  18942.  
  18943.  
  18944.  
  18945.  
  18946.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  18947.  
  18948.  3.9  Shell Commands
  18949.  
  18950.  This clause describes the basic structure of shell commands.  The
  18951.  following command descriptions each describe a format of the command that
  18952.  is only used to aid the reader in recognizing the command type, and does
  18953.  not formally represent the syntax.  Each description discusses the
  18954.  semantics of the command; for a formal description of the command
  18955.  language, consult the grammar in 3.10.
  18956.  
  18957.  A _c_o_m_m_a_n_d is one of the following:
  18958.  
  18959.      - _s_i_m_p_l_e _c_o_m_m_a_n_d (see 3.9.1)
  18960.  
  18961.      - _p_i_p_e_l_i_n_e (see 3.9.2)
  18962.  
  18963.      - _l_i_s_t or _c_o_m_p_o_u_n_d-_l_i_s_t (see 3.9.3)
  18964.  
  18965.      - _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d (see 3.9.4)
  18966.  
  18967.      - _f_u_n_c_t_i_o_n _d_e_f_i_n_i_t_i_o_n (see 3.9.5).
  18968.  
  18969.  Unless otherwise stated, the exit status of a command is that of the last
  18970.  simple command executed by the command.  There is no limit on the size of
  18971.  any shell command other than that imposed by the underlying system
  18972.  (memory constraints, {ARG_MAX}, etc.).
  18973.  
  18974.  BEGIN_RATIONALE
  18975.  
  18976.  
  18977.  3.9.0.1  Shell Commands Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  18978.           _P_1_0_0_3._2)
  18979.  
  18980.  A description of an ``empty command'' was removed from an earlier draft    1
  18981.  because it is only relevant in the cases of sh -c  "", system(""), or an   1
  18982.  empty shell-script file (such as the implementation of true on some        1
  18983.  historical systems).  Since it is no longer mentioned in POSIX.2, it       1
  18984.  falls into the silently unspecified category of behavior where             1
  18985.  implementations can continue to operate as they have historically, but     1
  18986.  conforming applications will not construct empty commands.  (However,      1
  18987.  note that sh does explicitly state an exit status for an empty string or   1
  18988.  file.)  In an interactive session or a script with other commands, extra
  18989.  <newline>s or semicolons, such as
  18990.  
  18991.        $ false
  18992.        $
  18993.        $ echo $?
  18994.        1
  18995.  
  18996.  would not qualify as the empty command described here because they would
  18997.  be consumed by other parts of the grammar.
  18998.  
  18999.                Copyright c 1991 IEEE.  All rights reserved.
  19000.       This is an unapproved IEEE Standards Draft, subject to change.
  19001.  
  19002.  
  19003.  
  19004.  
  19005.  
  19006.  258                                              3 Shell Command Language
  19007.  
  19008.  
  19009.  
  19010.  
  19011.  
  19012.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  19013.  
  19014.  END_RATIONALE
  19015.  
  19016.  
  19017.  3.9.1  Simple Commands
  19018.  
  19019.  A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments and
  19020.  redirections, in any sequence, optionally followed by words and
  19021.  redirections, terminated by a control operator.
  19022.  
  19023.  When a given simple command is required to be executed (i.e., when any     1
  19024.  conditional construct such as an AND-OR list or a case statement has not   1
  19025.  bypassed the simple command), the following expansions, assignments, and   1
  19026.  redirections shall all be performed from the beginning of the command
  19027.  text to the end.
  19028.  
  19029.      (1)  The words that are recognized as variable assignments or
  19030.           redirections according to 3.10.2 are saved for processing in
  19031.           steps (3) and (4).
  19032.  
  19033.      (2)  The words that are not variable assignments or redirections
  19034.           shall be expanded.  If any fields remain following their
  19035.           expansion, the first field shall be considered the command name,
  19036.           and remaining fields shall be the arguments for the command.
  19037.  
  19038.      (3)  Redirections shall be performed as described in 3.7.
  19039.  
  19040.      (4)  Each variable assignment shall be expanded for tilde expansion,
  19041.           parameter expansion, command substitution, arithmetic expansion,
  19042.           and quote removal prior to assigning the value.
  19043.  
  19044.  In the preceding list, the order of steps (3) and (4) may be reversed for
  19045.  the processing of special built-in utilities.  See 3.14.
  19046.  
  19047.  If no command name results, variable assignments shall affect the current
  19048.  execution environment.  Otherwise, the variable assignments shall be
  19049.  exported for the execution environment of the command and shall not
  19050.  affect the current execution environment (except for special built-ins).
  19051.  If any of the variable assignments attempt to assign a value to a read-
  19052.  only variable, a variable assignment error shall occur.  See 3.8.1 for
  19053.  the consequences of these errors.
  19054.  
  19055.  If there is no command name, any redirections shall be performed in a
  19056.  subshell environment; it is unspecified whether this subshell environment
  19057.  is the same one as that used for a command substitution within the
  19058.  command.  [To affect the current execution environment, see exec
  19059.  (3.14.6)].  If any of the redirections performed in the current shell
  19060.  execution environment fail, the command shall immediately fail with an
  19061.  exit status greater than zero, and the shell shall write an error message
  19062.  indicating the failure.  See 3.8.1 for the consequences of these failures
  19063.  
  19064.  
  19065.                Copyright c 1991 IEEE.  All rights reserved.
  19066.       This is an unapproved IEEE Standards Draft, subject to change.
  19067.  
  19068.  
  19069.  
  19070.  
  19071.  
  19072.  3.9 Shell Commands                                                    259
  19073.  
  19074.  
  19075.  
  19076.  
  19077.  
  19078.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  19079.  
  19080.  on interactive and noninteractive shells.
  19081.  
  19082.  If there is a command name, execution shall continue as described in
  19083.  3.9.1.1.  If there is no command name, but the command contained a
  19084.  command substitution, the command shall complete with the exit status of
  19085.  the last command substitution performed.  Otherwise, the command shall
  19086.  complete with a zero exit status.
  19087.  
  19088.  BEGIN_RATIONALE
  19089.  
  19090.  3.9.1.0.1  Simple Commands Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  19091.             _P_1_0_0_3._2)
  19092.  
  19093.  The enumerated list is used only when the command is actually going to be  1
  19094.  executed.  For example, in:                                                1
  19095.  
  19096.        true || $foo *                                                       1
  19097.  
  19098.  no expansions are performed.                                               1
  19099.  
  19100.  The following example illustrates both how a variable assignment without
  19101.  a command name affects the current execution environment, and how an
  19102.  assignment with a command name only affects the execution environment of
  19103.  the command.
  19104.  
  19105.        $ x=red
  19106.        $ echo $x
  19107.        red
  19108.        $ export x
  19109.        $ sh -c 'echo $x'
  19110.        red
  19111.        $ x=blue sh -c 'echo $x'
  19112.        blue
  19113.        $ echo $x
  19114.        red
  19115.  
  19116.  This next example illustrates that redirections without a command name
  19117.  are still performed.
  19118.  
  19119.        $ ls foo
  19120.        ls: foo: no such file or directory
  19121.        $ > foo
  19122.        $ ls foo
  19123.        foo
  19124.  
  19125.  Historical practice is for a command without a command name, but that
  19126.  includes a command substitution, to have an exit status of the last
  19127.  command substitution that the shell performed and some historical scripts
  19128.  rely on this.  For example:
  19129.  
  19130.  
  19131.                Copyright c 1991 IEEE.  All rights reserved.
  19132.       This is an unapproved IEEE Standards Draft, subject to change.
  19133.  
  19134.  
  19135.  
  19136.  
  19137.  
  19138.  260                                              3 Shell Command Language
  19139.  
  19140.  
  19141.  
  19142.  
  19143.  
  19144.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  19145.  
  19146.        if      x=$(_c_o_m_m_a_n_d)
  19147.        then    ...
  19148.        fi
  19149.  
  19150.  An example of redirections without a command name being performed in a
  19151.  subshell shows that the here-document does not disrupt the standard input
  19152.  of the while loop:
  19153.  
  19154.        IFS=:
  19155.        while   read a b
  19156.        do      echo $a
  19157.                <<-eof
  19158.                Hello
  19159.                eof
  19160.        done </etc/passwd
  19161.  
  19162.  Some examples of commands without command names in AND/OR lists:
  19163.  
  19164.        > foo || {
  19165.                echo "error: foo cannot be created" >&2                      1
  19166.                exit 1                                                       1
  19167.        }
  19168.  
  19169.        # set saved if /vmunix.save exists
  19170.        test -f /vmunix.save && saved=1
  19171.  
  19172.  Command substitution and redirections without command names both occur in
  19173.  subshells, but they are not the same ones.  For example, in:               1
  19174.  
  19175.        exec 3> file
  19176.        var=$(echo foo >&3) 3>&1
  19177.  
  19178.  it is unspecified whether foo will be echoed to the file or to standard
  19179.  output.
  19180.  
  19181.  END_RATIONALE
  19182.  
  19183.  
  19184.  3.9.1.1  Command Search and Execution
  19185.  
  19186.  If a simple command results in a command name and an optional list of
  19187.  arguments, the following actions shall be performed.
  19188.  
  19189.      (1)  If the command name does not contain any slashes, the first
  19190.           successful step in the following sequence shall occur:
  19191.  
  19192.            (a)  If the command name matches the name of a special built-in
  19193.                 utility, that special built-in utility shall be invoked.
  19194.  
  19195.  
  19196.  
  19197.                Copyright c 1991 IEEE.  All rights reserved.
  19198.       This is an unapproved IEEE Standards Draft, subject to change.
  19199.  
  19200.  
  19201.  
  19202.  
  19203.  
  19204.  3.9 Shell Commands                                                    261
  19205.  
  19206.  
  19207.  
  19208.  
  19209.  
  19210.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  19211.  
  19212.            (b)  If the command name matches the name of a function known
  19213.                 to this shell, the function shall be invoked as described
  19214.                 in 3.9.5.  [If the implementation has provided a standard
  19215.                 utility in the form of a function, it shall not be
  19216.                 recognized at this point.  It shall be invoked in
  19217.                 conjunction with the path search in step (1)(d).]
  19218.  
  19219.            (c)  If the command name matches the name of a utility listed
  19220.                 in Table 2-2 (see 2.3), that utility shall be invoked.
  19221.  
  19222.            (d)  Otherwise, the command shall be searched for using the
  19223.                 PATH environment variable as described in 2.6:
  19224.  
  19225.                  [1]  If the search is successful:
  19226.  
  19227.                        [a]  If the system has implemented the utility as a
  19228.                             regular built-in or as a shell function, it
  19229.                             shall be invoked at this point in the path
  19230.                             search.
  19231.  
  19232.                        [b]  Otherwise, the shell shall execute the utility  1
  19233.                             in a separate utility environment (see 3.12)    1
  19234.                             with actions equivalent to calling the          1
  19235.                             POSIX.1 {8} _e_x_e_c_v_e() function with the _p_a_t_h
  19236.                             argument set to the pathname resulting from
  19237.                             the search, _a_r_g_0 set to the command name, and
  19238.                             the remaining arguments set to the operands,
  19239.                             if any.
  19240.  
  19241.                             If the _e_x_e_c_v_e() function fails due to an error
  19242.                             equivalent to the POSIX.1 {8} error [ENOEXEC],
  19243.                             the shell shall execute a command equivalent
  19244.                             to having a shell invoked with the command
  19245.                             name as its first operand, along with any
  19246.                             remaining arguments passed along.  If the
  19247.                             executable file is not a text file, the shell
  19248.                             may bypass this command execution, write an
  19249.                             error message, and return an exit status of     1
  19250.                             126.                                            1
  19251.  
  19252.                       Once a utility has been searched for and found
  19253.                       (either as a result of this specific search or as
  19254.                       part of an unspecified shell startup activity), an
  19255.                       implementation may remember its location and need
  19256.                       not search for the utility again unless the PATH
  19257.                       variable has been the subject of an assignment.  If
  19258.                       the remembered location fails for a subsequent
  19259.                       invocation, the shell shall repeat the search to
  19260.                       find the new location for the utility, if any.
  19261.  
  19262.  
  19263.                Copyright c 1991 IEEE.  All rights reserved.
  19264.       This is an unapproved IEEE Standards Draft, subject to change.
  19265.  
  19266.  
  19267.  
  19268.  
  19269.  
  19270.  262                                              3 Shell Command Language
  19271.  
  19272.  
  19273.  
  19274.  
  19275.  
  19276.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  19277.  
  19278.                  [2]  If the search is unsuccessful, the command shall
  19279.                       fail with an exit status of 127 and the shell shall
  19280.                       write an error message.
  19281.  
  19282.      (2)  If the command name does contain slashes, the shell shall
  19283.           execute the utility in a separate utility environment with        1
  19284.           actions equivalent to calling the POSIX.1 {8} _e_x_e_c_v_e() function   1
  19285.           with the _p_a_t_h and _a_r_g_0 arguments set to the command name, and
  19286.           the remaining arguments set to the operands, if any.
  19287.  
  19288.           If the _e_x_e_c_v_e() function fails due to an error equivalent to the
  19289.           POSIX.1 {8} error [ENOEXEC], the shell shall execute a command
  19290.           equivalent to having a shell invoked with the command name as
  19291.           its first operand, along with any remaining arguments passed
  19292.           along.  If the executable file is not a text file, the shell may
  19293.           bypass this command execution, write an error message, and
  19294.           return an exit status of 126.                                     1
  19295.  
  19296.  BEGIN_RATIONALE
  19297.  
  19298.  3.9.1.1.1  Command Search and Execution Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t
  19299.             _a _p_a_r_t _o_f _P_1_0_0_3._2)
  19300.  
  19301.  This description requires that the shell can execute shell scripts
  19302.  directly, even if the underlying system does not support the common #!
  19303.  interpreter convention.  That is, if file foo contains shell commands and
  19304.  is executable, the following will execute foo:
  19305.  
  19306.        ./foo
  19307.  
  19308.  The command search shown here does not match all historical
  19309.  implementations.  A more typical sequence has been:
  19310.  
  19311.      - Any built-in, special or regular.
  19312.  
  19313.      - Functions.
  19314.  
  19315.      - Path search for executable files.
  19316.  
  19317.  But there are problems with this sequence.  Since the programmer has no
  19318.  idea in advance which utilities might have been built into the shell, a
  19319.  function cannot be used to portably override a utility of the same name.
  19320.  (For example, a function named cd cannot be written for many historical
  19321.  systems.)  Furthermore, the PATH variable is partially ineffective in
  19322.  this case and only a pathname with a slash can be used to ensure a
  19323.  specific executable file is invoked.
  19324.  
  19325.  The sequence selected for POSIX.2 acknowledges that special built-ins
  19326.  cannot be overridden, but gives the programmer full control over which
  19327.  
  19328.  
  19329.                Copyright c 1991 IEEE.  All rights reserved.
  19330.       This is an unapproved IEEE Standards Draft, subject to change.
  19331.  
  19332.  
  19333.  
  19334.  
  19335.  
  19336.  3.9 Shell Commands                                                    263
  19337.  
  19338.  
  19339.  
  19340.  
  19341.  
  19342.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  19343.  
  19344.  versions of other utilities are executed.  It provides a means of
  19345.  suppressing function lookup (via the command utility; see 4.12) for the
  19346.  user's own functions and ensures that any regular built-ins or functions
  19347.  provided by the implementation are under the control of the path search.
  19348.  The mechanisms for associating built-ins or functions with executable
  19349.  files in the path are not specified by POSIX.2, but the wording requires
  19350.  that if either is implemented, the application will not be able to
  19351.  distinguish a function or built-in from an executable (other than in
  19352.  terms of performance, presumably).  The implementation must ensure that
  19353.  all effects specified by POSIX.2 resulting from the invocation of the
  19354.  regular built-in or function (interaction with the environment,
  19355.  variables, traps, etc.) are identical to those resulting from the
  19356.  invocation of an executable file.
  19357.  
  19358.  Example:  Consider three versions of the ls utility:
  19359.  
  19360.      - The application includes a shell function named ls.
  19361.  
  19362.      - The user writes her own utility named ls and puts it in /hsa/bin.
  19363.  
  19364.      - The example implementation provides ls as a regular shell built-in
  19365.        that will be invoked (either by the shell or directly by _e_x_e_c) when
  19366.        the path search reaches the directory /posix/bin.
  19367.  
  19368.  If PATH=/posix/bin, various invocations yield different versions of ls:
  19369.  
  19370.                      Invocation                        Version of ls
  19371.    _______________________________________________   __________________
  19372.    ls (from within application script)               (1) function
  19373.    command ls (from within application script)       (3) built-in
  19374.    ls (from within makefile called by application)   (3) built-in
  19375.    system("ls")                                      (3) built-in
  19376.    PATH="/hsa/bin:$PATH" ls                          (2) user's version
  19377.  
  19378.  After the _e_x_e_c_v_e() failure described, the shell normally executes the
  19379.  file as a shell script.  Some implementations, however, attempt to detect
  19380.  whether the file is actually a script and not an executable from some
  19381.  other architecture.  The method used by the KornShell is allowed by the
  19382.  text that indicates nontext files may be bypassed.
  19383.  
  19384.  END_RATIONALE
  19385.  
  19386.  
  19387.  3.9.2  Pipelines
  19388.  
  19389.  A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by the control
  19390.  operator |.  The standard output of all but the last command shall be
  19391.  connected to the standard input of the next command.
  19392.  
  19393.  
  19394.  
  19395.                Copyright c 1991 IEEE.  All rights reserved.
  19396.       This is an unapproved IEEE Standards Draft, subject to change.
  19397.  
  19398.  
  19399.  
  19400.  
  19401.  
  19402.  264                                              3 Shell Command Language
  19403.  
  19404.  
  19405.  
  19406.  
  19407.  
  19408.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  19409.  
  19410.  The format for a pipeline is:
  19411.  
  19412.        [!] _c_o_m_m_a_n_d_1 [ | _c_o_m_m_a_n_d_2 ...]
  19413.  
  19414.  The standard output of _c_o_m_m_a_n_d_1 shall be connected to the standard input
  19415.  of _c_o_m_m_a_n_d_2. The standard input, standard output, or both of a command
  19416.  shall be considered to be assigned by the pipeline before any redirection
  19417.  specified by redirection operators that are part of the command (see
  19418.  3.7).
  19419.  
  19420.  If the pipeline is not in the background (see 3.9.3.1), the shell shall
  19421.  wait for the last command specified in the pipeline to complete, and may
  19422.  also wait for all commands to complete.
  19423.  
  19424.  _E_x_i_t__S_t_a_t_u_s
  19425.  
  19426.  If the reserved word ! does not precede the pipeline, the exit status
  19427.  shall be the exit status of the last command specified in the pipeline.
  19428.  Otherwise, the exit status is the logical NOT of the exit status of the
  19429.  last command.  That is, if the last command returns zero, the exit status
  19430.  shall be 1; if the last command returns greater than zero, the exit
  19431.  status is zero.
  19432.  
  19433.  BEGIN_RATIONALE
  19434.  
  19435.  
  19436.  3.9.2.1  Pipelines Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  19437.  
  19438.  Because pipeline assignment of standard input or standard output or both
  19439.  takes place before redirection, it can be modified by redirection.  For
  19440.  example:
  19441.  
  19442.        $ command1 2>&1 | command2
  19443.  
  19444.  sends both the standard output and standard error of command1 to the
  19445.  standard input of command2.
  19446.  
  19447.  The reserved word ! was added to allow more flexible testing using AND
  19448.  and OR lists.
  19449.  
  19450.  It was suggested that it would be better to return a nonzero value if any
  19451.  command in the pipeline terminates with nonzero status (perhaps the
  19452.  bitwise OR of all return values).  However, the choice of the last-
  19453.  specified command semantics are historical practice and would cause
  19454.  application breakage if changed.  An example of historical (and POSIX.2)
  19455.  behavior:
  19456.  
  19457.  
  19458.  
  19459.  
  19460.  
  19461.                Copyright c 1991 IEEE.  All rights reserved.
  19462.       This is an unapproved IEEE Standards Draft, subject to change.
  19463.  
  19464.  
  19465.  
  19466.  
  19467.  
  19468.  3.9 Shell Commands                                                    265
  19469.  
  19470.  
  19471.  
  19472.  
  19473.  
  19474.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  19475.  
  19476.        $ sleep 5 | (exit 4)
  19477.        $ echo $?
  19478.        4
  19479.        $ (exit 4) | sleep 5                                                 1
  19480.        $ echo $?                                                            1
  19481.        0                                                                    1
  19482.  
  19483.  END_RATIONALE
  19484.  
  19485.  
  19486.  3.9.3  Lists
  19487.  
  19488.  An _A_N_D-_O_R-_l_i_s_t is a sequence of one or more pipelines separated by the
  19489.  operators
  19490.  
  19491.        &&    ||
  19492.  
  19493.  A _l_i_s_t is a sequence of one or more AND-OR-lists separated by the
  19494.  operators
  19495.  
  19496.        ;    &
  19497.  
  19498.  and optionally terminated by
  19499.  
  19500.        ;    &    <newline>
  19501.  
  19502.  The operators && and || shall have equal precedence and shall be
  19503.  evaluated from beginning to end.
  19504.  
  19505.  A ; or <newline> terminator shall cause the preceding AND-OR-list to be
  19506.  executed sequentially; an & shall cause asynchronous execution of the
  19507.  preceding AND-OR-list.
  19508.  
  19509.  The term _c_o_m_p_o_u_n_d-_l_i_s_t is derived from the grammar in 3.10; it is
  19510.  equivalent to a sequence of _l_i_s_t_s, separated by <newline>s, that can be
  19511.  preceded or followed by an arbitrary number of <newline>s.
  19512.  
  19513.  BEGIN_RATIONALE
  19514.  
  19515.  3.9.3.0.1  Lists Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  19516.  
  19517.  The equal precedence of && and || is historical practice.  The developers
  19518.  of the standard evaluated the model used more frequently in high level
  19519.  programming languages, such as C, to allow the shell logical operators to
  19520.  be used for complex expressions in an unambiguous way, but could not in
  19521.  the end allow existing scripts to break in the subtle way unequal
  19522.  precedence might cause.  Some arguments were posed concerning the { } or
  19523.  ( ) groupings that are required historically.  There are some
  19524.  disadvantages to these groupings:
  19525.  
  19526.  
  19527.                Copyright c 1991 IEEE.  All rights reserved.
  19528.       This is an unapproved IEEE Standards Draft, subject to change.
  19529.  
  19530.  
  19531.  
  19532.  
  19533.  
  19534.  266                                              3 Shell Command Language
  19535.  
  19536.  
  19537.  
  19538.  
  19539.  
  19540.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  19541.  
  19542.      - The ( ) can be expensive, as they spawn other processes on some
  19543.        systems.  This performance concern is primarily an implementation
  19544.        issue.
  19545.  
  19546.      - The { } braces are not operators (they are reserved words) and
  19547.        require a trailing space after each {, and a semicolon before each
  19548.        }.  Most programmers (and certainly interactive users) have avoided
  19549.        braces as grouping constructs because of the irritating syntax
  19550.        required.  Braces were not changed to operators because that would
  19551.        generate compatibility issues even greater than the precedence
  19552.        question; braces appear outside the context of a keyword in many
  19553.        shell scripts.
  19554.  
  19555.  An example reiterates the precedence of the lists as they associate from   1
  19556.  beginning to end.  Both of the following commands write solely bar to      1
  19557.  standard output:                                                           1
  19558.  
  19559.        false && echo foo || echo bar                                        1
  19560.        true || echo foo && echo bar                                         1
  19561.  
  19562.  The following is an example that illustrates <newline>s in compound-
  19563.  lists:
  19564.  
  19565.        while
  19566.                # a couple of newlines
  19567.  
  19568.                # a list
  19569.                date && who || ls; cat file
  19570.                # a couple of newlines
  19571.  
  19572.                # another list
  19573.                wc file > output & true
  19574.  
  19575.        do
  19576.                # 2 lists
  19577.                ls
  19578.                cat file
  19579.        done
  19580.  
  19581.  END_RATIONALE
  19582.  
  19583.  
  19584.  3.9.3.1  Asynchronous Lists
  19585.  
  19586.  If a command is terminated by the control operator ampersand (&), the
  19587.  shell shall execute the command asynchronously in a subshell.  This means
  19588.  that the shell shall not wait for the command to finish before executing
  19589.  the next command.
  19590.  
  19591.  
  19592.  
  19593.                Copyright c 1991 IEEE.  All rights reserved.
  19594.       This is an unapproved IEEE Standards Draft, subject to change.
  19595.  
  19596.  
  19597.  
  19598.  
  19599.  
  19600.  3.9 Shell Commands                                                    267
  19601.  
  19602.  
  19603.  
  19604.  
  19605.  
  19606.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  19607.  
  19608.  The format for running a command in background is:
  19609.  
  19610.        _c_o_m_m_a_n_d_1 & [_c_o_m_m_a_n_d_2 & ...]
  19611.  
  19612.  The standard input for an asynchronous list, before any explicit
  19613.  redirections are performed, shall be considered to be assigned to a file
  19614.  that has the same properties as /dev/null.  If it is an interactive
  19615.  shell, this need not happen.  In all cases, explicit redirection of
  19616.  standard input shall override this activity.
  19617.  
  19618.  When an element of an asynchronous list (the portion of the list ended by  1
  19619.  an ampersand, such as _c_o_m_m_a_n_d_1, above) is started by the shell, the        1
  19620.  process ID of the last command in the asynchronous list element shall      1
  19621.  become known in the current shell execution environment; see 3.12.  This
  19622.  process ID shall remain known until:
  19623.  
  19624.      - The command terminates and the application waits for the process
  19625.        ID, or
  19626.  
  19627.      - Another asynchronous list is invoked before $! (corresponding to     1
  19628.        the previous asynchronous list) is expanded in the current           1
  19629.        execution environment.                                               1
  19630.  
  19631.  The implementation need not retain more than the {CHILD_MAX} most recent   1
  19632.  entries in its list of known process IDs in the current shell execution    1
  19633.  environment.                                                               1
  19634.  
  19635.  _E_x_i_t__S_t_a_t_u_s
  19636.  
  19637.  The exit status of an asynchronous list shall be zero.
  19638.  
  19639.  BEGIN_RATIONALE
  19640.  
  19641.  3.9.3.1.1  Asynchronous Lists Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  19642.             _P_1_0_0_3._2)
  19643.  
  19644.  The grammar treats a construct such as                                     1
  19645.  
  19646.        foo & bar & bam &                                                    1
  19647.  
  19648.  as one ``asynchronous list,'' but since the status of each element is      1
  19649.  tracked by the shell, the term ``element of an asynchronous list'' was     1
  19650.  introduced to identify just one of the foo, bar, bam portions of the       1
  19651.  overall list.                                                              1
  19652.  
  19653.  Unless the implementation has an internal limit, such as {CHILD_MAX}, on   1
  19654.  the retained process IDs, it would require unbounded memory for the        1
  19655.  following example:                                                         1
  19656.  
  19657.  
  19658.  
  19659.                Copyright c 1991 IEEE.  All rights reserved.
  19660.       This is an unapproved IEEE Standards Draft, subject to change.
  19661.  
  19662.  
  19663.  
  19664.  
  19665.  
  19666.  268                                              3 Shell Command Language
  19667.  
  19668.  
  19669.  
  19670.  
  19671.  
  19672.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  19673.  
  19674.        while true                                                           1
  19675.        do      foo & echo $!                                                1
  19676.        done                                                                 1
  19677.  
  19678.  The treatment of the signals SIGINT and SIGQUIT with asynchronous lists
  19679.  is described in 3.11.
  19680.  
  19681.  Since the connection of the input to the equivalent of /dev/null is
  19682.  considered to occur before redirections, the following script would
  19683.  produce no output:
  19684.  
  19685.        exec < /etc/passwd
  19686.        cat <&0 &
  19687.        wait
  19688.  
  19689.  END_RATIONALE
  19690.  
  19691.  
  19692.  3.9.3.2  Sequential Lists
  19693.  
  19694.  Commands that are separated by a semicolon (;) shall be executed
  19695.  sequentially.
  19696.  
  19697.  The format for executing commands sequentially is:
  19698.  
  19699.        _c_o_m_m_a_n_d_1 [; _c_o_m_m_a_n_d_2] ...
  19700.  
  19701.  Each command shall be expanded and executed in the order specified.
  19702.  
  19703.  _E_x_i_t__S_t_a_t_u_s
  19704.  
  19705.  The exit status of a sequential list shall be the exit status of the last
  19706.  command in the list.
  19707.  
  19708.  3.9.3.3  AND Lists
  19709.  
  19710.  The control operator && shall denote an AND list.  The format is:
  19711.  
  19712.        _c_o_m_m_a_n_d_1 [ && _c_o_m_m_a_n_d_2] ...
  19713.  
  19714.  First _c_o_m_m_a_n_d_1 is executed.  If its exit status is zero, _c_o_m_m_a_n_d_2 is
  19715.  executed, and so on until a command has a nonzero exit status or there
  19716.  are no more commands left to execute.  The commands shall be expanded
  19717.  only if they are executed.
  19718.  
  19719.  _E_x_i_t__S_t_a_t_u_s
  19720.  
  19721.  The exit status of an AND list shall be the exit status of the last
  19722.  command that is executed in the list.
  19723.  
  19724.  
  19725.                Copyright c 1991 IEEE.  All rights reserved.
  19726.       This is an unapproved IEEE Standards Draft, subject to change.
  19727.  
  19728.  
  19729.  
  19730.  
  19731.  
  19732.  3.9 Shell Commands                                                    269
  19733.  
  19734.  
  19735.  
  19736.  
  19737.  
  19738.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  19739.  
  19740.  3.9.3.4  OR Lists
  19741.  
  19742.  The control operator || shall denote an OR List.  The format is:
  19743.  
  19744.        _c_o_m_m_a_n_d_1 [ || _c_o_m_m_a_n_d_2] ...
  19745.  
  19746.  First, _c_o_m_m_a_n_d_1 is executed.  If its exit status is nonzero, _c_o_m_m_a_n_d_2 is
  19747.  executed, and so on until a command has a zero exit status or there are
  19748.  no more commands left to execute.
  19749.  
  19750.  _E_x_i_t__S_t_a_t_u_s
  19751.  
  19752.  The exit status of an OR list shall be the exit status of the last
  19753.  command that is executed in the list.
  19754.  
  19755.  
  19756.  3.9.4  Compound Commands
  19757.  
  19758.  The shell has several programming constructs that are _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d_s,
  19759.  which provide control flow for commands.  Each of these compound commands
  19760.  has a reserved word or control operator at the beginning, and a
  19761.  corresponding terminator reserved word or operator at the end.  In
  19762.  addition, each can be followed by redirections on the same line as the
  19763.  terminator.  Each redirection shall apply to all the commands within the
  19764.  compound command that do not explicitly override that redirection.
  19765.  
  19766.  
  19767.  3.9.4.1  Grouping Commands
  19768.  
  19769.  The format for grouping commands is as follows:
  19770.  
  19771.     (_c_o_m_p_o_u_n_d-_l_i_s_t)       Execute _c_o_m_p_o_u_n_d-_l_i_s_t in a subshell environment;
  19772.                           see 3.12.  Variable assignments and built-in
  19773.                           commands that affect the environment shall not
  19774.                           remain in effect after the list finishes.
  19775.  
  19776.     { _c_o_m_p_o_u_n_d-_l_i_s_t;}     Execute _c_o_m_p_o_u_n_d-_l_i_s_t in the current process
  19777.                           environment.
  19778.  
  19779.  _E_x_i_t__S_t_a_t_u_s
  19780.  
  19781.  The exit status of a grouping command shall be the exit status of _l_i_s_t.
  19782.  
  19783.  BEGIN_RATIONALE
  19784.  
  19785.  
  19786.  
  19787.  
  19788.  
  19789.  
  19790.  
  19791.                Copyright c 1991 IEEE.  All rights reserved.
  19792.       This is an unapproved IEEE Standards Draft, subject to change.
  19793.  
  19794.  
  19795.  
  19796.  
  19797.  
  19798.  270                                              3 Shell Command Language
  19799.  
  19800.  
  19801.  
  19802.  
  19803.  
  19804.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  19805.  
  19806.  3.9.4.1.1  Grouping Commands Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  19807.             _P_1_0_0_3._2)
  19808.  
  19809.  The semicolon shown in { _c_o_m_p_o_u_n_d-_l_i_s_t;} is an example of a control
  19810.  operator delimiting the } reserved word.  Other delimiters are possible,
  19811.  as shown in 3.10; <newline> is frequently used.
  19812.  
  19813.  A proposal was made to use the <do-done> construct in all cases where
  19814.  command grouping performed in the current process environment is
  19815.  performed, identifying it as a construct for the grouping commands, as
  19816.  well as for shell functions.  This was not included because the shell
  19817.  already has a grouping construct for this purpose ({ }), and changing it
  19818.  would have been counter-productive.
  19819.  
  19820.  END_RATIONALE
  19821.  
  19822.  
  19823.  3.9.4.2  for Loop
  19824.  
  19825.  The for loop shall execute a sequence of commands for each member in a
  19826.  list of _i_t_e_m_s.  The for loop requires that the _r_e_s_e_r_v_e_d _w_o_r_d_s do and done
  19827.  be used to delimit the sequence of commands.
  19828.  
  19829.  The format for the for loop is as follows.
  19830.  
  19831.        for _n_a_m_e [ in _w_o_r_d ... ]
  19832.        do
  19833.                _c_o_m_p_o_u_n_d-_l_i_s_t
  19834.        done
  19835.  
  19836.  First, the list of words following in shall be expanded to generate a
  19837.  list of items.  Then, the variable _n_a_m_e shall be set to each item, in
  19838.  turn, and the _c_o_m_p_o_u_n_d-_l_i_s_t executed each time.  If no items result from
  19839.  the expansion, the _c_o_m_p_o_u_n_d-_l_i_s_t shall not be executed.  Omitting
  19840.  
  19841.        in _w_o_r_d ...
  19842.  
  19843.  is equivalent to
  19844.  
  19845.        in "$@"
  19846.  
  19847.  _E_x_i_t__S_t_a_t_u_s
  19848.  
  19849.  The exit status of a for command shall be the exit status of the last
  19850.  command that executes.  If there are no items, the exit status shall be
  19851.  zero.
  19852.  
  19853.  BEGIN_RATIONALE
  19854.  
  19855.  
  19856.  
  19857.                Copyright c 1991 IEEE.  All rights reserved.
  19858.       This is an unapproved IEEE Standards Draft, subject to change.
  19859.  
  19860.  
  19861.  
  19862.  
  19863.  
  19864.  3.9 Shell Commands                                                    271
  19865.  
  19866.  
  19867.  
  19868.  
  19869.  
  19870.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  19871.  
  19872.  3.9.4.2.1  for Loop Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  19873.  
  19874.  The format is shown with generous usage of <newline>s.  See the grammar
  19875.  in 3.10 for a precise description of where <newline>s and semicolons can
  19876.  be interchanged.
  19877.  
  19878.  Some historical implementations support { and } as substitutes for do and
  19879.  done.  The working group chose to omit them, even as an obsolescent
  19880.  feature.  (Note that these substitutes were only for the for command; the
  19881.  while and until commands could not use them historically, because they     1
  19882.  are followed by compound-lists that may contain {...} grouping commands    1
  19883.  themselves                                                                 1
  19884.  
  19885.  The reserved word pair do ...  done was selected rather than do ...  od
  19886.  (which would have matched the spirit of if ...  fi and case ...  esac)
  19887.  because od is a commonly-used utility name and this would have been an
  19888.  unacceptable choice.
  19889.  
  19890.  END_RATIONALE
  19891.  
  19892.  
  19893.  3.9.4.3  case Conditional Construct
  19894.  
  19895.  The conditional construct case shall execute the _c_o_m_p_o_u_n_d-_l_i_s_t
  19896.  corresponding to the first one of several _p_a_t_t_e_r_n_s (see 3.13) that is
  19897.  matched by the string resulting from the tilde expansion, parameter
  19898.  expansion, command substitution, and arithmetic expansion and quote
  19899.  removal of the given word.  The reserved word in shall denote the
  19900.  beginning of the patterns to be matched.  Multiple patterns with the same
  19901.  _c_o_m_p_o_u_n_d-_l_i_s_t are delimited by the | symbol.  The control operator )
  19902.  terminates a list of patterns corresponding to a given action.  The
  19903.  _c_o_m_p_o_u_n_d-_l_i_s_t for each list of patterns is terminated with ;;.  The case
  19904.  construct terminates with the reserved word esac (case reversed).
  19905.  
  19906.  The format for the case construct is as follows.
  19907.  
  19908.        case _w_o_r_d in
  19909.             [(]_p_a_t_t_e_r_n_1)   _c_o_m_p_o_u_n_d-_l_i_s_t;;                                  2
  19910.             [(]_p_a_t_t_e_r_n_2|_p_a_t_t_e_r_n_3)_c_o_m_p_o_u_n_d-_l_i_s_t;;                            2
  19911.             ...
  19912.        esac
  19913.  
  19914.  The ;; is optional for the last _c_o_m_p_o_u_n_d-_l_i_s_t.
  19915.  
  19916.  Each pattern in a pattern list shall be expanded and compared against the
  19917.  expansion of _w_o_r_d.  After the first match, no more patterns shall be
  19918.  expanded, and the _c_o_m_p_o_u_n_d-_l_i_s_t shall be executed.  The order of
  19919.  expansion and comparing of patterns in a multiple pattern list is
  19920.  unspecified.
  19921.  
  19922.  
  19923.                Copyright c 1991 IEEE.  All rights reserved.
  19924.       This is an unapproved IEEE Standards Draft, subject to change.
  19925.  
  19926.  
  19927.  
  19928.  
  19929.  
  19930.  272                                              3 Shell Command Language
  19931.  
  19932.  
  19933.  
  19934.  
  19935.  
  19936.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  19937.  
  19938.  _E_x_i_t__S_t_a_t_u_s
  19939.  
  19940.  The exit status of case is zero if no patterns are matched.  Otherwise,
  19941.  the exit status shall be the exit status of the last command executed in
  19942.  the _c_o_m_p_o_u_n_d-_l_i_s_t.
  19943.  
  19944.  BEGIN_RATIONALE
  19945.  
  19946.  3.9.4.3.1  case Conditional Construct Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  19947.             _p_a_r_t _o_f _P_1_0_0_3._2)
  19948.  
  19949.  An optional open-parenthesis before _p_a_t_t_e_r_n was added to allow numerous    2
  19950.  historical KornShell scripts to conform.  At one time, using the leading   2
  19951.  parenthesis was required if the case statement were to be embedded within  2
  19952.  a $( ) command substitution; this is no longer the case with the POSIX     2
  19953.  shell.  Nevertheless, many existing scripts use the open-parenthesis, if   2
  19954.  only because it makes matching-parenthesis searching easier in vi and      2
  19955.  other editors.  This is a relatively simple implementation change that is  2
  19956.  fully upward compatible for all scripts.                                   2
  19957.  
  19958.  Consideration was given to requiring break inside the _c_o_m_p_o_u_n_d-_l_i_s_t to
  19959.  prevent falling through to the next pattern action list.  This was
  19960.  rejected as being nonexisting practice.  An interesting undocumented
  19961.  feature of the KornShell is that using ;& instead of ;; as a terminator
  19962.  causes the exact opposite behavior--the flow of control continues with
  19963.  the next _c_o_m_p_o_u_n_d-_l_i_s_t.
  19964.  
  19965.  The pattern "*", given as the last pattern in a case construct, is
  19966.  equivalent to the default case in a C-language switch statement
  19967.  
  19968.  The grammar shows that reserved words can be used as patterns, even if
  19969.  one is the first word on a line.  Obviously, the reserved word esac
  19970.  cannot be used in this manner.
  19971.  
  19972.  END_RATIONALE
  19973.  
  19974.  
  19975.  3.9.4.4  if Conditional Construct
  19976.  
  19977.  The if command shall execute a _c_o_m_p_o_u_n_d-_l_i_s_t and use its exit status to
  19978.  determine whether to execute another _c_o_m_p_o_u_n_d-_l_i_s_t.
  19979.  
  19980.  The format for the if construct is as follows.
  19981.  
  19982.  
  19983.  
  19984.  
  19985.  
  19986.  
  19987.  
  19988.  
  19989.                Copyright c 1991 IEEE.  All rights reserved.
  19990.       This is an unapproved IEEE Standards Draft, subject to change.
  19991.  
  19992.  
  19993.  
  19994.  
  19995.  
  19996.  3.9 Shell Commands                                                    273
  19997.  
  19998.  
  19999.  
  20000.  
  20001.  
  20002.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  20003.  
  20004.        if _c_o_m_p_o_u_n_d-_l_i_s_t
  20005.        _t_h_e_n
  20006.                _c_o_m_p_o_u_n_d-_l_i_s_t
  20007.        [elif _c_o_m_p_o_u_n_d-_l_i_s_t
  20008.        _t_h_e_n
  20009.                _c_o_m_p_o_u_n_d-_l_i_s_t] ...
  20010.        [else
  20011.                _c_o_m_p_o_u_n_d-_l_i_s_t]
  20012.        fi
  20013.  
  20014.  The if _c_o_m_p_o_u_n_d-_l_i_s_t is executed; if its exit status is zero, the then
  20015.  _c_o_m_p_o_u_n_d-_l_i_s_t is executed and the command shall complete.  Otherwise,
  20016.  each elif _c_o_m_p_o_u_n_d-_l_i_s_t is executed, in turn, and if its exit status is
  20017.  zero, the then _c_o_m_p_o_u_n_d-_l_i_s_t is executed and the command shall complete.
  20018.  Otherwise, the else _c_o_m_p_o_u_n_d-_l_i_s_t is executed.
  20019.  
  20020.  _E_x_i_t__S_t_a_t_u_s
  20021.  
  20022.  The exit status of the if command shall be the exit status of the then or
  20023.  else _c_o_m_p_o_u_n_d-_l_i_s_t that was executed, or zero, if none was executed.
  20024.  
  20025.  BEGIN_RATIONALE
  20026.  
  20027.  3.9.4.4.1  if Conditional Construct Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  20028.             _p_a_r_t _o_f _P_1_0_0_3._2)
  20029.  
  20030.  The precise format for the command syntax is described in 3.10.
  20031.  
  20032.  END_RATIONALE
  20033.  
  20034.  
  20035.  3.9.4.5  while Loop
  20036.  
  20037.  The while loop continuously shall execute one _c_o_m_p_o_u_n_d-_l_i_s_t as long as
  20038.  another _c_o_m_p_o_u_n_d-_l_i_s_t has a zero exit status.
  20039.  
  20040.  The format of the while loop is as follows
  20041.  
  20042.        while _c_o_m_p_o_u_n_d-_l_i_s_t-_1
  20043.        _d_o
  20044.                _c_o_m_p_o_u_n_d-_l_i_s_t-_2
  20045.        _d_o_n_e
  20046.  
  20047.  The _c_o_m_p_o_u_n_d-_l_i_s_t-_1 shall be executed, and if it has a nonzero exit
  20048.  status, the while command shall complete.  Otherwise, the _c_o_m_p_o_u_n_d-_l_i_s_t-_2
  20049.  shall be executed, and the process shall repeat.
  20050.  
  20051.  
  20052.  
  20053.  
  20054.  
  20055.                Copyright c 1991 IEEE.  All rights reserved.
  20056.       This is an unapproved IEEE Standards Draft, subject to change.
  20057.  
  20058.  
  20059.  
  20060.  
  20061.  
  20062.  274                                              3 Shell Command Language
  20063.  
  20064.  
  20065.  
  20066.  
  20067.  
  20068.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  20069.  
  20070.  _E_x_i_t__S_t_a_t_u_s
  20071.  
  20072.  The exit status of the while loop shall be the exit status of the last
  20073.  _c_o_m_p_o_u_n_d-_l_i_s_t-_2 executed, or zero if none was executed.
  20074.  
  20075.  BEGIN_RATIONALE
  20076.  
  20077.  3.9.4.5.1  while Loop Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  20078.             _P_1_0_0_3._2)
  20079.  
  20080.  The precise format for the command syntax is described in 3.10.
  20081.  
  20082.  END_RATIONALE
  20083.  
  20084.  
  20085.  3.9.4.6  until Loop
  20086.  
  20087.  The until loop continuously shall execute one _c_o_m_p_o_u_n_d-_l_i_s_t as long as
  20088.  another _c_o_m_p_o_u_n_d-_l_i_s_t has a nonzero exit status.
  20089.  
  20090.  The format of the until loop is as follows
  20091.  
  20092.        until _c_o_m_p_o_u_n_d-_l_i_s_t-_1
  20093.        _d_o
  20094.                _c_o_m_p_o_u_n_d-_l_i_s_t-_2
  20095.        _d_o_n_e
  20096.  
  20097.  The _c_o_m_p_o_u_n_d-_l_i_s_t-_1 shall be executed, and if it has a zero exit status,
  20098.  the until command shall complete.  Otherwise, the _c_o_m_p_o_u_n_d-_l_i_s_t-_2 shall
  20099.  be executed, and the process shall repeat.
  20100.  
  20101.  _E_x_i_t__S_t_a_t_u_s
  20102.  
  20103.  The exit status of the until loop shall be the exit status of the last
  20104.  _c_o_m_p_o_u_n_d-_l_i_s_t-_2 executed, or zero if none was executed.
  20105.  
  20106.  BEGIN_RATIONALE
  20107.  
  20108.  3.9.4.6.1  until Loop Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  20109.             _P_1_0_0_3._2)
  20110.  
  20111.  The precise format for the command syntax is described in 3.10.
  20112.  
  20113.  END_RATIONALE
  20114.  
  20115.  
  20116.  
  20117.  
  20118.  
  20119.  
  20120.  
  20121.                Copyright c 1991 IEEE.  All rights reserved.
  20122.       This is an unapproved IEEE Standards Draft, subject to change.
  20123.  
  20124.  
  20125.  
  20126.  
  20127.  
  20128.  3.9 Shell Commands                                                    275
  20129.  
  20130.  
  20131.  
  20132.  
  20133.  
  20134.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  20135.  
  20136.  3.9.5  Function Definition Command
  20137.  
  20138.  A function is a user-defined name that is used as a simple command to
  20139.  call a compound command with new positional parameters.  A function is
  20140.  defined with a _f_u_n_c_t_i_o_n _d_e_f_i_n_i_t_i_o_n _c_o_m_m_a_n_d.
  20141.  
  20142.  The format of a function definition command is as follows:
  20143.  
  20144.        _f_n_a_m_e() _c_o_m_p_o_u_n_d-_c_o_m_m_a_n_d [_i_o-_r_e_d_i_r_e_c_t ...]
  20145.  
  20146.  The function is named _f_n_a_m_e; it shall be a name (see 3.1.5).  An           1
  20147.  implementation may allow other characters in a function name as an         1
  20148.  extension.  The implementation shall maintain separate namespaces for      1
  20149.  functions and variables.
  20150.  
  20151.  The argument _c_o_m_p_o_u_n_d-_c_o_m_m_a_n_d represents a compound command, as described
  20152.  in 3.9.4.
  20153.  
  20154.  When the function is declared, none of the expansions in 3.6 shall be
  20155.  performed on the text in _c_o_m_p_o_u_n_d-_c_o_m_m_a_n_d or _i_o-_r_e_d_i_r_e_c_t; all expansions
  20156.  shall be performed as normal each time the function is called.
  20157.  Similarly, the optional _i_o-_r_e_d_i_r_e_c_t redirections and any variable
  20158.  assignments within _c_o_m_p_o_u_n_d-_c_o_m_m_a_n_d shall be performed during the
  20159.  execution of the function itself, not the function definition.  See 3.8.1
  20160.  for the consequences of failures of these operations on interactive and
  20161.  noninteractive shells.
  20162.  
  20163.  When a function is executed, it shall have the syntax-error and
  20164.  variable-assignment properties described for special built-in utilities,
  20165.  in the enumerated list at the beginning of 3.14.
  20166.  
  20167.  The _c_o_m_p_o_u_n_d-_c_o_m_m_a_n_d shall be executed whenever the function name is
  20168.  specified as the name of a simple command (see 3.9.1.1).  The operands to
  20169.  the command temporarily shall become the positional parameters during the
  20170.  execution of the _c_o_m_p_o_u_n_d-_c_o_m_m_a_n_d; the special parameter # shall also be
  20171.  changed to reflect the number of operands.  The special parameter 0 shall
  20172.  be unchanged.  When the function completes, the values of the positional
  20173.  parameters and the special parameter # shall be restored to the values
  20174.  they had before the function was executed.  If the special built-in
  20175.  return is executed in the _c_o_m_p_o_u_n_d-_c_o_m_m_a_n_d, the function shall complete
  20176.  and execution shall resume with the next command after the function call.
  20177.  
  20178.  _E_x_i_t__S_t_a_t_u_s
  20179.  
  20180.  The exit status of a function definition shall be zero if the function
  20181.  was declared successfully; otherwise, it shall be greater than zero.  The
  20182.  exit status of a function invocation shall be the exit status of the last
  20183.  command executed by the function.
  20184.  
  20185.  
  20186.  
  20187.                Copyright c 1991 IEEE.  All rights reserved.
  20188.       This is an unapproved IEEE Standards Draft, subject to change.
  20189.  
  20190.  
  20191.  
  20192.  
  20193.  
  20194.  276                                              3 Shell Command Language
  20195.  
  20196.  
  20197.  
  20198.  
  20199.  
  20200.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  20201.  
  20202.  BEGIN_RATIONALE
  20203.  
  20204.  
  20205.  3.9.5.1  Function Definition Command Rationale (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  20206.           _p_a_r_t _o_f _P_1_0_0_3._2)
  20207.  
  20208.  The description of functions in Draft 8 was based on the notion that
  20209.  functions should behave like miniature shell scripts; that is, except for
  20210.  sharing variables, most elements of an execution environment should
  20211.  behave as if it were a new execution environment, and changes to these
  20212.  should be local to the function.  For example, traps and options should
  20213.  be reset on entry to the function, and any changes to them don't affect
  20214.  the traps or options of the caller.  There were numerous objections to
  20215.  this basic idea, and the opponents asserted that functions were intended
  20216.  to be a convenient mechanism for grouping commonly executed commands that
  20217.  were to be executed in the current execution environment, similar to the
  20218.  execution of the dot special built-in.
  20219.  
  20220.  Opponents also pointed out that the functions described in Draft 8 did
  20221.  not scope everything a new shell script would anyway, such as the current
  20222.  working directory, or umask, but instead picked a few select properties.
  20223.  The basic argument was that if one wanted scoping of the execution
  20224.  environment, the mechanism already exists: put the commands in a new
  20225.  shell script and call it.  All traditional shells that implemented
  20226.  functions, other than the KornShell, have implemented functions that
  20227.  operate in the current execution environment.  Because of this, Draft 9
  20228.  removed any local scoping of traps or options.  Local variables within a
  20229.  function were considered and included in Draft 9 (controlled by the
  20230.  special built-in local), but were removed because they do not fit the
  20231.  simple model developed for the scoping of functions and there was some
  20232.  opposition to adding yet another new special built-in from outside
  20233.  existing practice.  Implementations should reserve the identifier local
  20234.  (as well as typeset, as used in the KornShell) in case this local
  20235.  variable mechanism is adopted in a future version of POSIX.2.
  20236.  
  20237.  A separate issue from the execution environment of a function is the
  20238.  availability of that function to child shells.  A few objectors,
  20239.  including the author of the original Version 7 UNIX system shell,
  20240.  maintained that just as a variable can be shared with child shells by
  20241.  exporting it, so should a function--and so this capability has been added
  20242.  to the standard.  In previous drafts, the export command therefore had a
  20243.  -f flag for exporting functions.  Functions that were exported were to be
  20244.  put into the environment as _n_a_m_e()=_v_a_l_u_e pairs, and upon invocation, the
  20245.  shell would scan the environment for these, and automatically define
  20246.  these functions.  This facility received a lot of balloting opposition
  20247.  and was removed from Draft 11.  Some of the arguments against exportable
  20248.  functions were:
  20249.  
  20250.  
  20251.  
  20252.  
  20253.                Copyright c 1991 IEEE.  All rights reserved.
  20254.       This is an unapproved IEEE Standards Draft, subject to change.
  20255.  
  20256.  
  20257.  
  20258.  
  20259.  
  20260.  3.9 Shell Commands                                                    277
  20261.  
  20262.  
  20263.  
  20264.  
  20265.  
  20266.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  20267.  
  20268.      - There was little existing practice.  The Ninth Edition shell
  20269.        provided them, but there was controversy over how well it worked.
  20270.  
  20271.      - There are numerous security problems associated with functions
  20272.        appearing in a script's environment and overriding standard
  20273.        utilities or the application's own utilities.
  20274.  
  20275.      - There was controversy over requiring make to import functions,
  20276.        where it has historically used an _e_x_e_c function for many of its
  20277.        command line executions.
  20278.  
  20279.      - Functions can be big and the environment is of a limited size.
  20280.        (The counter-argument was that functions are no different than
  20281.        variables in terms of size: there can be big ones, and there can be
  20282.        small ones--and just as one does not export huge variables, one
  20283.        does not export huge functions.  However, this insight might be
  20284.        lost on the average shell-function writer, who typically writes
  20285.        much larger functions than variables.)
  20286.  
  20287.  As far as can be determined, the functions in POSIX.2 match those in
  20288.  System V.  The KornShell has two methods of defining functions:
  20289.  
  20290.        function _f_n_a_m_e { _c_o_m_p_o_u_n_d-_l_i_s_t }
  20291.  
  20292.  and
  20293.  
  20294.        _f_n_a_m_e() { _c_o_m_p_o_u_n_d-_l_i_s_t }
  20295.  
  20296.  The latter uses the same definition as POSIX.2, but differs in semantics,
  20297.  as described previously.  A future edition of the KornShell is planned to
  20298.  align the latter syntax with POSIX and keep the former as-is.
  20299.  
  20300.  The name space for functions is limited to that of a _n_a_m_e because of       1
  20301.  historical practice.  Complications in defining the syntactic rules for    1
  20302.  the function definition command and in dealing with known extensions such  1
  20303.  as the KornShell's @() prevented the name space from being widened to a    1
  20304.  _w_o_r_d, as requested by some balloters.  Using functions to support          1
  20305.  synonyms such as the C-shell's !! and % is thus disallowed to portable     1
  20306.  applications, but acceptable as an extension.  For interactive users, the  1
  20307.  aliasing facilities in the UPE should be adequate for this purpose.  It    1
  20308.  is recognized that the name space for utilities in the file system is      1
  20309.  wider than that currently supported for functions, if the portable         1
  20310.  filename character set guidelines are ignored, but it did not seem useful  1
  20311.  to mandate extensions in systems for so little benefit to portable         1
  20312.  applications.                                                              1
  20313.  
  20314.  The () in the function definition command consists of two operators.
  20315.  Therefore, intermixing <blank>_s with the _f_n_a_m_e, (, and ) is allowed, but
  20316.  unnecessary.
  20317.  
  20318.  
  20319.                Copyright c 1991 IEEE.  All rights reserved.
  20320.       This is an unapproved IEEE Standards Draft, subject to change.
  20321.  
  20322.  
  20323.  
  20324.  
  20325.  
  20326.  278                                              3 Shell Command Language
  20327.  
  20328.  
  20329.  
  20330.  
  20331.  
  20332.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  20333.  
  20334.  An example of how a function definition can be used wherever a simple
  20335.  command is allowed:
  20336.  
  20337.        # If variable i is equal to "yes",
  20338.        # define function foo to be ls -l
  20339.        #
  20340.        [ X$i = Xyes ] && foo() {
  20341.                ls -l
  20342.        }
  20343.  
  20344.  END_RATIONALE
  20345.  
  20346.  
  20347.  
  20348.  3.10  Shell Grammar
  20349.  
  20350.  The following grammar describes the Shell Command Language.  Any
  20351.  discrepancies found between this grammar and the preceding description
  20352.  shall be resolved in favor of this clause.
  20353.  
  20354.  
  20355.  3.10.1  Shell Grammar Lexical Conventions
  20356.  
  20357.  The input language to the shell must be first recognized at the character
  20358.  level.  The resulting tokens shall be classified by their immediate
  20359.  context according to the following rules (applied in order).  These rules
  20360.  are used to determine what a ``token'' that is subject to parsing at the
  20361.  token level is.  The rules for token recognition in 3.3 shall apply.
  20362.  
  20363.      (1)  A <newline> shall be returned as the token identifier NEWLINE.
  20364.  
  20365.      (2)  If the token is an operator, the token identifier for that
  20366.           operator shall result.
  20367.  
  20368.      (3)  If the string consists solely of digits and the delimiter
  20369.           character is one of < or >, the token identifier IO_NUMBER shall
  20370.           be returned.
  20371.  
  20372.      (4)  Otherwise, the token identifier TOKEN shall result.
  20373.  
  20374.  Further distinction on TOKEN is context-dependent.  It may be that the
  20375.  same TOKEN yields WORD, a NAME, an ASSIGNMENT, or one of the reserved
  20376.  words below, dependent upon the context.  Some of the productions in the
  20377.  grammar below are annotated with a rule number from the following list.
  20378.  When a TOKEN is seen where one of those annotated productions could be
  20379.  used to reduce the symbol, the applicable rule shall be applied to
  20380.  convert the token identifier type of the TOKEN to a token identifier
  20381.  acceptable at that point in the grammar.  The reduction shall then
  20382.  proceed based upon the token identifier type yielded by the rule applied.
  20383.  When more than one rule applies, the highest numbered rule shall apply
  20384.  
  20385.                Copyright c 1991 IEEE.  All rights reserved.
  20386.       This is an unapproved IEEE Standards Draft, subject to change.
  20387.  
  20388.  
  20389.  
  20390.  
  20391.  
  20392.  3.10 Shell Grammar                                                    279
  20393.  
  20394.  
  20395.  
  20396.  
  20397.  
  20398.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  20399.  
  20400.  (which in turn may refer to another rule).  [Note that except in rule
  20401.  (7), the presence of an = in the token has no effect.]
  20402.  
  20403.  The WORD tokens shall have the word expansion rules applied to them
  20404.  immediately before the associated command is executed, not at the time
  20405.  the command is parsed.
  20406.  
  20407.  
  20408.  3.10.2  Shell Grammar Rules
  20409.  
  20410.      (1)  [Command Name]
  20411.           When the TOKEN is exactly a reserved word, the token identifier
  20412.           for that reserved word shall result.  Otherwise, the token WORD
  20413.           shall be returned.  Also, if the parser is in any state where     1
  20414.           only a reserved word could be the next correct token, proceed as  1
  20415.           above.                                                            1
  20416.  
  20417.           NOTE:  Because at this point quote marks are retained in the
  20418.           token, quoted strings cannot be recognized as reserved words.
  20419.           This rule also implies that reserved words will not be
  20420.           recognized except in certain positions in the input, such as
  20421.           after a <newline> or semicolon; the grammar presumes that if the
  20422.           reserved word is intended, it will be properly delimited by the
  20423.           user, and does not attempt to reflect that requirement directly.
  20424.           Also note that line joining is done before tokenization, as
  20425.           described in 3.2.1, so escaped newlines are already removed at
  20426.           this point.
  20427.  
  20428.           NOTE:  Rule (1) is not directly referenced in the grammar, but    1
  20429.           is referred to by other rules, or applies globally.               1
  20430.  
  20431.      (2)  [Redirection to/from filename]
  20432.           The expansions specified in 3.7 shall occur.  As specified
  20433.           there, exactly one field can result (or the result is             1
  20434.           unspecified), and there are additional requirements on pathname
  20435.           expansion.
  20436.  
  20437.      (3)  [Redirection from here-document]
  20438.           Quote removal [3.7.4].  shall be applied to the word to           1
  20439.           determine the delimiter that will be used to find the end of the  1
  20440.           here-document that begins after the next <newline>.               1
  20441.  
  20442.      (4)  [Case statement termination]
  20443.           When the TOKEN is exactly the reserved word Esac, the token
  20444.           identifier for Esac shall result.  Otherwise, the token WORD
  20445.           shall be returned.
  20446.  
  20447.      (5)  [NAME in for]
  20448.           When the TOKEN meets the requirements for a name [3.1.5], the
  20449.  
  20450.  
  20451.                Copyright c 1991 IEEE.  All rights reserved.
  20452.       This is an unapproved IEEE Standards Draft, subject to change.
  20453.  
  20454.  
  20455.  
  20456.  
  20457.  
  20458.  280                                              3 Shell Command Language
  20459.  
  20460.  
  20461.  
  20462.  
  20463.  
  20464.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  20465.  
  20466.           token identifier NAME shall result.  Otherwise, the token WORD
  20467.           shall be returned.
  20468.  
  20469.      (6)  [Third word of for and case]
  20470.           When the TOKEN is exactly the reserved word In, the token
  20471.           identifier for In shall result.  Otherwise, the token WORD shall
  20472.           be returned.
  20473.  
  20474.      (7)  [Assignment preceding command name]                               1
  20475.  
  20476.            (a)  [When the first word]
  20477.                 If the TOKEN does not contain the character =, rule (1)
  20478.                 shall be applied.  Otherwise, apply (7)(b).
  20479.  
  20480.            (b)  [Not the first word]
  20481.                 If the TOKEN contains the equals-sign character:
  20482.  
  20483.                  - If it begins with =, the token WORD shall be returned.
  20484.  
  20485.                  - If all the characters preceding = form a valid name
  20486.                    [3.1.5], the token ASSIGNMENT_WORD shall be returned.
  20487.                    (Quoted characters cannot participate in forming a
  20488.                    valid name.)
  20489.  
  20490.                  - Otherwise, it is unspecified whether it is
  20491.                    ASSIGNMENT_WORD or WORD that is returned.
  20492.  
  20493.           Assignment to the NAME shall occur as specified in 3.9.1.
  20494.  
  20495.      (8)  [NAME in function]
  20496.           When the TOKEN is exactly a reserved word, the token identifier
  20497.           for that reserved word shall result.  Otherwise, when the TOKEN
  20498.           meets the requirements for a name [3.1.5], the token identifier
  20499.           NAME shall result.  Otherwise, rule (7) shall apply.
  20500.  
  20501.      (9)  [Body of function]
  20502.           Word expansion and assignment shall never occur, even when
  20503.           required by the rules above, when this rule is being parsed.
  20504.           Each TOKEN that might either be expanded or have assignment
  20505.           applied to it shall instead be returned as a single WORD
  20506.           consisting only of characters that are exactly the token
  20507.           described in 3.3.
  20508.  
  20509.  /*       -------------------------------------------------------
  20510.           The grammar symbols
  20511.           ------------------------------------------------------- */
  20512.  
  20513.  
  20514.  
  20515.  
  20516.  
  20517.                Copyright c 1991 IEEE.  All rights reserved.
  20518.       This is an unapproved IEEE Standards Draft, subject to change.
  20519.  
  20520.  
  20521.  
  20522.  
  20523.  
  20524.  3.10 Shell Grammar                                                    281
  20525.  
  20526.  
  20527.  
  20528.  
  20529.  
  20530.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  20531.  
  20532.  %token   WORD
  20533.  %token   ASSIGNMENT_WORD
  20534.  %token   NAME
  20535.  %token   NEWLINE
  20536.  %token   IO_NUMBER
  20537.  
  20538.  /*       The following are the operators mentioned above.        */
  20539.  
  20540.  %token   AND_IF OR_IF DSEMI
  20541.  /*       '&&'   '||'  ';;'                                        */
  20542.  
  20543.  %token   DLESS DGREAT LESSAND GREATAND LESSGREAT DLESSDASH
  20544.  /*       '<<'  '>>'   '<&'    '>&'     '<>'     '<<-'            */
  20545.  
  20546.  %token   CLOBBER
  20547.  /*       '>|'                                                    */
  20548.  
  20549.  /*       The following are the reserved words                    */
  20550.  
  20551.  %token    If   Then   Else   Elif   Fi   Do   Done
  20552.  /*       'if' 'then' 'else' 'elif' 'fi' 'do' 'done'              */
  20553.  
  20554.  %token    Case   Esac   While   Until   For
  20555.  /*       'case' 'esac' 'while' 'until' 'for'                     */
  20556.  
  20557.  /*       These are reserved words, not operator tokens, and are
  20558.           recognized when reserved words are recognized.          */
  20559.  
  20560.  %token   Lbrace Rbrace Bang
  20561.  /*        '{'    '}'    '!'                                      */
  20562.  
  20563.  %token   In
  20564.  /*       'in'                                                    */
  20565.  
  20566.  /*       -------------------------------------------------------
  20567.           The Grammar
  20568.           ------------------------------------------------------- */
  20569.  
  20570.  %start   complete_command
  20571.  
  20572.  %%
  20573.  
  20574.  complete_command    : list separator
  20575.                      | list                                                 1
  20576.                      ;
  20577.  
  20578.  list                : list separator_op and_or
  20579.  
  20580.  
  20581.  
  20582.  
  20583.                Copyright c 1991 IEEE.  All rights reserved.
  20584.       This is an unapproved IEEE Standards Draft, subject to change.
  20585.  
  20586.  
  20587.  
  20588.  
  20589.  
  20590.  282                                              3 Shell Command Language
  20591.  
  20592.  
  20593.  
  20594.  
  20595.  
  20596.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  20597.  
  20598.                      |                   and_or
  20599.                      ;
  20600.  
  20601.  and_or              :                         pipeline
  20602.                      | and_or AND_IF linebreak pipeline
  20603.                      | and_or OR_IF  linebreak pipeline
  20604.                      ;
  20605.  
  20606.  pipeline            :      pipe_sequence
  20607.                      | Bang pipe_sequence
  20608.                      ;
  20609.  
  20610.  pipe_sequence       :                            command
  20611.                      | pipe_sequence '|' linebreak command
  20612.                      ;
  20613.  
  20614.  command             : simple_command
  20615.                      | compound_command
  20616.                      | compound_command redirect_list
  20617.                      | function_definition
  20618.                      ;
  20619.  
  20620.  compound_command    : brace_group
  20621.                      | subshell
  20622.                      | for_clause
  20623.                      | case_clause
  20624.                      | if_clause
  20625.                      | while_clause
  20626.                      | until_clause
  20627.                      ;
  20628.  
  20629.  subshell            : '(' compound_list ')'
  20630.                      ;
  20631.  
  20632.  compound_list       :              term
  20633.                      | newline_list term
  20634.                      |              term separator
  20635.                      | newline_list term separator
  20636.                      ;
  20637.  
  20638.  term                : term separator and_or
  20639.                      |                and_or
  20640.                      ;
  20641.  
  20642.  for_clause          : For name                            do_group
  20643.                      | For name In wordlist sequential_sep do_group
  20644.                      ;
  20645.  
  20646.  
  20647.  
  20648.  
  20649.                Copyright c 1991 IEEE.  All rights reserved.
  20650.       This is an unapproved IEEE Standards Draft, subject to change.
  20651.  
  20652.  
  20653.  
  20654.  
  20655.  
  20656.  3.10 Shell Grammar                                                    283
  20657.  
  20658.  
  20659.  
  20660.  
  20661.  
  20662.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  20663.  
  20664.  name                : NAME                     /* Apply rule (5) */        2
  20665.                      ;
  20666.  
  20667.  in                  : In                       /* Apply rule (6) */
  20668.                      ;
  20669.  
  20670.  wordlist            : wordlist WORD
  20671.                      |          WORD
  20672.                      ;
  20673.  
  20674.  case_clause         : Case WORD In linebreak case_list Esac
  20675.                      | Case WORD In linebreak           Esac
  20676.                      ;
  20677.  
  20678.  case_list           : case_list case_item
  20679.                      |           case_item
  20680.                      ;
  20681.  
  20682.  case_item           :     pattern ')' linebreak     DSEMI linebreak
  20683.                      |     pattern ')' compound_list DSEMI linebreak
  20684.                      | '(' pattern ')' linebreak     DSEMI linebreak        2
  20685.                      | '(' pattern ')' compound_list DSEMI linebreak        2
  20686.                      ;
  20687.  
  20688.  pattern             :            WORD          /* Apply rule (4) */
  20689.                      | pattern '|' WORD         /* Do not apply rule (4) */ 1
  20690.                      ;
  20691.  
  20692.  if_clause           : If compound_list Then compound_list else_part Fi
  20693.                      | If compound_list Then compound_list           Fi
  20694.                      ;
  20695.  
  20696.  else_part           : Elif compound_list Then else_part
  20697.                      | Else compound_list
  20698.                      ;
  20699.  
  20700.  while_clause        : While compound_list do_group
  20701.                      ;
  20702.  
  20703.  until_clause        : Until compound_list do_group
  20704.                      ;
  20705.  
  20706.  function_definition : fname '(' ')' linebreak function_body
  20707.                      ;
  20708.  
  20709.  function_body       : compound_command                /* Apply rule (9) */
  20710.                      | compound_command redirect_list  /* Apply rule (9) */
  20711.  
  20712.  
  20713.  
  20714.  
  20715.                Copyright c 1991 IEEE.  All rights reserved.
  20716.       This is an unapproved IEEE Standards Draft, subject to change.
  20717.  
  20718.  
  20719.  
  20720.  
  20721.  
  20722.  284                                              3 Shell Command Language
  20723.  
  20724.  
  20725.  
  20726.  
  20727.  
  20728.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  20729.  
  20730.                      ;
  20731.  
  20732.  fname               : NAME                            /* Apply rule (8) */ 2
  20733.                      ;
  20734.  
  20735.  brace_group         : Lbrace compound_list Rbrace
  20736.                      ;
  20737.  
  20738.  do_group            : Do compound_list Done
  20739.                      ;
  20740.  
  20741.  simple_command      : cmd_prefix cmd_word cmd_suffix
  20742.                      | cmd_prefix cmd_word
  20743.                      | cmd_prefix
  20744.                      | cmd_name cmd_suffix
  20745.                      | cmd_name
  20746.                      ;
  20747.  
  20748.  cmd_name            : WORD                   /* Apply rule (7)(a) */
  20749.                      ;
  20750.  
  20751.  cmd_word            : WORD                   /* Apply rule (7)(b) */
  20752.                      ;
  20753.  
  20754.  cmd_prefix          :            io_redirect
  20755.                      | cmd_prefix io_redirect
  20756.                      |            ASSIGNMENT_WORD
  20757.                      | cmd_prefix ASSIGNMENT_WORD
  20758.                      ;
  20759.  
  20760.  cmd_suffix          :            io_redirect
  20761.                      | cmd_suffix io_redirect
  20762.                      |            WORD
  20763.                      | cmd_suffix WORD
  20764.                      ;
  20765.  
  20766.  
  20767.  redirect_list       :               io_redirect
  20768.                      | redirect_list io_redirect
  20769.                      ;
  20770.  
  20771.  io_redirect         :           io_file
  20772.                      | IO_NUMBER io_file
  20773.                      |           io_here
  20774.                      | IO_NUMBER io_here
  20775.                      ;
  20776.  
  20777.  
  20778.  
  20779.  
  20780.  
  20781.                Copyright c 1991 IEEE.  All rights reserved.
  20782.       This is an unapproved IEEE Standards Draft, subject to change.
  20783.  
  20784.  
  20785.  
  20786.  
  20787.  
  20788.  3.10 Shell Grammar                                                    285
  20789.  
  20790.  
  20791.  
  20792.  
  20793.  
  20794.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  20795.  
  20796.  io_file             : '<'       filename
  20797.                      | LESSAND   filename
  20798.                      | '>'       filename
  20799.                      | GREATAND  filename
  20800.                      | DGREAT    filename
  20801.                      | LESSGREAT filename
  20802.                      | CLOBBER   filename
  20803.                      ;
  20804.  
  20805.  filename            : WORD                      /* Apply rule (2) */
  20806.                      ;
  20807.  
  20808.  io_here             : DLESS     here_end
  20809.                      | DLESSDASH here_end
  20810.                      ;
  20811.  
  20812.  here_end            : WORD                      /* Apply rule (3) */
  20813.                      ;
  20814.  
  20815.  newline_list        :              NEWLINE
  20816.                      | newline_list NEWLINE
  20817.                      ;
  20818.  
  20819.  linebreak           : newline_list
  20820.                      | /* empty */
  20821.                      ;
  20822.  
  20823.  separator_op        : '&'
  20824.                      | ';'
  20825.                      ;
  20826.  
  20827.  separator           : separator_op linebreak
  20828.                      | newline_list
  20829.                      ;
  20830.  
  20831.  sequential_sep      : ';' linebreak
  20832.                      | newline_list
  20833.                      ;
  20834.  
  20835.  BEGIN_RATIONALE
  20836.  
  20837.  
  20838.  3.10.3  Shell Grammar Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  20839.          _P_1_0_0_3._2)
  20840.  
  20841.  There are several subtle aspects of this grammar where conventional usage
  20842.  implies rules about the grammar that in fact are not true.
  20843.  
  20844.  
  20845.  
  20846.  
  20847.                Copyright c 1991 IEEE.  All rights reserved.
  20848.       This is an unapproved IEEE Standards Draft, subject to change.
  20849.  
  20850.  
  20851.  
  20852.  
  20853.  
  20854.  286                                              3 Shell Command Language
  20855.  
  20856.  
  20857.  
  20858.  
  20859.  
  20860.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  20861.  
  20862.  For compound_list, only the forms that end in a separator allow a
  20863.  reserved word to be recognized, so usually only a separator can be used    1
  20864.  where a compound list precedes a reserved word (such as Then, Else, Do,
  20865.  and Rbrace.  Explicitly requiring a separator would disallow such valid
  20866.  (if rare) statements as:
  20867.  
  20868.        if (false) then (echo x) else (echo y) fi
  20869.  
  20870.  See the NOTE under special grammar rule (1).
  20871.  
  20872.  Concerning the third sentence of rule (1) (``Also, if the parser ...''):   1
  20873.  
  20874.      - This sentence applies rather narrowly:  when a compound list is      1
  20875.        terminated by some clear delimiter (such as the closing fi of an     1
  20876.        inner if_clause) then it would apply; where the compound list might  1
  20877.        continue (as in after a ;), rule (7a) [and consequently the first    1
  20878.        sentence of rule (1)] would apply.  In many instances the two        1
  20879.        conditions are identical, but this part of rule (1) does not give    1
  20880.        license to treating a WORD as a reserved words unless it is in a     1
  20881.        place where a reserved word must appear.                             1
  20882.  
  20883.      - The statement is equivalent to requiring that when the LR(1)         2
  20884.        lookahead set contains exactly a reserved word, it must be           2
  20885.        recognized if it is present.  (Here ``LR(1)'' refers to the          2
  20886.        theoretical concepts, not to any real parser generator.)             2
  20887.  
  20888.        For example, in the construct below, and when the parser is at the   2
  20889.        point marked with ^, the only next legal token is then (this         2
  20890.        follows directly from the grammar rules).                            2
  20891.  
  20892.              if if....fi then ....  fi                                      2
  20893.                         ^                                                   2
  20894.  
  20895.        At that point, the then must be recognized as a reserved word.       2
  20896.  
  20897.        (Depending on the actual parser generator actually used, ``extra''   2
  20898.        reserved words may be in some lookahead sets.  It does not really    2
  20899.        matter if they are recognized, or even if any possible reserved      2
  20900.        word is recognized in that state, because if it is recognized and    2
  20901.        is not in the (theoretical) LR(1) lookahead set, an error will       2
  20902.        ultimately be detected.  In the example above, if some other         2
  20903.        reserved word (e.g., while) is also recognized, an error will occur  2
  20904.        later.                                                               2
  20905.  
  20906.        This is approximately equivalent to saying that reserved words are   2
  20907.        recognized after other reserved words (because it is after a         2
  20908.        reserved word that this condition will occur), but avoids the        2
  20909.        ``except for...'' list that would be required for case, for, etc.    2
  20910.        (Reserved words are of course recognized anywhere a simple_command   2
  20911.  
  20912.  
  20913.                Copyright c 1991 IEEE.  All rights reserved.
  20914.       This is an unapproved IEEE Standards Draft, subject to change.
  20915.  
  20916.  
  20917.  
  20918.  
  20919.  
  20920.  3.10 Shell Grammar                                                    287
  20921.  
  20922.  
  20923.  
  20924.  
  20925.  
  20926.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  20927.  
  20928.        can appear, as well.  Other rules take care of the special cases of  2
  20929.        nonrecognition, such as rule (4) for case statements.)               2
  20930.  
  20931.  Note that the body of here-documents are handled by Token Recognition
  20932.  (see 3.3) and do not appear in the grammar directly.  (However, the
  20933.  here-document I/O redirection operator is handled as part of the
  20934.  grammar.)
  20935.  
  20936.  The start symbol of the grammar (complete_command) represents either
  20937.  input from the command line or a shell script.  It is repeatedly applied
  20938.  by the interpreter to its input, and represents a single ``chunk'' of
  20939.  that input as seen by the interpreter.                                     1
  20940.  
  20941.  The processing of here-documents is handled as part of token recognition
  20942.  (see 3.3) rather than as part of the grammar.
  20943.  
  20944.  END_RATIONALE
  20945.  
  20946.  
  20947.  
  20948.  3.11  Signals and Error Handling
  20949.  
  20950.  When a command is in an asynchronous list, the shell shall prevent
  20951.  SIGQUIT and SIGINT signals from the keyboard from interrupting the
  20952.  command.  Otherwise, signals shall have the values inherited by the shell
  20953.  from its parent (see also 3.14.13).
  20954.  
  20955.  When a signal for which a trap has been set is received while the shell    1
  20956.  is waiting for the completion of a utility executing a foreground          1
  20957.  command, the trap associated with that signal shall not be executed until  1
  20958.  after the foreground command has completed.  When the shell is waiting,    1
  20959.  by means of the wait utility, for asynchronous commands to complete, the   1
  20960.  reception of a signal for which a trap has been set shall cause the wait   1
  20961.  utility to return immediately with an exit status >128, immediately after  1
  20962.  which the trap associated with that signal shall be taken.                 1
  20963.  
  20964.  If multiple signals are pending for the shell for which there are
  20965.  associated trap actions (see 3.14.13), the order of execution of trap
  20966.  actions is unspecified.
  20967.  
  20968.  
  20969.  
  20970.  
  20971.  
  20972.  
  20973.  
  20974.  
  20975.  
  20976.  
  20977.  
  20978.  
  20979.                Copyright c 1991 IEEE.  All rights reserved.
  20980.       This is an unapproved IEEE Standards Draft, subject to change.
  20981.  
  20982.  
  20983.  
  20984.  
  20985.  
  20986.  288                                              3 Shell Command Language
  20987.  
  20988.  
  20989.  
  20990.  
  20991.  
  20992.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  20993.  
  20994.  3.12  Shell Execution Environment
  20995.  
  20996.  A shell execution environment consists of the following:
  20997.  
  20998.      - Open files inherited upon invocation of the shell, plus open files
  20999.        controlled by exec.
  21000.  
  21001.      - Working Directory as set by cd (see 4.5).
  21002.  
  21003.      - File Creation Mask set by umask (see 4.67).
  21004.  
  21005.      - Current traps set by trap (see 3.14.13).
  21006.  
  21007.      - Shell parameters that are set by variable assignment (see set in
  21008.        3.14.11) or from the POSIX.1 {8} environment inherited by the shell
  21009.        when it begins (see export in 3.14.8).
  21010.  
  21011.      - Shell functions (see 3.9.5.)
  21012.  
  21013.      - Options turned on at invocation or by set.
  21014.  
  21015.      - Process IDs of the last commands in asynchronous lists known to      1
  21016.        this shell environment; see 3.9.3.1.                                 1
  21017.  
  21018.  Utilities other than the special built-ins (see 3.14) shall be invoked in
  21019.  a separate environment that consists of the following.  The initial value
  21020.  of these objects shall be the same as that for the parent shell, except
  21021.  as noted below.
  21022.  
  21023.      - Open files inherited on invocation of the shell, open files
  21024.        controlled by the exec special built-in (see 3.14.6), plus any
  21025.        modifications and additions specified by any redirections to the
  21026.        utility.
  21027.  
  21028.      - Current working directory.
  21029.  
  21030.      - File creation mask.
  21031.  
  21032.      - If the utility is a shell script, traps caught by the shell shall
  21033.        be set to the default values and traps ignored by the shell shall
  21034.        be set to be ignored by the utility.  If the utility is not a shell
  21035.        script, the trap actions (default or ignore) shall be mapped into
  21036.        the appropriate signal handling actions for the utility.
  21037.  
  21038.      - Variables with the export attribute, along with those explicitly
  21039.        exported for the duration of the command, shall be passed to the
  21040.        utility as POSIX.1 {8} environment variables.
  21041.  
  21042.  
  21043.  
  21044.  
  21045.                Copyright c 1991 IEEE.  All rights reserved.
  21046.       This is an unapproved IEEE Standards Draft, subject to change.
  21047.  
  21048.  
  21049.  
  21050.  
  21051.  
  21052.  3.12 Shell Execution Environment                                      289
  21053.  
  21054.  
  21055.  
  21056.  
  21057.  
  21058.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  21059.  
  21060.  The environment of the shell process shall not be changed by the utility
  21061.  unless explicitly specified by the utility description (for example, cd
  21062.  and umask).
  21063.  
  21064.  A subshell environment shall be created as a duplicate of the shell
  21065.  environment, except that signal traps set by that shell environment shall  1
  21066.  be set to the default values.  Changes made to the subshell environment    1
  21067.  shall not affect the shell environment.  Command substitution, commands
  21068.  that are grouped with parentheses, and asynchronous lists shall be
  21069.  executed in a subshell environment.  Additionally, each command of a
  21070.  multicommand pipeline is in a subshell environment; as an extension,
  21071.  however, any or all commands in a pipeline may be executed in the current
  21072.  environment.  All other commands shall be executed in the current shell
  21073.  environment.
  21074.  
  21075.  BEGIN_RATIONALE
  21076.  
  21077.  
  21078.  3.12.0.1  Shell Execution Environment Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  21079.            _p_a_r_t _o_f _P_1_0_0_3._2)
  21080.  
  21081.  Some systems have implemented the last stage of a pipeline in the current
  21082.  environment so that commands such as
  21083.  
  21084.        _c_o_m_m_a_n_d | read foo
  21085.  
  21086.  set variable foo in the current environment.  It was decided to allow
  21087.  this extension, but not require it; therefore, a shell programmer should
  21088.  consider a pipeline to be in a subshell environment, but not depend on
  21089.  it.
  21090.  
  21091.  The previous description of execution environment failed to mention that
  21092.  each command in a multiple command pipeline could be in a subshell
  21093.  execution environment.  For compatibility with some existing shells, the
  21094.  wording was phrased to allow an implementation to place any or all
  21095.  commands of a pipeline in the current environment.  However, this means
  21096.  that a POSIX application must assume each command is in a subshell
  21097.  environment, but not depend on it.
  21098.  
  21099.  The wording about shell scripts is meant to convey the fact that
  21100.  describing ``trap actions'' can only be understood in the context of the
  21101.  shell command language.  Outside this context, such as in a C-language
  21102.  program, signals are the operative condition, not traps.
  21103.  
  21104.  END_RATIONALE
  21105.  
  21106.  
  21107.  
  21108.  
  21109.  
  21110.  
  21111.                Copyright c 1991 IEEE.  All rights reserved.
  21112.       This is an unapproved IEEE Standards Draft, subject to change.
  21113.  
  21114.  
  21115.  
  21116.  
  21117.  
  21118.  290                                              3 Shell Command Language
  21119.  
  21120.  
  21121.  
  21122.  
  21123.  
  21124.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  21125.  
  21126.  3.13  Pattern Matching Notation
  21127.  
  21128.  The pattern matching notation described in this clause is used to specify
  21129.  patterns for matching strings in the shell.  Historically, pattern
  21130.  matching notation is related to, but slightly different from, the regular
  21131.  expression notation described in 2.8.  For this reason, the description
  21132.  of the rules for this pattern matching notation are based on the
  21133.  description of regular expression notation.
  21134.  
  21135.  BEGIN_RATIONALE
  21136.  
  21137.  
  21138.  3.13.0.1  Pattern Matching Notation Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  21139.            _p_a_r_t _o_f _P_1_0_0_3._2)
  21140.  
  21141.  Pattern matching is a simpler concept and has a simpler syntax than
  21142.  regular expressions, as the former is generally used for the manipulation
  21143.  of file names, which are relatively simple collections of characters,
  21144.  while the latter is generally used to manipulate arbitrary text strings
  21145.  of potentially greater complexity.  However, some of the basic concepts
  21146.  are the same, so this clause points liberally to the detailed
  21147.  descriptions in 2.8.
  21148.  
  21149.  END_RATIONALE
  21150.  
  21151.  
  21152.  3.13.1  Patterns Matching a Single Character
  21153.  
  21154.  The following _p_a_t_t_e_r_n_s _m_a_t_c_h_i_n_g _a _s_i_n_g_l_e-_c_h_a_r_a_c_t_e_r match a single
  21155.  character:  _o_r_d_i_n_a_r_y _c_h_a_r_a_c_t_e_r_s, _s_p_e_c_i_a_l _p_a_t_t_e_r_n _c_h_a_r_a_c_t_e_r_s, and _p_a_t_t_e_r_n
  21156.  _b_r_a_c_k_e_t _e_x_p_r_e_s_s_i_o_n_s.  The pattern bracket expression also shall match a
  21157.  single collating element.
  21158.  
  21159.  An ordinary character is a pattern that shall match itself.  It can be
  21160.  any character in the supported character set except for NUL, those         1
  21161.  special shell characters in 3.2 that require quoting, and the following    1
  21162.  three special pattern characters.  Matching shall be based on the bit      1
  21163.  pattern used for encoding the character, not on the graphic                1
  21164.  representation of the character.  If any character (ordinary, shell        1
  21165.  special, or pattern special) is quoted, that pattern shall match the       1
  21166.  character itself.  The shell special characters always require quoting.    1
  21167.  
  21168.  When unquoted and outside a bracket expression, the following three        1
  21169.  characters shall have special meaning in the specification of patterns:    1
  21170.  
  21171.     ?     A question-mark is a pattern that shall match any character.
  21172.  
  21173.     *     An asterisk is a pattern that shall match multiple characters,
  21174.           as described in 3.13.2.
  21175.  
  21176.  
  21177.                Copyright c 1991 IEEE.  All rights reserved.
  21178.       This is an unapproved IEEE Standards Draft, subject to change.
  21179.  
  21180.  
  21181.  
  21182.  
  21183.  
  21184.  3.13 Pattern Matching Notation                                        291
  21185.  
  21186.  
  21187.  
  21188.  
  21189.  
  21190.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  21191.  
  21192.     [     The open bracket shall introduce a pattern bracket expression.
  21193.  
  21194.  The description of basic regular expression bracket expressions in
  21195.  2.8.3.2 also shall apply to the pattern bracket expression, except that
  21196.  the exclamation-mark character (!) shall replace the circumflex character
  21197.  (^) in its role in a _n_o_n_m_a_t_c_h_i_n_g _l_i_s_t in the regular expression notation.
  21198.  A bracket expression starting with an unquoted circumflex character
  21199.  produces unspecified results.
  21200.  
  21201.  When pattern matching is used where shell quote removal is not performed   1
  21202.  [such as in the argument to the find -name primary when find is being      1
  21203.  called using an _e_x_e_c function, or in the _p_a_t_t_e_r_n argument to the           1
  21204.  _f_n_m_a_t_c_h() function], special characters can be escaped to remove their     1
  21205.  special meaning by preceding them with a <backslash>.  This escaping       1
  21206.  <backslash> shall be discarded.  The sequence \\ shall represent one       1
  21207.  literal backslash.  All of the requirements and effects of quoting on      1
  21208.  ordinary, shell special, and special pattern characters shall apply to     1
  21209.  escaping in this context.                                                  1
  21210.  
  21211.  BEGIN_RATIONALE                                                            1
  21212.  
  21213.  
  21214.  3.13.1.1  Patterns Matching a Single Character Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e
  21215.            _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21216.  
  21217.  Both ``quoting'' and ``escaping'' are described here because pattern       1
  21218.  matching must work in three separate circumstances:                        1
  21219.  
  21220.      - Calling directly upon the shell, such as in pathname expansion or    1
  21221.        in a case statement.  All of the following will match the string or  1
  21222.        file abc:  abc, "abc", a"b"c, a\bc, a[b]c, a["b"]c, a[\b]c, a?c,     1
  21223.        a*c.  The following will not:  "a?c", a\*c, a\[b]c, a["\b"]c.        1
  21224.  
  21225.      - Calling a utility or function without going through a shell, as      1
  21226.        described for find and _f_n_m_a_t_c_h().                                    1
  21227.  
  21228.      - Calling utilities such as find or pax through the shell command      1
  21229.        line.  (Although find and pax are the only instances of this in the  1
  21230.        standard utilities, describing it globally here is useful for        1
  21231.        future utilities that may use pattern matching internally.)  In      1
  21232.        this case, shell quote removal is performed before the utility sees  1
  21233.        the argument.  For example, in                                       1
  21234.  
  21235.              find /bin -name "e\c[\h]o" -print                              1
  21236.  
  21237.        after quote removal, the backslashes are presented to find and it    1
  21238.        treats them as escape characters.  Both precede ordinary             1
  21239.        characters, so the c and h represent themselves and echo would be    1
  21240.        found on many historical systems (that have it in /bin).  To find a  1
  21241.        filename that contained shell special characters or pattern          1
  21242.  
  21243.                Copyright c 1991 IEEE.  All rights reserved.
  21244.       This is an unapproved IEEE Standards Draft, subject to change.
  21245.  
  21246.  
  21247.  
  21248.  
  21249.  
  21250.  292                                              3 Shell Command Language
  21251.  
  21252.  
  21253.  
  21254.  
  21255.  
  21256.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  21257.  
  21258.        characters, both quoting and escaping are required, such as          1
  21259.  
  21260.              pax -r ... "*a\(\?"                                            1
  21261.  
  21262.        to extract a filename ending with ``a(?''.                           1
  21263.  
  21264.  Conforming applications are required to quote or escape the shell special  1
  21265.  characters (called ``metacharacters'' in some historical documentation).   1
  21266.  If used without this protection, syntax errors can result or               1
  21267.  implementation extensions can be triggered.  For example, the KornShell    1
  21268.  supports a series of extensions based on parentheses in patterns.          1
  21269.  
  21270.  The restriction on circumflex in a bracket expression is to allow
  21271.  implementations that support pattern matching using circumflex as the
  21272.  negation character in addition to the exclamation-mark.                    1
  21273.  
  21274.  END_RATIONALE                                                              1
  21275.  
  21276.  
  21277.  3.13.2  Patterns Matching Multiple Characters
  21278.  
  21279.  The following rules are used to construct _p_a_t_t_e_r_n_s _m_a_t_c_h_i_n_g _m_u_l_t_i_p_l_e
  21280.  _c_h_a_r_a_c_t_e_r_s from _p_a_t_t_e_r_n_s _m_a_t_c_h_i_n_g _a _s_i_n_g_l_e _c_h_a_r_a_c_t_e_r:
  21281.  
  21282.      (1)  The asterisk (*) is a pattern that shall match any string,
  21283.           including the null string.
  21284.  
  21285.      (2)  The concatenation of _p_a_t_t_e_r_n_s _m_a_t_c_h_i_n_g _a _s_i_n_g_l_e _c_h_a_r_a_c_t_e_r is a
  21286.           valid pattern that shall match the concatenation of the single
  21287.           characters or collating elements matched by each of the
  21288.           concatenated patterns.
  21289.  
  21290.      (3)  The concatenation of one or more _p_a_t_t_e_r_n_s _m_a_t_c_h_i_n_g _a _s_i_n_g_l_e
  21291.           _c_h_a_r_a_c_t_e_r with one or more asterisks is a valid pattern.  In
  21292.           such patterns, each asterisk shall match a string of zero or
  21293.           more characters, matching the greatest possible number of
  21294.           characters that still allows the remainder of the pattern to
  21295.           match the string.
  21296.  
  21297.  BEGIN_RATIONALE
  21298.  
  21299.  
  21300.  3.13.2.1  Patterns Matching Multiple Characters Rationale. (_T_h_i_s
  21301.            _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21302.  
  21303.  Since each asterisk matches ``zero or more'' occurrences, the patterns
  21304.  a*b and a**b have identical functionality.
  21305.  
  21306.  
  21307.  
  21308.  
  21309.                Copyright c 1991 IEEE.  All rights reserved.
  21310.       This is an unapproved IEEE Standards Draft, subject to change.
  21311.  
  21312.  
  21313.  
  21314.  
  21315.  
  21316.  3.13 Pattern Matching Notation                                        293
  21317.  
  21318.  
  21319.  
  21320.  
  21321.  
  21322.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  21323.  
  21324.  _E_x_a_m_p_l_e_s:
  21325.  
  21326.     a[bc]       matches the strings ab and ac.
  21327.  
  21328.     a*d         matches the strings ad, abd, and abcd, but not the string
  21329.                 abc.
  21330.  
  21331.     a*d*        matches the strings ad, abcd, abcdef, aaaad, and adddd;
  21332.  
  21333.     *a*d        matches the strings ad, abcd, efabcd, aaaad, and adddd.
  21334.  
  21335.  END_RATIONALE
  21336.  
  21337.  
  21338.  3.13.3  Patterns Used for Filename Expansion
  21339.  
  21340.  The rules described so far in 3.13.1 and 3.13.2 are qualified by the
  21341.  following rules that apply when pattern matching notation is used for
  21342.  filename expansion.
  21343.  
  21344.      (1)  The slash character in a pathname shall be explicitly matched by
  21345.           using one or more slashes in the pattern; it cannot be matched
  21346.           by the asterisk or question-mark special characters or by a
  21347.           bracket expression.  Slashes in the pattern are identified
  21348.           before bracket expressions; thus, a slash cannot be included in
  21349.           a pattern bracket expression used for filename expansion.
  21350.  
  21351.      (2)  If a filename begins with a period (.), the period shall be
  21352.           explicitly matched by using a period as the first character of
  21353.           the pattern or immediately following a slash character.  The
  21354.           leading period shall not be matched by:
  21355.  
  21356.            - The asterisk or question-mark special characters, or
  21357.  
  21358.            - A bracket expression containing a nonmatching list (such as
  21359.              [!a]), a range expression (such as [%-0]), or a character
  21360.              class expression (such as [[:punct:]]).
  21361.  
  21362.           It is unspecified whether an explicit period in a bracket
  21363.           expression matching list (such as [.abc]) can match a leading
  21364.           period in a filename.
  21365.  
  21366.      (3)  Specified patterns are matched against existing filenames and
  21367.           pathnames, as appropriate.  Each component that contains a        2
  21368.           pattern character requires read permission in the directory       2
  21369.           containing that component.  Any component that does not contain   2
  21370.           a pattern character requires search permission.  For example,     2
  21371.           given the pattern                                                 2
  21372.  
  21373.  
  21374.  
  21375.                Copyright c 1991 IEEE.  All rights reserved.
  21376.       This is an unapproved IEEE Standards Draft, subject to change.
  21377.  
  21378.  
  21379.  
  21380.  
  21381.  
  21382.  294                                              3 Shell Command Language
  21383.  
  21384.  
  21385.  
  21386.  
  21387.  
  21388.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  21389.  
  21390.                 /foo/bar/x*/bam                                             2
  21391.  
  21392.           search permission is needed for directory /foo, search and read   2
  21393.           permissions are needed for directory bar, and search permission   2
  21394.           is needed for each x* directory.  If the pattern matches any      2
  21395.           existing filenames or pathnames, the pattern shall be replaced
  21396.           with those filenames and pathnames, sorted according to the
  21397.           collating sequence in effect in the current locale.  If the
  21398.           pattern contains an invalid bracket expression or does not match
  21399.           any existing filenames or pathnames, the pattern string shall be
  21400.           left unchanged.
  21401.  
  21402.  BEGIN_RATIONALE
  21403.  
  21404.  
  21405.  3.13.3.1  Patterns Used for File Name Expansion Rationale. (_T_h_i_s
  21406.            _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21407.  
  21408.  The caveat about a slash within a bracket expression is derived from
  21409.  historical practice.  The pattern a[b/c]d will not match such pathnames
  21410.  as abd or a/d.  It will only match a pathname of literally a[b/c]d.
  21411.  
  21412.  Filenames beginning with a period historically have been specially
  21413.  protected from view on UNIX systems.  A proposal to allow an explicit
  21414.  period in a bracket expression to match a leading period was considered;
  21415.  it is allowed as an implementation extension, but a conforming
  21416.  application cannot make use of it.  If this extension becomes popular in
  21417.  the future, it will be considered for a future version of POSIX.2.
  21418.  
  21419.  Historical systems have varied in their permissions requirements.  To      2
  21420.  match f*/bar has required read permissions on the f* directories in the    2
  21421.  System V shell, but this standard, the C-shell, and KornShell require      2
  21422.  only search permissions.                                                   2
  21423.  
  21424.  END_RATIONALE                                                              2
  21425.  
  21426.  
  21427.  3.14  Special Built-in Utilities
  21428.  
  21429.  The following _s_p_e_c_i_a_l _b_u_i_l_t-_i_n utilities shall be supported in the shell
  21430.  command language.  The output of each command, if any, shall be written
  21431.  to standard output, subject to the normal redirection and piping possible
  21432.  with all commands.
  21433.  
  21434.  The term _b_u_i_l_t-_i_n implies that the shell can execute the utility directly
  21435.  and does not need to search for it.  An implementation can choose to make
  21436.  any utility a built-in; however, the special built-in utilities described
  21437.  here differ from regular built-in utilities in two respects:
  21438.  
  21439.  
  21440.  
  21441.                Copyright c 1991 IEEE.  All rights reserved.
  21442.       This is an unapproved IEEE Standards Draft, subject to change.
  21443.  
  21444.  
  21445.  
  21446.  
  21447.  
  21448.  3.14 Special Built-in Utilities                                       295
  21449.  
  21450.  
  21451.  
  21452.  
  21453.  
  21454.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  21455.  
  21456.      (1)  A syntax error in a special built-in utility may cause a shell
  21457.           executing that utility to abort, while a syntax error in a
  21458.           regular built-in utility shall not cause a shell executing that
  21459.           utility to abort.  (See 3.8.1 for the consequences of errors on
  21460.           interactive and noninteractive shells.)  If a special built-in
  21461.           utility encountering a syntax error does not abort the shell,
  21462.           its exit value shall be nonzero.
  21463.  
  21464.      (2)  Variable assignments specified with special built-in utilities
  21465.           shall remain in effect after the built-in completes; this shall   1
  21466.           not be the case with a regular built-in or other utility.         1
  21467.  
  21468.  As described in 2.3, the special built-in utilities in this clause need
  21469.  not be provided in a manner accessible via the POSIX.1 {8} _e_x_e_c family of
  21470.  functions.
  21471.  
  21472.  Some of the special built-ins are described as conforming to the utility
  21473.  argument syntax guidelines in 2.10.2.  For those that are not, the
  21474.  requirement in 2.11.3 that "--" be recognized as a first argument to be
  21475.  discarded does not apply and a conforming application shall not use that
  21476.  argument.
  21477.  
  21478.  
  21479.  3.14.1  break - Exit from for, while, or until loop
  21480.  
  21481.        break [_n]
  21482.  
  21483.  Exit from the smallest enclosing for, while, or until loop, if any; or
  21484.  from the _nth enclosing loop if _n is specified.  The value of _n is an       1
  21485.  unsigned decimal integer _> 1.  The default is equivalent to _n=1.  If _n is
  21486.  greater than the number of enclosing loops, the last enclosing loop shall
  21487.  be exited from.  Execution continues with the command immediately
  21488.  following the loop.
  21489.  
  21490.  _E_x_i_t__S_t_a_t_u_s
  21491.  
  21492.      0    Successful completion.                                            2
  21493.  
  21494.     >0    The _n value was not an unsigned decimal integer _> 1.              2
  21495.  
  21496.  BEGIN_RATIONALE
  21497.  
  21498.  
  21499.  3.14.1.1  break Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21500.  
  21501.  Example:
  21502.  
  21503.  
  21504.  
  21505.  
  21506.  
  21507.                Copyright c 1991 IEEE.  All rights reserved.
  21508.       This is an unapproved IEEE Standards Draft, subject to change.
  21509.  
  21510.  
  21511.  
  21512.  
  21513.  
  21514.  296                                              3 Shell Command Language
  21515.  
  21516.  
  21517.  
  21518.  
  21519.  
  21520.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  21521.  
  21522.        for i in *
  21523.        do
  21524.                if test -d "$i"
  21525.                then break
  21526.                fi
  21527.        done
  21528.  
  21529.  Consideration was given to expanding the syntax of the break and continue
  21530.  to refer to a label associated with the appropriate loop, as a preferable
  21531.  alternative to the [_n] method.  This new method was proposed late in the
  21532.  development of the standard and adequate consensus could not be formed to
  21533.  include it.  However, POSIX.2 does reserve the namespace of command names
  21534.  ending with a colon.  It is anticipated that a future implementation
  21535.  could take advantage of this and provide something like:
  21536.  
  21537.        outofloop: for i in a b c d e                                        1
  21538.        do
  21539.                for j in 0 1 2 3 4 5 6 7 8 9
  21540.                do
  21541.                        if test -r "${i}${j}"
  21542.                        then break outofloop
  21543.                        fi
  21544.                done
  21545.        done
  21546.  
  21547.  and that this might be standardized after implementation experience is
  21548.  achieved.
  21549.  
  21550.  END_RATIONALE
  21551.  
  21552.  
  21553.  3.14.2  colon - Null utility
  21554.  
  21555.        : [_a_r_g_u_m_e_n_t ...]
  21556.  
  21557.  This utility shall only expand command _a_r_g_u_m_e_n_ts.
  21558.  
  21559.  _E_x_i_t__S_t_a_t_u_s
  21560.  
  21561.  Zero.
  21562.  
  21563.  BEGIN_RATIONALE
  21564.  
  21565.  
  21566.  
  21567.  
  21568.  
  21569.  
  21570.  
  21571.  
  21572.  
  21573.                Copyright c 1991 IEEE.  All rights reserved.
  21574.       This is an unapproved IEEE Standards Draft, subject to change.
  21575.  
  21576.  
  21577.  
  21578.  
  21579.  
  21580.  3.14 Special Built-in Utilities                                       297
  21581.  
  21582.  
  21583.  
  21584.  
  21585.  
  21586.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  21587.  
  21588.  3.14.2.1  colon Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21589.  
  21590.  The colon (:), or null utility, is used when a command is needed, as in
  21591.  the then condition of an if command, but nothing is to be done by the
  21592.  command.
  21593.  
  21594.  Example:
  21595.  
  21596.        : ${X=abc}
  21597.        if      false
  21598.        then    :
  21599.        else    echo $X
  21600.        fi
  21601.        abc
  21602.  
  21603.  As with any of the special built-ins, the null utility can also have
  21604.  variable assignments and redirections associated with it, such as:
  21605.  
  21606.        x=y : > z
  21607.  
  21608.  which sets variable x to the value y (so that it persists after the null
  21609.  utility ``completes'') and creates or truncates file z.
  21610.  
  21611.  END_RATIONALE
  21612.  
  21613.  
  21614.  3.14.3  continue - Continue for, while, or until loop
  21615.  
  21616.        continue [_n]
  21617.  
  21618.  The continue utility shall return to the top of the smallest enclosing
  21619.  for, while, or until, loop, or to the top of the _nth enclosing loop, if _n
  21620.  is specified.  This involves repeating the condition list of a while or
  21621.  until loop or performing the next assignment of a for loop, and
  21622.  reexecuting the loop if appropriate.
  21623.  
  21624.  The value of _n is a decimal integer _> 1.  The default is equivalent to
  21625.  _n=1.  If _n is greater than the number of enclosing loops, the last
  21626.  enclosing loop is used.
  21627.  
  21628.  _E_x_i_t__S_t_a_t_u_s
  21629.  
  21630.      0    Successful completion.                                            2
  21631.  
  21632.     >0    The _n value was not an unsigned decimal integer _> 1.              2
  21633.  
  21634.  BEGIN_RATIONALE
  21635.  
  21636.  
  21637.  
  21638.  
  21639.                Copyright c 1991 IEEE.  All rights reserved.
  21640.       This is an unapproved IEEE Standards Draft, subject to change.
  21641.  
  21642.  
  21643.  
  21644.  
  21645.  
  21646.  298                                              3 Shell Command Language
  21647.  
  21648.  
  21649.  
  21650.  
  21651.  
  21652.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  21653.  
  21654.  3.14.3.1  continue Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21655.  
  21656.  Example:
  21657.  
  21658.        for i in *
  21659.        do
  21660.                if test -d "$i"
  21661.                then continue
  21662.                fi
  21663.        done
  21664.  
  21665.  END_RATIONALE
  21666.  
  21667.  
  21668.  3.14.4  dot - Execute commands in current environment
  21669.  
  21670.        . _f_i_l_e
  21671.  
  21672.  The shell shall execute commands from the _f_i_l_e in the current
  21673.  environment.
  21674.  
  21675.  If _f_i_l_e does not contain a slash, the shell shall use the search path
  21676.  specified by PATH to find the directory containing _f_i_l_e. Unlike normal
  21677.  command search, however, the file searched for by the dot utility need
  21678.  not be executable.  If no readable file is found, a noninteractive shell
  21679.  shall abort; an interactive shell shall write a diagnostic message to
  21680.  standard error, but this condition shall not be considered a syntax
  21681.  error.
  21682.  
  21683.  _E_x_i_t__S_t_a_t_u_s
  21684.  
  21685.  Returns the value of the last command executed, or a zero exit status if
  21686.  no command is executed.
  21687.  
  21688.  BEGIN_RATIONALE
  21689.  
  21690.  
  21691.  3.14.4.1  dot Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21692.  
  21693.  Some older implementations searched the current directory for the _f_i_l_e,
  21694.  even if the value of PATH disallowed it.  This behavior was omitted from
  21695.  POSIX.2 due to concerns about introducing the susceptibility to trojan
  21696.  horses that the user might be trying to avoid by leaving dot out of PATH.
  21697.  
  21698.  The KornShell version of dot takes optional arguments that are set to the  1
  21699.  positional parameters.  This is a valid extension that allows a dot        1
  21700.  script to behave identically to a function.
  21701.  
  21702.  
  21703.  
  21704.  
  21705.                Copyright c 1991 IEEE.  All rights reserved.
  21706.       This is an unapproved IEEE Standards Draft, subject to change.
  21707.  
  21708.  
  21709.  
  21710.  
  21711.  
  21712.  3.14 Special Built-in Utilities                                       299
  21713.  
  21714.  
  21715.  
  21716.  
  21717.  
  21718.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  21719.  
  21720.  Example:
  21721.  
  21722.        cat foobar
  21723.        foo=hello bar=world
  21724.        . foobar
  21725.        echo $foo $bar
  21726.        hello world
  21727.  
  21728.  END_RATIONALE
  21729.  
  21730.  
  21731.  3.14.5  eval - Construct command by concatenating arguments
  21732.  
  21733.        eval [_a_r_g_u_m_e_n_t ...]
  21734.  
  21735.  The eval utility shall construct a command by concatenating _a_r_g_u_m_e_n_ts
  21736.  together, separating each with a <space>.  The constructed command shall
  21737.  be read and executed by the shell.
  21738.  
  21739.  _E_x_i_t__S_t_a_t_u_s
  21740.  
  21741.  If there are no _a_r_g_u_m_e_n_ts, or only null arguments, eval shall return a
  21742.  zero exit status; otherwise, it shall return the exit status of the
  21743.  command defined by the string of concatenated _a_r_g_u_m_e_n_ts separated by
  21744.  spaces.
  21745.  
  21746.  BEGIN_RATIONALE
  21747.  
  21748.  
  21749.  3.14.5.1  eval Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21750.  
  21751.  Example:
  21752.  
  21753.        foo=10 x=foo
  21754.        y='$'$x
  21755.        echo $y
  21756.        $foo
  21757.        eval y='$'$x
  21758.        echo $y
  21759.        10
  21760.  
  21761.  END_RATIONALE
  21762.  
  21763.  
  21764.  
  21765.  
  21766.  
  21767.  
  21768.  
  21769.  
  21770.  
  21771.                Copyright c 1991 IEEE.  All rights reserved.
  21772.       This is an unapproved IEEE Standards Draft, subject to change.
  21773.  
  21774.  
  21775.  
  21776.  
  21777.  
  21778.  300                                              3 Shell Command Language
  21779.  
  21780.  
  21781.  
  21782.  
  21783.  
  21784.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  21785.  
  21786.  3.14.6  exec - Execute commands and open, close, and/or copy file
  21787.          descriptors
  21788.  
  21789.        exec [_c_o_m_m_a_n_d [_a_r_g_u_m_e_n_t ...]]
  21790.  
  21791.  The exec utility opens, closes, and/or copies file descriptors as
  21792.  specified by any redirections as part of the command.
  21793.  
  21794.  If exec is specified without _c_o_m_m_a_n_d or _a_r_g_u_m_e_n_t_s, and any file
  21795.  descriptors with numbers > 2 are opened with associated redirection
  21796.  statements, it is unspecified whether those file descriptors remain open
  21797.  when the shell invokes another utility.
  21798.  
  21799.  If exec is specified with _c_o_m_m_a_n_d, it shall replace the shell with
  21800.  _c_o_m_m_a_n_d without creating a new process.  If _a_r_g_u_m_e_n_ts are specified, they
  21801.  are arguments to _c_o_m_m_a_n_d.  Redirection shall affect the current shell
  21802.  execution environment.
  21803.  
  21804.  _E_x_i_t__S_t_a_t_u_s
  21805.  
  21806.  If _c_o_m_m_a_n_d is specified, exec shall not return to the shell; rather, the   2
  21807.  exit status of the process shall be the exit status of the program         2
  21808.  implementing _c_o_m_m_a_n_d, which overlaid the shell.  If _c_o_m_m_a_n_d is not found,  2
  21809.  the exit status shall be 127.  If _c_o_m_m_a_n_d is found, but it is not an       1
  21810.  executable utility, the exit status shall be 126.  If a redirection error  1
  21811.  occurs (see 3.8.1), the shell shall exit with a value in the range 1-125.  1
  21812.  Otherwise, exec shall return a zero exit status.
  21813.  
  21814.  BEGIN_RATIONALE
  21815.  
  21816.  
  21817.  3.14.6.1  exec Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21818.  
  21819.  Most historical implementations are not conformant in that
  21820.  
  21821.        foo=bar exec cmd
  21822.  
  21823.  does not pass foo to cmd.
  21824.  
  21825.  Earlier drafts stated that ``If specified without _c_o_m_m_a_n_d or _a_r_g_u_m_e_n_t,
  21826.  the shell sets to close-on-exec file numbers greater than 2 that are
  21827.  opened in this way, so that they will be closed when the shell invokes
  21828.  another program.''  This was based on the behavior of one version of the
  21829.  KornShell and was made unspecified when it was realized that some
  21830.  existing scripts relied on the more generally historical behavior
  21831.  (leaving all file descriptors open).  Furthermore, since the application
  21832.  should have no cognizance of whether a new shell is simply _f_o_r_k()ed,
  21833.  rather than _e_x_e_c()ed, it could not consistently rely on the automatic
  21834.  closing behavior anyway.  Scripts concerned that child shells could
  21835.  misuse open file descriptors can always close them explicitly, as shown
  21836.  
  21837.                Copyright c 1991 IEEE.  All rights reserved.
  21838.       This is an unapproved IEEE Standards Draft, subject to change.
  21839.  
  21840.  
  21841.  
  21842.  
  21843.  
  21844.  3.14 Special Built-in Utilities                                       301
  21845.  
  21846.  
  21847.  
  21848.  
  21849.  
  21850.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  21851.  
  21852.  in one of the following examples.
  21853.  
  21854.  Examples:
  21855.  
  21856.  Open readfile as file descriptor 3 for reading:
  21857.  
  21858.        exec 3< readfile
  21859.  
  21860.  Open writefile as file descriptor 4 for writing:
  21861.  
  21862.        exec 4> writefile
  21863.  
  21864.  Make unit 5 a copy of unit 0:
  21865.  
  21866.        exec 5<&0
  21867.  
  21868.  Close file unit 3:
  21869.  
  21870.        exec 3<&-
  21871.  
  21872.  Cat the file maggie by replacing the current shell with the cat utility:
  21873.  
  21874.        exec cat maggie
  21875.  
  21876.  END_RATIONALE
  21877.  
  21878.  
  21879.  3.14.7  exit - Cause the shell to exit
  21880.  
  21881.        exit [_n]
  21882.  
  21883.  The exit utility shall cause the shell to exit with the exit status
  21884.  specified by the unsigned decimal integer _n.  If _n is specified, but its   1
  21885.  value is not between 0 and 255 inclusively, the exit status is undefined.  1
  21886.  
  21887.  A trap on EXIT shall be executed before the shell terminates, except when
  21888.  the exit utility is invoked in that trap itself, in which case the shell
  21889.  shall exit immediately.
  21890.  
  21891.  _E_x_i_t__S_t_a_t_u_s
  21892.  
  21893.  The exit status shall be _n, if specified.  Otherwise, the value shall be
  21894.  the exit value of the last command executed, or zero if no command was
  21895.  executed.  When exit is executed in a trap action (see 3.14.13), the
  21896.  ``last command'' is considered to be the command that executed
  21897.  immediately preceding the trap action.
  21898.  
  21899.  BEGIN_RATIONALE
  21900.  
  21901.  
  21902.  
  21903.                Copyright c 1991 IEEE.  All rights reserved.
  21904.       This is an unapproved IEEE Standards Draft, subject to change.
  21905.  
  21906.  
  21907.  
  21908.  
  21909.  
  21910.  302                                              3 Shell Command Language
  21911.  
  21912.  
  21913.  
  21914.  
  21915.  
  21916.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  21917.  
  21918.  3.14.7.1  exit Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21919.  
  21920.  As explained in other clauses, certain exit status values have been        1
  21921.  reserved for special uses and should be used by applications only for      1
  21922.  those purposes:                                                            1
  21923.  
  21924.      126  A file to be executed was found, but it was not an executable     1
  21925.           utility.                                                          1
  21926.  
  21927.      127  A utility to be executed was not found.                           1
  21928.  
  21929.     >128  A command was interrupted by a signal.                            1
  21930.  
  21931.  Examples:
  21932.  
  21933.  Exit with a _t_r_u_e value:
  21934.  
  21935.        exit 0
  21936.  
  21937.  Exit with a _f_a_l_s_e value:
  21938.  
  21939.        exit 1
  21940.  
  21941.  END_RATIONALE
  21942.  
  21943.  
  21944.  3.14.8  export - Set export attribute for variables
  21945.  
  21946.        export _n_a_m_e[=_w_o_r_d]...
  21947.        export -p
  21948.  
  21949.  The shell shall give the export attribute to the variables corresponding
  21950.  to the specified _n_a_m_es, which shall cause them to be in the environment
  21951.  of subsequently executed commands.
  21952.  
  21953.  When -p is specified, export shall write to the standard output the names
  21954.  and values of all exported variables, in the following format:             1
  21955.  
  21956.        "export %s=%s\n", <_n_a_m_e>, <_v_a_l_u_e>
  21957.  
  21958.  The shell shall format the output, including the proper use of quoting,
  21959.  so that it is suitable for re-input to the shell as commands that achieve
  21960.  the same exporting results.
  21961.  
  21962.  The export special built-in shall conform to the utility argument syntax
  21963.  guidelines described in 2.10.2.
  21964.  
  21965.  
  21966.  
  21967.  
  21968.  
  21969.                Copyright c 1991 IEEE.  All rights reserved.
  21970.       This is an unapproved IEEE Standards Draft, subject to change.
  21971.  
  21972.  
  21973.  
  21974.  
  21975.  
  21976.  3.14 Special Built-in Utilities                                       303
  21977.  
  21978.  
  21979.  
  21980.  
  21981.  
  21982.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  21983.  
  21984.  _E_x_i_t__S_t_a_t_u_s
  21985.  
  21986.  Zero.
  21987.  
  21988.  BEGIN_RATIONALE
  21989.  
  21990.  
  21991.  3.14.8.1  export Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  21992.  
  21993.  When no arguments are given, the results are unspecified.  Some
  21994.  historical shells use the no-argument case as the functional equivalent
  21995.  of what is required here with -p.  This feature was left unspecified
  21996.  because it is not existing practice in all shells and some scripts may
  21997.  rely on the now-unspecified results on their implementations.  Attempts
  21998.  to specify the -p output as the default case were unsuccessful in
  21999.  achieving consensus.  The -p option was added to allow portable access to
  22000.  the values that can be saved and then later restored using, for instance,
  22001.  a dot script.
  22002.  
  22003.  Examples:
  22004.  
  22005.  Export PWD and HOME variables:
  22006.  
  22007.        export PWD HOME
  22008.  
  22009.  Set and export the PATH variable:
  22010.  
  22011.        export PATH=/local/bin:$PATH
  22012.  
  22013.  Save and restore all exported variables:
  22014.  
  22015.        export -p > _t_e_m_p-_f_i_l_e
  22016.        unset _a _l_o_t _o_f _v_a_r_i_a_b_l_e_s
  22017.        ... _p_r_o_c_e_s_s_i_n_g
  22018.        . _t_e_m_p-_f_i_l_e
  22019.  
  22020.  END_RATIONALE
  22021.  
  22022.  
  22023.  3.14.9  readonly - Set read-only attribute for variables                   1
  22024.  
  22025.        readonly _n_a_m_e[=_w_o_r_d]...
  22026.        readonly -p
  22027.  
  22028.  The variables whose _n_a_m_es are specified shall be given the readonly
  22029.  attribute.  The values of variables with the read-only attribute cannot
  22030.  be changed by subsequent assignment, nor can those variables be unset by
  22031.  the unset utility.
  22032.  
  22033.  
  22034.  
  22035.                Copyright c 1991 IEEE.  All rights reserved.
  22036.       This is an unapproved IEEE Standards Draft, subject to change.
  22037.  
  22038.  
  22039.  
  22040.  
  22041.  
  22042.  304                                              3 Shell Command Language
  22043.  
  22044.  
  22045.  
  22046.  
  22047.  
  22048.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  22049.  
  22050.  When -p is specified, readonly shall write to the standard output the
  22051.  names and values of all read-only variables, in the following format:      1
  22052.  
  22053.        "readonly %s=%s\n", <_n_a_m_e>, <_v_a_l_u_e>
  22054.  
  22055.  The shell shall format the output, including the proper use of quoting,
  22056.  so that it is suitable for re-input to the shell as commands that achieve
  22057.  the same attribute-setting results.
  22058.  
  22059.  The readonly special built-in shall conform to the utility argument
  22060.  syntax guidelines described in 2.10.2.
  22061.  
  22062.  _E_x_i_t__S_t_a_t_u_s
  22063.  
  22064.  Zero.
  22065.  
  22066.  BEGIN_RATIONALE
  22067.  
  22068.  
  22069.  3.14.9.1  readonly Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  22070.  
  22071.  Example:
  22072.  
  22073.        readonly HOME PWD
  22074.  
  22075.  Some versions of the shell exist that preserve the read-only attribute
  22076.  across separate invocations.  POSIX.2 allows this behavior, but does not
  22077.  require it.
  22078.  
  22079.  See the rationale for export (3.14.8.1) for a description of the no-
  22080.  argument and -p output cases.
  22081.  
  22082.  In a previous draft, read-only functions were considered, but they were
  22083.  omitted as not being existing practice or particularly useful.
  22084.  Furthermore, functions must not be readonly across invocations to
  22085.  preclude _s_p_o_o_f_i_n_g (spoofing is the term for the practice of creating a
  22086.  program that acts like a well-known utility with the intent of subverting
  22087.  the user's real intent) of administrative or security-relevant (or
  22088.  -conscious) shell scripts.
  22089.  
  22090.  END_RATIONALE
  22091.  
  22092.  
  22093.  3.14.10  return - Return from a function
  22094.  
  22095.        return [_n]
  22096.  
  22097.  The return utility shall cause the shell to stop executing the current
  22098.  function or dot script (see 3.14.4).  If the shell is not currently
  22099.  executing a function or dot script, the results are unspecified.
  22100.  
  22101.                Copyright c 1991 IEEE.  All rights reserved.
  22102.       This is an unapproved IEEE Standards Draft, subject to change.
  22103.  
  22104.  
  22105.  
  22106.  
  22107.  
  22108.  3.14 Special Built-in Utilities                                       305
  22109.  
  22110.  
  22111.  
  22112.  
  22113.  
  22114.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  22115.  
  22116.  _E_x_i_t__S_t_a_t_u_s
  22117.  
  22118.  The value of the special parameter ? shall be set to _n, an unsigned
  22119.  decimal integer, or to the exit status of the last command executed if _n
  22120.  is not specified.  If the value of _n is greater than 255, the results are
  22121.  undefined.  When return is executed in a trap action (see 3.14.13), the
  22122.  ``last command'' is considered to be the command that executed
  22123.  immediately preceding the trap action.
  22124.  
  22125.  BEGIN_RATIONALE
  22126.  
  22127.  
  22128.  3.14.10.1  return Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  22129.  
  22130.  The behavior of return when not in a function or dot script differs
  22131.  between the System V shell and the KornShell.  In the System V shell this
  22132.  is an error, whereas in the KornShell, the effect is the same as exit.
  22133.  
  22134.  The results of returning a number greater than 255 are undefined because
  22135.  of differing practices in the various historical implementations.  Some
  22136.  shells AND out all but the low order 8 bits; others allow larger values,
  22137.  but not of unlimited size.
  22138.  
  22139.  See the discussion of appropriate exit status values in 3.14.7.1.          1
  22140.  
  22141.  END_RATIONALE                                                              1
  22142.  
  22143.  
  22144.  3.14.11  set - Set/unset options and positional parameters
  22145.  
  22146.        set [-aCefnuvx] [_a_r_g_u_m_e_n_t ...]
  22147.        set [+aCefnuvx] [_a_r_g_u_m_e_n_t ...]
  22148.        set -- [_a_r_g_u_m_e_n_t ...]
  22149.  
  22150.        _O_b_s_o_l_e_s_c_e_n_t _v_e_r_s_i_o_n:
  22151.  
  22152.        set - [_a_r_g_u_m_e_n_t ...]
  22153.  
  22154.  If no options or _a_r_g_u_m_e_n_ts are specified, set shall write the names and
  22155.  values of all shell variables in the collation sequence of the current
  22156.  locale.  Each _n_a_m_e shall start on a separate line, using the format:
  22157.  
  22158.        "%s=%s\n", <_n_a_m_e>, <_v_a_l_u_e>
  22159.  
  22160.  The _v_a_l_u_e string shall be written with appropriate quoting so that it is
  22161.  suitable for re-input to the shell, (re)setting, as far as possible, the   1
  22162.  variables that are currently set.  Readonly variables cannot be reset.     1
  22163.  See the description of shell quoting in 3.2.
  22164.  
  22165.  
  22166.  
  22167.                Copyright c 1991 IEEE.  All rights reserved.
  22168.       This is an unapproved IEEE Standards Draft, subject to change.
  22169.  
  22170.  
  22171.  
  22172.  
  22173.  
  22174.  306                                              3 Shell Command Language
  22175.  
  22176.  
  22177.  
  22178.  
  22179.  
  22180.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  22181.  
  22182.  When options are specified, they shall set or unset attributes of the
  22183.  shell, as described below.  When _a_r_g_u_m_e_n_ts are specified, they shall
  22184.  cause positional parameters to be set or unset, as described below.
  22185.  Setting/unsetting attributes and positional parameters are not
  22186.  necessarily related actions, but they can be combined in a single
  22187.  invocation of set.
  22188.  
  22189.  The set utility shall conform to the utility argument syntax guidelines
  22190.  described in 2.10.2, except that options can be specified with either a
  22191.  leading hyphen (meaning enable the option) or plus-sign (meaning disable
  22192.  it).
  22193.  
  22194.  The implementation shall support the options in the following list in
  22195.  both their hyphen and plus-sign forms.  These options can also be
  22196.  specified as options to sh; see 4.56.
  22197.  
  22198.     -a          When this option is on, the export attribute shall be set
  22199.                 for each variable to which an assignment is performed.
  22200.                 (See 3.1.15.)  If the assignment precedes a utility name
  22201.                 in a command, the export attributes shall not persist in    1
  22202.                 the current execution environment after the utility         1
  22203.                 completes, with the exception that preceding one of the     1
  22204.                 special built-in utilities shall cause the export
  22205.                 attribute to persist after the built-in has completed.  If
  22206.                 the assignment does not precede a utility name in the
  22207.                 command, or if the assignment is a result of the operation
  22208.                 of the getopts or read utilities (see 4.27 and 4.52), the
  22209.                 export attribute shall persist until the variable is
  22210.                 unset.
  22211.  
  22212.     -C          (Uppercase C.)  Prevent existing files from being
  22213.                 overwritten by the shell's > redirection operator (see
  22214.                 3.7.2); the >| redirection operator shall override this
  22215.                 ``noclobber'' option for an individual file.
  22216.  
  22217.     -e          When this option is on, if a simple command fails for any   1
  22218.                 of the reasons listed in 3.8.1 or returns an exit status    1
  22219.                 value >0, and is not part of the compound list following a  1
  22220.                 while, until, or if keyword, and is not a part of an AND    1
  22221.                 or OR list, and is not a pipeline preceded by the !
  22222.                 reserved word, then the shell immediately shall exit.
  22223.  
  22224.     -f          The shell shall disable pathname expansion.
  22225.  
  22226.     -n          The shell shall read commands but not execute them; this
  22227.                 can be used to check for shell script syntax errors.  An
  22228.                 interactive shell may ignore this option.
  22229.  
  22230.  
  22231.  
  22232.  
  22233.                Copyright c 1991 IEEE.  All rights reserved.
  22234.       This is an unapproved IEEE Standards Draft, subject to change.
  22235.  
  22236.  
  22237.  
  22238.  
  22239.  
  22240.  3.14 Special Built-in Utilities                                       307
  22241.  
  22242.  
  22243.  
  22244.  
  22245.  
  22246.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  22247.  
  22248.     -u          The shell shall write a message to standard error when it
  22249.                 tries to expand a variable that is not set and immediately
  22250.                 exit.  An interactive shell shall not exit.
  22251.  
  22252.     -v          The shell shall write its input to standard error as it is
  22253.                 read.
  22254.  
  22255.     -x          The shell shall write to standard error a trace for each
  22256.                 command after it expands the command and before it
  22257.                 executes it.
  22258.  
  22259.  The default for all these options is off (unset) unless the shell was
  22260.  invoked with them on (see sh in 4.56).  All the positional parameters
  22261.  shall be unset before any new values are assigned.
  22262.  
  22263.  The remaining arguments shall be assigned in order to the positional
  22264.  parameters.  The special parameter # shall be set to reflect the number
  22265.  of positional parameters.
  22266.  
  22267.  The special argument "--" immediately following the set command name can
  22268.  be used to delimit the arguments if the first argument begins with + or
  22269.  -, or to prevent inadvertent listing of all shell variables when there
  22270.  are no arguments.  The command set -- without _a_r_g_u_m_e_n_ts shall unset all
  22271.  positional parameters and set the special parameter # to zero.
  22272.  
  22273.  In the obsolescent version, the set command name followed by - with no
  22274.  other arguments shall turn off the -v and -x options without changing the
  22275.  positional parameters.  The set command name followed by - with other
  22276.  arguments shall turn off the -v and -x options and assign the arguments
  22277.  to the positional parameters in order.
  22278.  
  22279.  _E_x_i_t__S_t_a_t_u_s
  22280.  
  22281.  Zero.
  22282.  
  22283.  BEGIN_RATIONALE
  22284.  
  22285.  
  22286.  3.14.11.1  set Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  22287.  
  22288.  The set -- form is listed specifically in the Synopsis even though this
  22289.  usage is implied by the utility syntax guidelines.  The explanation of
  22290.  this feature removes any ambiguity about whether the set -- form might be
  22291.  misinterpreted as being equivalent to set without any options or
  22292.  arguments.  The functionality of this form has been adopted from the
  22293.  KornShell.  In System V, set -- only unsets parameters if there is at
  22294.  least one argument; the only way to unset all parameters is to use shift.
  22295.  Using the KornShell version should not affect System V scripts because
  22296.  there should be no reason to deliberately issue it without arguments; if
  22297.  it were issued as, say:
  22298.  
  22299.                Copyright c 1991 IEEE.  All rights reserved.
  22300.       This is an unapproved IEEE Standards Draft, subject to change.
  22301.  
  22302.  
  22303.  
  22304.  
  22305.  
  22306.  308                                              3 Shell Command Language
  22307.  
  22308.  
  22309.  
  22310.  
  22311.  
  22312.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  22313.  
  22314.        set -- "$@"                                                          1
  22315.  
  22316.  and there were in fact no arguments resulting from $@, unsetting the       1
  22317.  parameters would be a no-op anyway.
  22318.  
  22319.  The set + form in earlier drafts was omitted as being an unnecessary
  22320.  duplication of set alone and not widespread historical practice.
  22321.  
  22322.  The noclobber option was changed to -C from the set -o noclobber option
  22323.  in previous drafts.  The set -o is used in the KornShell to accept word-
  22324.  length option names, duplicating many of the single-letter names.  The
  22325.  noclobber option was changed to a single letter so that the historical $-
  22326.  paradigm would not be broken; see 3.5.2.
  22327.  
  22328.  The following set flags were intentionally omitted with the following
  22329.  rationale:
  22330.  
  22331.     -h    This flag is related to command name hashing, which is not
  22332.           required for an implementation.  It is primarily a performance
  22333.           issue, which is outside the scope of this standard.
  22334.  
  22335.     -k    The -k flag was originally added by Bourne to make it easier for
  22336.           users of prerelease versions of the shell.  In early versions of
  22337.           the Bourne shell the construct set name=value, had to be used to
  22338.           assign values to shell variables.  The problem with -k is that
  22339.           the behavior affects parsing, virtually precluding writing any
  22340.           compilers.  To explain the behavior of -k, it is necessary to
  22341.           describe the parsing algorithm, which is implementation defined.
  22342.           For example,
  22343.  
  22344.                 set -k; echo name=value
  22345.  
  22346.           and
  22347.  
  22348.                 set -k
  22349.                 echo name=value
  22350.  
  22351.           behave differently.  The interaction with functions is even more
  22352.           complex.  What is more, the -k flag is never needed, since the
  22353.           command line could have been reordered.
  22354.  
  22355.     -t    The -t flag is hard to specify and almost never used.  The only
  22356.           known use could be done with here-documents.  Moreover, the
  22357.           behavior with ksh and sh differ.  The man page says that it
  22358.           exits after reading and executing one command.  What is one
  22359.           command?  If the input is date;date, sh executes both date
  22360.           commands, ksh does only the first.
  22361.  
  22362.  
  22363.  
  22364.  
  22365.                Copyright c 1991 IEEE.  All rights reserved.
  22366.       This is an unapproved IEEE Standards Draft, subject to change.
  22367.  
  22368.  
  22369.  
  22370.  
  22371.  
  22372.  3.14 Special Built-in Utilities                                       309
  22373.  
  22374.  
  22375.  
  22376.  
  22377.  
  22378.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  22379.  
  22380.  Consideration was given to rewriting set to simplify its confusing
  22381.  syntax.  A specific suggestion was that the unset utility should be used
  22382.  to unset options instead of using the non-_g_e_t_o_p_t()-able +_o_p_t_i_o_n syntax.
  22383.  However, the conclusion was reached that people were satisfied with the
  22384.  existing practice of using +_o_p_t_i_o_n and there was no compelling reason to
  22385.  modify such widespread existing practice.
  22386.  
  22387.  Examples:
  22388.  
  22389.  Write out all variables and their values:
  22390.  
  22391.        set
  22392.  
  22393.  Set $1, $2, and $3 and set $# to 3:
  22394.  
  22395.        set c a b
  22396.  
  22397.  Turn on the -x and -v options:
  22398.  
  22399.        set -xv
  22400.  
  22401.  Unset all positional parameters:
  22402.  
  22403.        set --
  22404.  
  22405.  Set $1 to the value of x, even if x begins with - or +:
  22406.  
  22407.        set -- "$x"
  22408.  
  22409.  Set the positional parameters to the expansion of x, even if x expands
  22410.  with a leading - or +:
  22411.  
  22412.        set -- $x
  22413.  
  22414.  END_RATIONALE
  22415.  
  22416.  
  22417.  3.14.12  shift - Shift positional parameters
  22418.  
  22419.        shift [_n]
  22420.  
  22421.  The positional parameters shall be shifted.  Positional parameter 1 shall
  22422.  be assigned the value of parameter (1+_n), parameter 2 shall be assigned
  22423.  the value of parameter (2+_n), and so forth.  The parameters represented
  22424.  by the numbers $# down to $#-_n+1 shall be unset, and the parameter #
  22425.  shall be updated to reflect the new number of positional parameters.
  22426.  
  22427.  The value _n shall be an unsigned decimal integer less than or equal to
  22428.  the value of the special parameter #.  If _n is not given, it shall be
  22429.  
  22430.  
  22431.                Copyright c 1991 IEEE.  All rights reserved.
  22432.       This is an unapproved IEEE Standards Draft, subject to change.
  22433.  
  22434.  
  22435.  
  22436.  
  22437.  
  22438.  310                                              3 Shell Command Language
  22439.  
  22440.  
  22441.  
  22442.  
  22443.  
  22444.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  22445.  
  22446.  assumed to be 1.  If _n is 0, the positional and special parameters shall
  22447.  not be changed.
  22448.  
  22449.  _E_x_i_t__S_t_a_t_u_s
  22450.  
  22451.  The exit status shall be >0 if _n>$#; otherwise, it shall be zero.
  22452.  
  22453.  BEGIN_RATIONALE
  22454.  
  22455.  
  22456.  3.14.12.1  shift Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  22457.  
  22458.  Example:
  22459.  
  22460.        set a b c d e
  22461.        shift 2
  22462.        echo $*
  22463.        c d e
  22464.  
  22465.  END_RATIONALE
  22466.  
  22467.  
  22468.  3.14.13  trap - Trap signals
  22469.  
  22470.        trap [_a_c_t_i_o_n _c_o_n_d_i_t_i_o_n ...]
  22471.  
  22472.  If _a_c_t_i_o_n is -, the shell shall reset each _c_o_n_d_i_t_i_o_n to the default
  22473.  value.  If _a_c_t_i_o_n is null (''), the shell shall ignore each of the
  22474.  specified _c_o_n_d_i_t_i_o_ns if they arise.  Otherwise, the argument _a_c_t_i_o_n shall
  22475.  be read and executed by the shell when one of the corresponding
  22476.  conditions arises.  The action of the trap shall override a previous
  22477.  action (either default action or one explicitly set).  The value of $?
  22478.  after the trap action completes shall be the value it had before the trap
  22479.  was invoked.
  22480.  
  22481.  The condition can be EXIT, 0 (equivalent to EXIT), or a signal specified
  22482.  using a symbolic name, without the SIG prefix, as listed in Required       1
  22483.  Signals and Job Control Signals (Table 3-1 and Table 3-2 in POSIX.1 {8}).
  22484.  (For example:  HUP, INT, QUIT, TERM).  Setting a trap for SIGKILL or
  22485.  SIGSTOP produces undefined results.
  22486.  
  22487.  The environment in which the shell executes a trap on EXIT shall be
  22488.  identical to the environment immediately after the last command executed
  22489.  before the trap on EXIT was taken.
  22490.  
  22491.  Each time the trap is invoked, the _a_c_t_i_o_n argument shall be processed in
  22492.  a manner equivalent to:
  22493.  
  22494.        eval "$action"
  22495.  
  22496.  
  22497.                Copyright c 1991 IEEE.  All rights reserved.
  22498.       This is an unapproved IEEE Standards Draft, subject to change.
  22499.  
  22500.  
  22501.  
  22502.  
  22503.  
  22504.  3.14 Special Built-in Utilities                                       311
  22505.  
  22506.  
  22507.  
  22508.  
  22509.  
  22510.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  22511.  
  22512.  Signals that were ignored on entry to a noninteractive shell cannot be
  22513.  trapped or reset, although no error need be reported when attempting to
  22514.  do so.  An interactive shell may reset or catch signals ignored on entry.
  22515.  Traps shall remain in place for a given shell until explicitly changed
  22516.  with another trap command.
  22517.  
  22518.  The trap command with no arguments shall write to standard output a list
  22519.  of commands associated with each condition.  The format is:
  22520.  
  22521.        "trap -- %s %s ...\n", <_a_c_t_i_o_n>, <_c_o_n_d_i_t_i_o_n> ...                     1
  22522.  
  22523.  The shell shall format the output, including the proper use of quoting,
  22524.  so that it is suitable for re-input to the shell as commands that achieve
  22525.  the same trapping results.
  22526.  
  22527.  An implementation may allow numeric signal numbers for the conditions as
  22528.  an extension, if and only if the following map of signal numbers to names
  22529.  is true:
  22530.  
  22531.                   Signal   Signal        Signal   Signal
  22532.                   Number    Name         Number    Name
  22533.                   ______   _______       ______   _______
  22534.                     1      SIGHUP           9     SIGKILL
  22535.                     2      SIGINT          14     SIGALRM
  22536.                     3      SIGQUIT         15     SIGTERM
  22537.                     6      SIGABRT
  22538.  
  22539.  Otherwise, it shall be an error for the application to use numeric signal
  22540.  numbers.
  22541.  
  22542.  The trap special built-in shall conform to the utility argument syntax
  22543.  guidelines described in 2.10.2.
  22544.  
  22545.  _E_x_i_t__S_t_a_t_u_s
  22546.  
  22547.  If the trap name or number is invalid, a nonzero exit status shall be
  22548.  returned; otherwise, zero shall be returned.  For both interactive and
  22549.  noninteractive shells, invalid signal names or numbers shall not be
  22550.  considered a syntax error and shall not cause the shell to abort.
  22551.  
  22552.  BEGIN_RATIONALE
  22553.  
  22554.  3.14.13.1  trap Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  22555.  
  22556.  Implementations may permit lowercase signal names as an extension.         1
  22557.  Implementations may also accept the names with the SIG prefix; no known    1
  22558.  historical shell does so.  The trap and kill utilities in POSIX.2 are now  1
  22559.  consistent in their omission of the SIG prefix for signal names.  Some     1
  22560.  kill implementations do not allow the prefix and kill -l lists the         1
  22561.  
  22562.  
  22563.                Copyright c 1991 IEEE.  All rights reserved.
  22564.       This is an unapproved IEEE Standards Draft, subject to change.
  22565.  
  22566.  
  22567.  
  22568.  
  22569.  
  22570.  312                                              3 Shell Command Language
  22571.  
  22572.  
  22573.  
  22574.  
  22575.  
  22576.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  22577.  
  22578.  signals without prefixes.                                                  1
  22579.  
  22580.  As stated previously, when a subshell is entered, traps are set to the     1
  22581.  default actions.  This does not imply that the trap command cannot be      1
  22582.  used within the subshell to set new traps.                                 1
  22583.  
  22584.  Trapping SIGKILL or SIGSTOP is accepted by some historical
  22585.  implementations, but it does not work.  Portable POSIX.2 applications
  22586.  cannot try it.
  22587.  
  22588.  The output format is not historical practice.  Since the output of
  22589.  historical traps is not portable (because numeric signal values are not
  22590.  portable) and had to change to become so, an opportunity was taken to
  22591.  format the output in a way that a shell script could use to save and then
  22592.  later reuse a trap if it wanted.  For example:
  22593.  
  22594.        save_traps=$(trap)
  22595.        ...
  22596.        eval "$save_traps"
  22597.  
  22598.  The KornShell uses an ERR trap that is triggered whenever set -e would
  22599.  cause an exit.  This is allowable as an extension, but was not mandated,
  22600.  as other shells have not used it.
  22601.  
  22602.  The text about the environment for the EXIT trap invalidates the behavior
  22603.  of some historical versions of interactive shells which, e.g., close the
  22604.  standard input before executing a trap on 0.  For example, in some
  22605.  historical interactive shell sessions the following trap on 0 would
  22606.  always print --:
  22607.  
  22608.        trap 'read foo; echo "-$foo-"' 0
  22609.  
  22610.  Examples:
  22611.  
  22612.  Write out a list of all traps and actions:
  22613.  
  22614.        trap
  22615.  
  22616.  Set a trap so the logout utility in the HOME directory will execute when
  22617.  the shell terminates:
  22618.  
  22619.        trap '$HOME/logout' EXIT
  22620.  
  22621.        _o_r
  22622.        trap '$HOME/logout' 0
  22623.  
  22624.  Unset traps on INT, QUIT, TERM, and EXIT:
  22625.  
  22626.  
  22627.  
  22628.  
  22629.                Copyright c 1991 IEEE.  All rights reserved.
  22630.       This is an unapproved IEEE Standards Draft, subject to change.
  22631.  
  22632.  
  22633.  
  22634.  
  22635.  
  22636.  3.14 Special Built-in Utilities                                       313
  22637.  
  22638.  
  22639.  
  22640.  
  22641.  
  22642.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  22643.  
  22644.        trap - INT QUIT TERM EXIT
  22645.  
  22646.  END_RATIONALE
  22647.  
  22648.  
  22649.  3.14.14  unset - Unset values and attributes of variables and functions
  22650.  
  22651.        unset  [-fv] _n_a_m_e ...                                                1
  22652.  
  22653.  Each variable or function specified by _n_a_m_e shall be unset.
  22654.  
  22655.  If -v is specified, _n_a_m_e refers to a variable name and the shell shall     1
  22656.  unset it and remove it from the environment.  Read-only variables cannot   1
  22657.  be unset.                                                                  1
  22658.  
  22659.  If -f is specified, _n_a_m_e refers to a function and the shell shall unset    1
  22660.  the function definition.                                                   1
  22661.  
  22662.  If neither -f nor -v is specified, _n_a_m_e refers to a variable; if a         1
  22663.  variable by that name does not exist, it is unspecified whether a          1
  22664.  function by that name, if any, shall be unset.                             1
  22665.  
  22666.  Unsetting a variable or function that was not previously set shall not be
  22667.  considered an error and shall not cause the shell to abort.                1
  22668.  
  22669.  The unset special built-in shall conform to the utility argument syntax
  22670.  guidelines described in 2.10.2.
  22671.  
  22672.  _E_x_i_t__S_t_a_t_u_s
  22673.  
  22674.      0    All _n_a_m_es were successfully unset.
  22675.  
  22676.     >0    At least one _n_a_m_e could not be unset.
  22677.  
  22678.  BEGIN_RATIONALE
  22679.  
  22680.  
  22681.  3.14.14.1  unset Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  22682.  
  22683.  Note that
  22684.  
  22685.        VARIABLE=
  22686.  
  22687.  is not equivalent to an unset of VARIABLE; in the example, VARIABLE is
  22688.  set to "".  Also, the ``variables'' that can be unset should not be
  22689.  misinterpreted to include the special parameters (see 3.5.2).
  22690.  
  22691.  Consideration was given to omitting the -f option in favor of an
  22692.  unfunction utility, but decided to retain existing practice.
  22693.  
  22694.  
  22695.                Copyright c 1991 IEEE.  All rights reserved.
  22696.       This is an unapproved IEEE Standards Draft, subject to change.
  22697.  
  22698.  
  22699.  
  22700.  
  22701.  
  22702.  314                                              3 Shell Command Language
  22703.  
  22704.  
  22705.  
  22706.  
  22707.  
  22708.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  22709.  
  22710.  The -v option was introduced because System V historically used one name   1
  22711.  space for both variables and functions.  When unset is used without        1
  22712.  options, System V historically unset either a function or a variable and   1
  22713.  there was no confusion about which one was intended.  A portable POSIX.2   1
  22714.  application can use unset without an option to unset a variable, but not   1
  22715.  a function; the -f option must be used.                                    1
  22716.  
  22717.  Examples:
  22718.  
  22719.  Unset the VISUAL variable:
  22720.  
  22721.        unset -v VISUAL                                                      1
  22722.  
  22723.  Unset the functions foo and bar:
  22724.  
  22725.        unset -f foo bar
  22726.  
  22727.  END_RATIONALE
  22728.  
  22729.  
  22730.  
  22731.  
  22732.  
  22733.  
  22734.  
  22735.  
  22736.  
  22737.  
  22738.  
  22739.  
  22740.  
  22741.  
  22742.  
  22743.  
  22744.  
  22745.  
  22746.  
  22747.  
  22748.  
  22749.  
  22750.  
  22751.  
  22752.  
  22753.  
  22754.  
  22755.  
  22756.  
  22757.  
  22758.  
  22759.  
  22760.  
  22761.                Copyright c 1991 IEEE.  All rights reserved.
  22762.       This is an unapproved IEEE Standards Draft, subject to change.
  22763.  
  22764.  
  22765.  
  22766.  
  22767.  
  22768.  3.14 Special Built-in Utilities                                       315
  22769.  
  22770.  
  22771.  
  22772.  
  22773.  
  22774.  
  22775.  
  22776.  
  22777.  
  22778.  
  22779.  
  22780.  
  22781.  
  22782.  
  22783.  
  22784.  
  22785.  
  22786.  
  22787.  
  22788.  
  22789.  
  22790.  
  22791.  
  22792.  
  22793.  
  22794.  
  22795.  
  22796.  
  22797.  
  22798.  
  22799.  
  22800.  
  22801.  
  22802.  
  22803.  
  22804.  
  22805.  
  22806.  
  22807.  
  22808.  
  22809.  
  22810.  
  22811.  
  22812.  
  22813.  
  22814.  
  22815.  
  22816.  
  22817.  
  22818.  
  22819.  
  22820.  
  22821.  
  22822.  
  22823.  
  22824.  
  22825.  
  22826.  
  22827.  
  22828.  
  22829.  
  22830.  
  22831.  
  22832.  
  22833.  
  22834.  
  22835.  
  22836.  
  22837.  
  22838.  
  22839.  
  22840.                                                              P1003.2/D11.2
  22841.  
  22842.  
  22843.  
  22844.  
  22845.  
  22846.  
  22847.  
  22848.  
  22849.                 Section 4: Execution Environment Utilities
  22850.  
  22851.  
  22852.  
  22853.  The Execution Environment Utilities are the utilities that shall be
  22854.  implemented in all conforming POSIX.2 systems.
  22855.  
  22856.  
  22857.  
  22858.  4.1  awk - Pattern scanning and processing language
  22859.  
  22860.  
  22861.  4.1.1  Synopsis
  22862.  
  22863.  awk  [-F _E_R_E] [-v _a_s_s_i_g_n_m_e_n_t] ...  _p_r_o_g_r_a_m [_a_r_g_u_m_e_n_t ...]
  22864.  
  22865.  awk  [-F _E_R_E] -f _p_r_o_g_f_i_l_e ...  [-v _a_s_s_i_g_n_m_e_n_t] ...  [_a_r_g_u_m_e_n_t ...]
  22866.  
  22867.  
  22868.  4.1.2  Description
  22869.  
  22870.  The awk utility shall execute programs written in the _a_w_k programming
  22871.  language, which is specialized for textual data manipulation.  An awk
  22872.  program is a sequence of patterns and corresponding actions.  When input
  22873.  is read that matches a pattern, the action associated with that pattern
  22874.  shall be carried out.
  22875.  
  22876.  Input shall be interpreted as a sequence of records.  By default, a
  22877.  record is a line, but this can be changed by using the RS built-in
  22878.  variable.  Each record of input shall be matched in turn against each
  22879.  pattern in the program.  For each pattern matched, the associated action
  22880.  shall be executed.
  22881.  
  22882.  The awk utility shall interpret each input record as a sequence of fields
  22883.  where, by default, a field is a string of non-<blank> characters.  This
  22884.  default white space field delimiter can be changed by using the FS
  22885.  built-in variable or the -F _E_R_E.  The awk utility shall denote the first
  22886.  field in a record $1, the second $2, and so forth.  The symbol $0 shall
  22887.  refer to the entire record; setting any other field shall cause the
  22888.  reevaluation of $0.  Assigning to $0 shall reset the values of all other   1
  22889.  fields and the NF built-in variable.                                       1
  22890.  
  22891.  
  22892.  
  22893.                Copyright c 1991 IEEE.  All rights reserved.
  22894.       This is an unapproved IEEE Standards Draft, subject to change.
  22895.  
  22896.  
  22897.  
  22898.  
  22899.  
  22900.  4.1 awk - Pattern scanning and processing language                    317
  22901.  
  22902.  
  22903.  
  22904.  
  22905.  
  22906.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  22907.  
  22908.  4.1.3  Options
  22909.  
  22910.  The awk utility shall conform to the utility argument syntax guidelines
  22911.  described in 2.10.2.
  22912.  
  22913.  The following options shall be supported by the implementation:
  22914.  
  22915.     -F _E_R_E      Define the input field separator to be the extended
  22916.                 regular expression _E_R_E, before any input is read (see
  22917.                 4.1.7.4).
  22918.  
  22919.     -f _p_r_o_g_f_i_l_e Specifies the pathname of the file _p_r_o_g_f_i_l_e containing an
  22920.                 awk program.  If multiple instances of this option are
  22921.                 specified, the concatenation of the files specified as
  22922.                 _p_r_o_g_f_i_l_e in the order specified shall be the awk program.
  22923.                 The awk program can alternatively be specified in the
  22924.                 command line as a single argument.
  22925.  
  22926.     -v _a_s_s_i_g_n_m_e_n_t
  22927.                 The _a_s_s_i_g_n_m_e_n_t argument shall be in the same form as an
  22928.                 _a_s_s_i_g_n_m_e_n_t operand.  The specified variable assignment
  22929.                 shall occur prior to executing the awk program, including
  22930.                 the actions associated with BEGIN patterns (if any).
  22931.                 Multiple occurrences of this option can be specified.
  22932.  
  22933.  
  22934.  4.1.4  Operands
  22935.  
  22936.  The following operands shall be supported by the implementation:
  22937.  
  22938.     _p_r_o_g_r_a_m     If no -f option is specified, the first operand to awk
  22939.                 shall be the text of the awk program.  The application
  22940.                 shall supply the _p_r_o_g_r_a_m operand as a single argument to
  22941.                 awk.  If the text does not end in a <newline> character,
  22942.                 awk shall interpret the text as if it did.
  22943.  
  22944.     _a_r_g_u_m_e_n_t    Either of the following two types of _a_r_g_u_m_e_n_ts can be
  22945.                 intermixed:
  22946.  
  22947.                    _f_i_l_e  A pathname of a file that contains the input to
  22948.                          be read, which is matched against the set of
  22949.                          patterns in the program.  If no _f_i_l_e operands are
  22950.                          specified, or if a _f_i_l_e operand is -, the
  22951.                          standard input shall be used.
  22952.  
  22953.                    _a_s_s_i_g_n_m_e_n_t
  22954.                          An operand that begins with an underscore or
  22955.                          alphabetic character from the portable character
  22956.                          set (see Table 2-3 in 2.4), followed by a
  22957.  
  22958.  
  22959.                Copyright c 1991 IEEE.  All rights reserved.
  22960.       This is an unapproved IEEE Standards Draft, subject to change.
  22961.  
  22962.  
  22963.  
  22964.  
  22965.  
  22966.  318                                     4 Execution Environment Utilities
  22967.  
  22968.  
  22969.  
  22970.  
  22971.  
  22972.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  22973.  
  22974.                          sequence of underscores, digits, and alphabetics
  22975.                          from the portable character set, followed by the
  22976.                          = character shall specify a variable assignment
  22977.                          rather than a pathname.  The characters before
  22978.                          the = shall represent the name of an awk
  22979.                          variable; if that name is an awk reserved word
  22980.                          (see 4.1.7.7) the behavior is undefined.  The
  22981.                          characters following the equals-sign shall be
  22982.                          interpreted as if they appeared in the awk
  22983.                          program preceded and followed by a double-quote
  22984.                          (") character, as a STRING token (see 4.1.7.7),
  22985.                          except that if the last character is an unescaped
  22986.                          backslash, it shall be interpreted as a literal
  22987.                          backslash rather than as the first character of
  22988.                          the sequence ``\"''.  The variable shall be
  22989.                          assigned the value of that STRING token.  If that
  22990.                          value is considered a _n_u_m_e_r_i_c _s_t_r_i_n_g (see
  22991.                          4.1.7.2), the variable shall also be assigned its
  22992.                          numeric value.  Each such variable assignment
  22993.                          shall occur just prior to the processing of the
  22994.                          following _f_i_l_e, if any.  Thus, an assignment
  22995.                          before the first _f_i_l_e argument shall be executed
  22996.                          after the BEGIN actions (if any), while an
  22997.                          assignment after the last _f_i_l_e argument shall
  22998.                          occur before the END actions (if any).  If there
  22999.                          are no _f_i_l_e arguments, assignments shall be
  23000.                          executed before processing the standard input.
  23001.  
  23002.  
  23003.  4.1.5  External Influences
  23004.  
  23005.  
  23006.  4.1.5.1  Standard Input
  23007.  
  23008.  The standard input shall be used only if no _f_i_l_e operands are specified,
  23009.  or if a _f_i_l_e operand is -.  See Input Files.
  23010.  
  23011.  4.1.5.2  Input Files
  23012.  
  23013.  Input files to the awk program from any of the following sources:          1
  23014.  
  23015.      - Any _f_i_l_e operands or their equivalents, achieved by modifying the    1
  23016.        awk variables ARGV and ARGC                                          1
  23017.  
  23018.      - Standard input in the absence of any _f_i_l_e operands                   1
  23019.  
  23020.      - Arguments to the getline function                                    1
  23021.  
  23022.  
  23023.  
  23024.  
  23025.                Copyright c 1991 IEEE.  All rights reserved.
  23026.       This is an unapproved IEEE Standards Draft, subject to change.
  23027.  
  23028.  
  23029.  
  23030.  
  23031.  
  23032.  4.1 awk - Pattern scanning and processing language                    319
  23033.  
  23034.  
  23035.  
  23036.  
  23037.  
  23038.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  23039.  
  23040.  shall be text files.  Whether the variable RS is set to a value other      1
  23041.  than <newline> or not, for these files, the implementation shall support   1
  23042.  records terminated with the specified separator up to {LINE_MAX} bytes     1
  23043.  and may support longer records.                                            1
  23044.  
  23045.  If -f _p_r_o_g_f_i_l_e is specified, the file(s) named by _p_r_o_g_f_i_l_e shall be text
  23046.  file(s) containing an awk program.
  23047.  
  23048.  
  23049.  4.1.5.3  Environment Variables
  23050.  
  23051.  The following environment variables shall affect the execution of awk:
  23052.  
  23053.     LANG               This variable shall determine the locale to use for
  23054.                        the locale categories when both LC_ALL and the
  23055.                        corresponding environment variable (beginning with
  23056.                        LC_) do not specify a locale.  See 2.6.
  23057.  
  23058.     LC_ALL             This variable shall determine the locale to be used
  23059.                        to override any values for locale categories
  23060.                        specified by the settings of LANG or any
  23061.                        environment variables beginning with LC_.
  23062.  
  23063.     LC_CTYPE           This variable shall determine the locale for the
  23064.                        interpretation of sequences of bytes of text data
  23065.                        as characters (e.g., single- versus multibyte
  23066.                        characters in arguments and input files), the
  23067.                        behavior of character classes within regular
  23068.                        expressions, the identification of characters as
  23069.                        letters, and the mapping of upper- and lowercase
  23070.                        characters for the toupper and tolower functions.
  23071.  
  23072.     LC_COLLATE         This variable shall determine the locale for the
  23073.                        behavior of ranges, equivalence classes, and
  23074.                        multicharacter collating elements within regular
  23075.                        expressions and in comparisons of string values.
  23076.  
  23077.     LC_MESSAGES        This variable shall determine the language in which
  23078.                        messages should be written.
  23079.  
  23080.     LC_NUMERIC         This variable shall determine the radix character
  23081.                        used when interpreting numeric input, performing
  23082.                        conversions between numeric and string values, and
  23083.                        formatting numeric output.
  23084.  
  23085.     PATH               This variable shall define the search path when
  23086.                        looking for commands executed by system(_e_x_p_r), or
  23087.                        input and output pipes.  See 2.6.
  23088.  
  23089.  
  23090.  
  23091.                Copyright c 1991 IEEE.  All rights reserved.
  23092.       This is an unapproved IEEE Standards Draft, subject to change.
  23093.  
  23094.  
  23095.  
  23096.  
  23097.  
  23098.  320                                     4 Execution Environment Utilities
  23099.  
  23100.  
  23101.  
  23102.  
  23103.  
  23104.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  23105.  
  23106.  In addition, all environment variables shall be visible via the awk
  23107.  variable ENVIRON.
  23108.  
  23109.  
  23110.  4.1.5.4  Asynchronous Events
  23111.  
  23112.  Default.
  23113.  
  23114.  
  23115.  4.1.6  External Effects
  23116.  
  23117.  4.1.6.1  Standard Output
  23118.  
  23119.  The nature of the output files depends on the awk program.
  23120.  
  23121.  
  23122.  4.1.6.2  Standard Error
  23123.  
  23124.  Used only for diagnostic messages.
  23125.  
  23126.  4.1.6.3  Output Files
  23127.  
  23128.  The nature of the output files depends on the awk program.
  23129.  
  23130.  
  23131.  4.1.7  Extended Description
  23132.  
  23133.  
  23134.  4.1.7.1  Overall Program Structure
  23135.  
  23136.  An awk program is composed of pairs of the form:
  23137.  
  23138.        _p_a_t_t_e_r_n { _a_c_t_i_o_n }
  23139.  
  23140.  Either the pattern or the action (including the enclosing brace
  23141.  characters) can be omitted.
  23142.  
  23143.  A missing pattern shall match any record of input, and a missing action
  23144.  shall be equivalent to an action that writes the matched record of input
  23145.  to standard output.
  23146.  
  23147.  Execution of the awk program shall start by first executing the actions
  23148.  associated with all BEGIN patterns in the order they occur in the
  23149.  program.  Then each _f_i_l_e operand (or standard input if no files were
  23150.  specified) shall be processed in turn by reading data from the file until
  23151.  a record separator is seen (<newline> by default), splitting the current   1
  23152.  record into fields using the current value of FS according to the rules    1
  23153.  in 4.1.7.4, evaluating each pattern in the program in the order of         1
  23154.  occurrence, and executing the action associated with each pattern that
  23155.  matches the current record.  The action for a matching pattern shall be
  23156.  
  23157.                Copyright c 1991 IEEE.  All rights reserved.
  23158.       This is an unapproved IEEE Standards Draft, subject to change.
  23159.  
  23160.  
  23161.  
  23162.  
  23163.  
  23164.  4.1 awk - Pattern scanning and processing language                    321
  23165.  
  23166.  
  23167.  
  23168.  
  23169.  
  23170.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  23171.  
  23172.  executed before evaluating subsequent patterns.  Last, the actions
  23173.  associated with all END patterns shall be executed in the order they
  23174.  occur in the program.
  23175.  
  23176.  
  23177.  4.1.7.2  Expressions
  23178.  
  23179.  
  23180.           Table 4-1  -  awk Expressions in Decreasing Precedence
  23181.  ___________________________________________________________________________
  23182.                                           Semantic        Type of
  23183.      Syntax              Name            Definition        Result      Assoc
  23184.  ___________________________________________________________________________
  23185.  (____e__x__p__r_)_______G_r_o_u_p_i_n_g_________________C__S_t_a_n_d_a_r_d__{_7_}_t_y_p_e__o_f____e__x__p__r______n_/_a___
  23186.  $_e_x_p_r         Field reference         4.1.7.2       string            n/a
  23187.  ___________________________________________________________________________
  23188.  ++ _l_v_a_l_u_e     Pre-increment           C Standard {7}numeric           n/a
  23189.  -- _l_v_a_l_u_e     Pre-decrement           C Standard {7}numeric           n/a
  23190.  _l_v_a_l_u_e ++     Post-increment          C Standard {7}numeric           n/a
  23191.  __l__v__a__l__u__e_-_-______P_o_s_t_-_d_e_c_r_e_m_e_n_t___________C__S_t_a_n_d_a_r_d__{_7_}_n_u_m_e_r_i_c____________n_/_a___
  23192.  _e_x_p_r ^ _e_x_p_r   Exponentiation          4.1.7.2       numeric           right
  23193.  ___________________________________________________________________________
  23194.  ! _e_x_p_r        Logical not             C Standard {7}numeric           n/a
  23195.  + _e_x_p_r        Unary plus              C Standard {7}numeric           n/a
  23196.  -____e__x__p__r________U_n_a_r_y__m_i_n_u_s______________C__S_t_a_n_d_a_r_d__{_7_}_n_u_m_e_r_i_c____________n_/_a___
  23197.  _e_x_p_r * _e_x_p_r   Multiplication          C Standard {7}numeric           left
  23198.  _e_x_p_r / _e_x_p_r   Division                C Standard {7}numeric           left
  23199.  _|e_x_p_r % _e_x_p_r   M|odulus                 4|.1.7.2       n|umeric           l|eft |
  23200.  _|______________|________________________|______________|__________________|____|
  23201.  _|e_x_p_r + _e_x_p_r   A|ddition                C| Standard {7}n|umeric           l|eft |
  23202.  _|_e__x__p__r_-____e__x__p__r___S|_u_b_t_r_a_c_t_i_o_n______________C|__S_t_a_n_d_a_r_d__{_7_}_n|_u_m_e_r_i_c____________l|_e_f_t__|
  23203.  _|e_x_p_r _e_x_p_r     S|tring concatenation    4|.1.7.2       s|tring            l|eft |
  23204.  _|______________|________________________|______________|__________________|____|
  23205.  _|e_x_p_r < _e_x_p_r   L|ess than               4|.1.7.2       n|umeric           n|one |
  23206.  _|e_x_p_r <= _e_x_p_r  L|ess than or equal to   4|.1.7.2       n|umeric           n|one |
  23207.  _|e_x_p_r != _e_x_p_r  N|ot equal to            4|.1.7.2       n|umeric           n|one |
  23208.  _|e_x_p_r == _e_x_p_r  E|qual to                4|.1.7.2       n|umeric           n|one |
  23209.  _|e_x_p_r > _e_x_p_r   G|reater than            4|.1.7.2       n|umeric           n|one |
  23210.  _|_e__x__p__r_>_=____e__x__p__r__G|_r_e_a_t_e_r__t_h_a_n__o_r__e_q_u_a_l__t_o_4|_._1_._7_._2________n|_u_m_e_r_i_c____________n|_o_n_e__|
  23211.  _|e_x_p_r   _e_x_p_r   E|RE match               4|.1.7.4       n|umeric           n|one |
  23212.  _|e_x_p_r ~!  _e_x_p_r  E|RE nonmatch            4|.1.7.4       n|umeric           n|one |
  23213.  _|_____~_________|________________________|______________|__________________|____|
  23214.  _|e_x_p_r in array A|rray membership        4|.1.7.2       n|umeric           l|eft |
  23215.  (| _i_n_d_e_x ) in  M|ultidimension array    4|.1.7.2       n|umeric           l|eft |
  23216.  _|_____a__r__r__a__y______|___m_e_m_b_e_r_s_h_i_p____________|______________|__________________|____|
  23217.  _|e_x_p_r && _e_x_p_r  L|ogical AND             C| Standard {7}n|umeric           l|eft 1|
  23218.  _|______________|________________________|______________|__________________|____1|
  23219.  _|_e__x__p__r_|_|____e__x__p__r__L|_o_g_i_c_a_l__O_R_______________C|__S_t_a_n_d_a_r_d__{_7_}_n|_u_m_e_r_i_c____________l|_e_f_t__1|1
  23220.  _|e_x_p_r_1 ? _e_x_p_r_2 C|onditional expression  C| Standard {7}t|ype of selected  r|ight1|
  23221.  |             |                       |             |                 |    |
  23222.  |             |                       |             |                 |    |
  23223.  |             C|opyright c 1991 IEEE.  A|ll rights rese|rved.            |    |
  23224.  |    This is an| unapproved IEEE Standar|ds Draft, subj|ect to change.   |    |
  23225.  |             |                       |             |                 |    |
  23226.  |             |                       |             |                 |    |
  23227.  |             |                       |             |                 |    |
  23228.  |             |                       |             |                 |    |
  23229.  |             |                       |             |                 |    |
  23230.  3|22           |                       | 4 Execution E|nvironment Utiliti|es  |
  23231.  |             |                       |             |                 |    |
  23232.  |             |                       |             |                 |    |
  23233.  |             |                       |             |                 |    |
  23234.  |             |                       |             |                 |    |
  23235.  |             |                       |             |                 |    |
  23236.  P|art 2: SHELL A|ND UTILITIES           |             |       P1003.2/D11|.2  |
  23237.  |             |                       |             |                 |    |
  23238.  |   : _e_x_p_r_3   |                       |             |   _e_x_p_r_2 or _e_x_p_r_3|    |
  23239.  _|______________|________________________|______________|__________________|____|
  23240.  _|l_v_a_l_u_e ^= _e_x_p_rE|xponentiation          4|.1.7.2       n|umeric           r|ight|
  23241.  |             a|ssignment              |             |                 |    |
  23242.  _|l_v_a_l_u_e %= _e_x_p_rM|odulus assignment      4|.1.7.2       n|umeric           r|ight|
  23243.  _|l_v_a_l_u_e *= _e_x_p_rM|ultiplication          C| Standard {7}n|umeric           r|ight|
  23244.  |             a|ssignment              |             |                 |    |
  23245.  _|l_v_a_l_u_e /= _e_x_p_rD|ivision assignment     C| Standard {7}n|umeric           r|ight|
  23246.  _|l_v_a_l_u_e += _e_x_p_rA|ddition assignment     C| Standard {7}n|umeric           r|ight|
  23247.  _|l_v_a_l_u_e -= _e_x_p_rS|ubtraction assignment  C| Standard {7}n|umeric           r|ight|
  23248.  _|_l__v__a__l__u__e_=____e__x__p__r_A|_s_s_i_g_n_m_e_n_t_______________C|__S_t_a_n_d_a_r_d__{_7_}_t|_y_p_e__o_f____e__x__p__r______r|_i_g_h_t_|
  23249.  
  23250.  
  23251.  
  23252.  
  23253.  Expressions describe computations used in _p_a_t_t_e_r_n_s and _a_c_t_i_o_n_s.  In
  23254.  Table 4-1, valid expression operations are given in groups from highest
  23255.  precedence first to lowest precedence last, with equal-precedence
  23256.  operators grouped between horizontal lines.  In expression evaluation,
  23257.  higher precedence operators shall be evaluated before lower precedence
  23258.  operators.  In this table _e_x_p_r, _e_x_p_r_1, _e_x_p_r_2, and _e_x_p_r_3 represent any
  23259.  expression, while _l_v_a_l_u_e represents any entity that can be assigned to
  23260.  (i.e., on the left side of an assignment operator).  The precise syntax
  23261.  of expressions is given in the grammar in 4.1.7.7.
  23262.  
  23263.  Each expression shall have either a string value, a numeric value, or
  23264.  both.  Except as stated for specific contexts, the value of an expression
  23265.  shall be implicitly converted to the type needed for the context in which
  23266.  it is used.  A string value shall be converted to a numeric value by the
  23267.  equivalent of the following calls to functions defined by the
  23268.  C Standard {7}:
  23269.  
  23270.        setlocale(LC_NUMERIC, "");
  23271.        _n_u_m_e_r_i_c__v_a_l_u_e = _a_t_o_f(_s_t_r_i_n_g__v_a_l_u_e);
  23272.  
  23273.  A numeric value that is exactly equal to the value of an integer (see
  23274.  2.9.2.1) shall be converted to a string by the equivalent of a call to
  23275.  the sprintf function (see 4.1.7.6.2) with the string "%d" as the _f_m_t
  23276.  argument and the numeric value being converted as the first and only _e_x_p_r
  23277.  argument.  Any other numeric value shall be converted to a string by the
  23278.  equivalent of a call to the sprintf function with the value of the
  23279.  variable CONVFMT as the _f_m_t argument and the numeric value being
  23280.  converted as the first and only _e_x_p_r argument.  The result of the          1
  23281.  conversion is unspecified if the value of CONVFMT is not a floating-point  1
  23282.  format specification.  This standard specifies no explicit conversions     1
  23283.  between numbers and strings.  An application can force an expression to
  23284.  be treated as a number by adding zero to it, or can force it to be
  23285.  treated as a string by concatenating the null string ("") to it.
  23286.  
  23287.  
  23288.  
  23289.                Copyright c 1991 IEEE.  All rights reserved.
  23290.       This is an unapproved IEEE Standards Draft, subject to change.
  23291.  
  23292.  
  23293.  
  23294.  
  23295.  
  23296.  4.1 awk - Pattern scanning and processing language                    323
  23297.  
  23298.  
  23299.  
  23300.  
  23301.  
  23302.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  23303.  
  23304.  A string value shall be considered to be a _n_u_m_e_r_i_c _s_t_r_i_n_g in the
  23305.  following case:
  23306.  
  23307.      (1)  Any leading and trailing <blank>_s shall be ignored.
  23308.  
  23309.      (2)  If the first unignored character is a + or -, it shall be
  23310.           ignored.
  23311.  
  23312.      (3)  If the remaining unignored characters would be lexically
  23313.           recognized as a NUMBER token (as described by the lexical
  23314.           conventions in 4.1.7.7), the string shall be considered a
  23315.           _n_u_m_e_r_i_c _s_t_r_i_n_g.
  23316.  
  23317.  If a - character is ignored in the above steps, the numeric value of the
  23318.  _n_u_m_e_r_i_c _s_t_r_i_n_g shall be the negation of the numeric value of the
  23319.  recognized NUMBER token.  Otherwise the numeric value of the _n_u_m_e_r_i_c
  23320.  _s_t_r_i_n_g shall be the numeric value of the recognized NUMBER token.
  23321.  Whether or not a string is a _n_u_m_e_r_i_c _s_t_r_i_n_g shall be relevant only in
  23322.  contexts where that term is used in this clause.
  23323.  
  23324.  When an expression is used in a Boolean context (the first subexpression
  23325.  of a conditional expression, an expression operated on by logical NOT,
  23326.  logical AND, or logical OR, the second expression of a for statement, the
  23327.  expression of an if statement, or the expression of a while statement),
  23328.  if it has a numeric value, a value of zero shall be treated as false and
  23329.  any other value shall be treated as true.  Otherwise, a string value of
  23330.  the null string shall be treated as false and any other value shall be
  23331.  treated as true.
  23332.  
  23333.  All arithmetic shall follow the semantics of floating point arithmetic as
  23334.  specified by the C Standard {7}; see 2.9.2.
  23335.  
  23336.  The value of the expression
  23337.  
  23338.        _e_x_p_r_1 ^ _e_x_p_r_2
  23339.  
  23340.  shall be equivalent to the value returned by the C Standard {7} function
  23341.  call
  23342.  
  23343.        _p_o_w(_e_x_p_r_1, _e_x_p_r_2)
  23344.  
  23345.  The expression
  23346.  
  23347.        _l_v_a_l_u_e ^= _e_x_p_r
  23348.  
  23349.  shall be equivalent to the C Standard {7} expression
  23350.  
  23351.        _l_v_a_l_u_e = _p_o_w(_l_v_a_l_u_e, _e_x_p_r)
  23352.  
  23353.  
  23354.  
  23355.                Copyright c 1991 IEEE.  All rights reserved.
  23356.       This is an unapproved IEEE Standards Draft, subject to change.
  23357.  
  23358.  
  23359.  
  23360.  
  23361.  
  23362.  324                                     4 Execution Environment Utilities
  23363.  
  23364.  
  23365.  
  23366.  
  23367.  
  23368.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  23369.  
  23370.  except that _l_v_a_l_u_e shall be evaluated only once.  The value of the
  23371.  expression
  23372.  
  23373.        _e_x_p_r_1 % _e_x_p_r_2
  23374.  
  23375.  shall be equivalent to the value returned by the C Standard {7} function
  23376.  call
  23377.  
  23378.        _f_m_o_d(_e_x_p_r_1, _e_x_p_r_2)
  23379.  
  23380.  The expression
  23381.  
  23382.        _l_v_a_l_u_e %= _e_x_p_r
  23383.  
  23384.  shall be equivalent to the C Standard {7} expression
  23385.  
  23386.        _l_v_a_l_u_e = _f_m_o_d(_l_v_a_l_u_e, _e_x_p_r)
  23387.  
  23388.  except that _l_v_a_l_u_e shall be evaluated only once.
  23389.  
  23390.  Variables and fields shall be set by the assignment statement:
  23391.  
  23392.        _l_v_a_l_u_e = _e_x_p_r_e_s_s_i_o_n
  23393.  
  23394.  and the type of _e_x_p_r_e_s_s_i_o_n shall determine the resulting variable type.
  23395.  The assignment includes the arithmetic assignments (+=, -=, *=, /=, %=,
  23396.  ^=, ++, --) all of which produce a numeric result.  The left-hand side of
  23397.  an assignment and the target of increment and decrement operators can be
  23398.  one of a variable, an array with index, or a field selector.
  23399.  
  23400.  The awk language shall supply arrays that are used for storing numbers or
  23401.  strings.  Arrays need not be declared.  They shall initially be empty,
  23402.  and their sizes shall change dynamically.  The subscripts, or element
  23403.  identifiers, are strings, providing a type of associative array
  23404.  capability.  An array name followed by a subscript within square brackets
  23405.  can be used as an _l_v_a_l_u_e and thus as an expression, as described in the
  23406.  grammar (see 4.1.7.7).  Unsubscripted array names can be used in only the
  23407.  following contexts:
  23408.  
  23409.      - A parameter in a function definition or function call.
  23410.  
  23411.      - The NAME token following any use of the keyword in as specified in
  23412.        the grammar (see 4.1.7.7).  If the name used in this context is not
  23413.        an array name, the behavior is undefined.
  23414.  
  23415.  A valid array _i_n_d_e_x shall consist of one or more comma-separated
  23416.  expressions, similar to the way in which multidimensional arrays are
  23417.  indexed in some programming languages.  Because awk arrays are really one
  23418.  dimensional, such a comma-separated list shall be converted to a single
  23419.  
  23420.  
  23421.                Copyright c 1991 IEEE.  All rights reserved.
  23422.       This is an unapproved IEEE Standards Draft, subject to change.
  23423.  
  23424.  
  23425.  
  23426.  
  23427.  
  23428.  4.1 awk - Pattern scanning and processing language                    325
  23429.  
  23430.  
  23431.  
  23432.  
  23433.  
  23434.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  23435.  
  23436.  string by concatenating the string values of the separate expressions,
  23437.  each separated from the other by the value of the SUBSEP variable.  Thus,
  23438.  the following two index operations shall be equivalent:
  23439.  
  23440.        _v_a_r[_e_x_p_r_1, _e_x_p_r_2, ..., _e_x_p_r_n]
  23441.        _v_a_r[_e_x_p_r_1 _S_U_B_S_E_P _e_x_p_r_2 _S_U_B_S_E_P ... SUBSEP _e_x_p_r_n]
  23442.  
  23443.  A multidimensioned _i_n_d_e_x used with the in operator shall be
  23444.  parenthesized.  The in operator, which tests for the existence of a
  23445.  particular array element, shall not cause that element to exist.  Any
  23446.  other reference to a nonexistent array element shall automatically create
  23447.  it.
  23448.  
  23449.  Comparisons (with the <, <=, !=, ==, >, and >= operators) shall be made
  23450.  numerically if both operands are numeric or if one is numeric and the
  23451.  other has a string value that is a numeric string.  Otherwise, operands    1
  23452.  shall be converted to strings as required and a string comparison shall    1
  23453.  be made using the locale-specific collation sequence.  The value of the
  23454.  comparison expression shall be 1 if the relation is true, or 0 if the
  23455.  relation is false.
  23456.  
  23457.  
  23458.  4.1.7.3  Variables and Special Variables
  23459.  
  23460.  Variables can be used in an awk program by referencing them.  With the
  23461.  exception of function parameters (see 4.1.7.6.2), they are not explicitly
  23462.  declared.  Uninitialized scalar variables and array elements have both a
  23463.  numeric value of zero and a string value of the empty string.
  23464.  
  23465.  Field variables shall be designated by a $ followed by a number or
  23466.  numerical expression.  The effect of the field number _e_x_p_r_e_s_s_i_o_n
  23467.  evaluating to anything other than a nonnegative integer is unspecified;
  23468.  uninitialized variables or string values need not be converted to numeric
  23469.  values in this context.  New field variables can be created by assigning
  23470.  a value to them.  References to nonexistent fields (i.e., fields after
  23471.  $NF), shall produce the null string.  However, assigning to a nonexistent
  23472.  field [e.g., $(NF+_2) = 5] shall increase the value of NF, create any
  23473.  intervening fields with the null string as their values, and cause the
  23474.  value of $0 to be recomputed, with the fields being separated by the
  23475.  value of OFS.  Each field variable shall have a string value when
  23476.  created.  If the string, with any occurrence of the decimal-point
  23477.  character from the current locale changed to a <period>, would be
  23478.  considered a _n_u_m_e_r_i_c _s_t_r_i_n_g (see 4.1.7.2), the field variable shall also
  23479.  have the numeric value of the _n_u_m_e_r_i_c _s_t_r_i_n_g.
  23480.  
  23481.  The implementation shall support the following other special variables
  23482.  that are set by awk:
  23483.  
  23484.  
  23485.  
  23486.  
  23487.                Copyright c 1991 IEEE.  All rights reserved.
  23488.       This is an unapproved IEEE Standards Draft, subject to change.
  23489.  
  23490.  
  23491.  
  23492.  
  23493.  
  23494.  326                                     4 Execution Environment Utilities
  23495.  
  23496.  
  23497.  
  23498.  
  23499.  
  23500.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  23501.  
  23502.     ARGC        The number of elements in the ARGV array.
  23503.  
  23504.     ARGV        An array of command line arguments, excluding options and
  23505.                 the _p_r_o_g_r_a_m argument, numbered from zero to ARGC-_1.
  23506.  
  23507.                 The arguments in ARGV can be modified or added to; ARGC
  23508.                 can be altered.  As each input file ends, awk shall treat
  23509.                 the next nonnull element of ARGV, up through the current
  23510.                 value of ARGC-_1, as the name of the next input file.
  23511.                 Thus, setting an element of ARGV to null means that it
  23512.                 shall not be treated as an input file.  The name '-' shall
  23513.                 indicate the standard input.  If an argument matches the
  23514.                 format of an _a_s_s_i_g_n_m_e_n_t operand, this argument shall be
  23515.                 treated as an assignment rather than a _f_i_l_e argument.
  23516.  
  23517.     CONVFMT     The printf format for converting numbers to strings
  23518.                 (except for output statements, where OFMT is used); "%.6g"
  23519.                 by default.
  23520.  
  23521.     ENVIRON     The variable ENVIRON is an array representing the value of
  23522.                 the environment, as described in POSIX.1 {8} 2.7.  The
  23523.                 indices of the array shall be strings consisting of the
  23524.                 names of the environment variables, and the value of each
  23525.                 array element shall be a string consisting of the value of
  23526.                 that variable.  If the value of an environment variable is
  23527.                 considered a _n_u_m_e_r_i_c _s_t_r_i_n_g (see 4.1.7.2), the array
  23528.                 element shall also have its numeric value.
  23529.  
  23530.                 In all cases where the behavior of awk is affected by
  23531.                 environment variables [including the environment of any
  23532.                 command(s) that awk executes via the system function or
  23533.                 via pipeline redirections with the print statement, the
  23534.                 printf statement, or the getline function], the
  23535.                 environment used shall be the environment at the time awk
  23536.                 began executing; it is implementation defined whether any   1
  23537.                 modification of ENVIRON affects this environment.           1
  23538.  
  23539.     FILENAME    A pathname of the current input file.  Inside a BEGIN
  23540.                 action the value is undefined.  Inside an END action the
  23541.                 value is the name of the last input file processed.
  23542.  
  23543.     FNR         The ordinal number of the current record in the current
  23544.                 file.  Inside a BEGIN action the value is zero.  Inside an
  23545.                 END action the value is the number of the last record
  23546.                 processed in the last file processed.
  23547.  
  23548.     FS          Input field separator regular expression; <space> by
  23549.                 default.
  23550.  
  23551.  
  23552.  
  23553.                Copyright c 1991 IEEE.  All rights reserved.
  23554.       This is an unapproved IEEE Standards Draft, subject to change.
  23555.  
  23556.  
  23557.  
  23558.  
  23559.  
  23560.  4.1 awk - Pattern scanning and processing language                    327
  23561.  
  23562.  
  23563.  
  23564.  
  23565.  
  23566.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  23567.  
  23568.     NF          The number of fields in the current record.  Inside a
  23569.                 BEGIN action, the use of NF is undefined unless a getline
  23570.                 function without a _v_a_r argument is executed previously.
  23571.                 Inside an END action, NF shall retain the value it had for
  23572.                 the last record read, unless a subsequent, redirected,
  23573.                 getline function without a _v_a_r argument is performed prior
  23574.                 to entering the END action.
  23575.  
  23576.     NR          The ordinal number of the current record from the start of
  23577.                 input.  Inside a BEGIN action the value is zero.  Inside
  23578.                 an END action the value is the number of the last record
  23579.                 processed.
  23580.  
  23581.     OFMT        The printf format for converting numbers to strings in
  23582.                 output statements (see 4.1.7.6.1); "%.6g" by default.  The  2
  23583.                 result of the conversion is unspecified if the value of     2
  23584.                 OFMT is not a floating-point format specification.          2
  23585.  
  23586.     OFS         The print statement output field separation; <space> by
  23587.                 default.
  23588.  
  23589.     ORS         The print statement output record separator; <newline> by
  23590.                 default.
  23591.  
  23592.     RLENGTH     The length of the string matched by the match function.
  23593.  
  23594.     RS          The first character of the string value of RS is the input
  23595.                 record separator; <newline> by default.  If RS contains
  23596.                 more than one character, the results are unspecified.  If
  23597.                 RS is null, then records are separated by sequences of one
  23598.                 or more blank lines, leading or trailing blank lines do
  23599.                 not result in empty records at the beginning or end of the
  23600.                 input, and <newline> is always a field separator, no
  23601.                 matter what the value of FS is.
  23602.  
  23603.     RSTART      The starting position of the string matched by the match
  23604.                 function, numbering from 1.  This is always equivalent to
  23605.                 the return value of the match function.
  23606.  
  23607.     SUBSEP      The subscript separator string for multidimensional
  23608.                 arrays; the default value is implementation defined.
  23609.  
  23610.  
  23611.  4.1.7.4  Regular Expressions
  23612.  
  23613.  The awk utility shall make use of the extended regular expression
  23614.  notation (see 2.8.4) except that it shall allow the use of C-language
  23615.  conventions for escaping special characters within the EREs, as specified
  23616.  in Table 2-15 and Table 4-2; these escape sequences shall be recognized    1
  23617.  both inside and outside bracket expressions.  Note that records need not   1
  23618.  
  23619.                Copyright c 1991 IEEE.  All rights reserved.
  23620.       This is an unapproved IEEE Standards Draft, subject to change.
  23621.  
  23622.  
  23623.  
  23624.  
  23625.  
  23626.  328                                     4 Execution Environment Utilities
  23627.  
  23628.  
  23629.  
  23630.  
  23631.  
  23632.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  23633.  
  23634.  be separated by <newline>s and string constants can contain <newline>s,    1
  23635.  so even the \n sequence is valid in awk EREs.  Using a slash character     1
  23636.  within the regular expression requires the escaping shown in Table 4-2.    1
  23637.  
  23638.  A regular expression can be matched against a specific field or string by
  23639.  using one of the two regular expression matching operators,   and ! .
  23640.  These operators shall interpret their right-hand operand as ~a regul~ar
  23641.  expression and their left-hand operand as a string.  If the regular
  23642.  expression matches the string, the   expression shall evaluate to a value
  23643.  of 1, and the !  expression shall e~valuate to a value of 0.  (The regular
  23644.  expression matc~hing operation is as defined in 2.8.1.2, where a match
  23645.  occurs on any part of the string unless the regular expression is limited
  23646.  with the circumflex or dollar-sign special characters.)  If the regular
  23647.  expression does not match the string, the   expression shall evaluate to
  23648.  a value of 0, and the !  expression shall ~evaluate to a value of 1.  If
  23649.  the right-hand operand ~is any expression other than the lexical token
  23650.  ERE, the string value of the expression shall be interpreted as an
  23651.  extended regular expression, including the escape conventions described
  23652.  above.  Note that these same escape conventions also shall be applied in
  23653.  the determining the value of a string literal (the lexical token STRING),
  23654.  and thus shall be applied a second time when a string literal is used in
  23655.  this context.
  23656.  
  23657.  When an ERE token appears as an expression in any context other than as
  23658.  the right-hand of the   or !  operator or as one of the built-in function
  23659.  arguments described be~low, t~he value of the resulting expression shall be
  23660.  the equivalent of
  23661.  
  23662.        $0   /_e_r_e/
  23663.           ~
  23664.  The _E_R_E argument to the gsub, match, sub functions, and the _f_s argument
  23665.  to the split function (see 4.1.7.6.2) shall be interpreted as extended
  23666.  regular expressions.  These can be either ERE tokens or arbitrary
  23667.  expressions, and shall be interpreted in the same manner as the right-
  23668.  hand side of the   or !  operator.
  23669.                   ~     ~
  23670.  An extended regular expression can be used to separate fields by using
  23671.  the -F _E_R_E option or by assigning a string containing the expression to
  23672.  the built-in variable FS.  The default value of the FS variable shall be
  23673.  a single <space> character.  The following describes FS behavior:
  23674.  
  23675.      (1)  If FS is a single character:
  23676.  
  23677.            (a)  If FS is <space>, skip leading and trailing <blank>_s;
  23678.                 fields shall be delimited by sets of one or more <blank>_s.
  23679.  
  23680.            (b)  Otherwise, if FS is any other character _c, fields shall be
  23681.                 delimited by each single occurrence of _c.
  23682.  
  23683.  
  23684.  
  23685.                Copyright c 1991 IEEE.  All rights reserved.
  23686.       This is an unapproved IEEE Standards Draft, subject to change.
  23687.  
  23688.  
  23689.  
  23690.  
  23691.  
  23692.  4.1 awk - Pattern scanning and processing language                    329
  23693.  
  23694.  
  23695.  
  23696.  
  23697.  
  23698.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  23699.  
  23700.      (2)  Otherwise, the string value of FS shall be considered to be an
  23701.           extended regular expression.  Each occurrence of a sequence
  23702.           matching the extended regular expression shall delimit fields.
  23703.  
  23704.  Except in the gsub, match, split, and sub built-in functions, regular
  23705.  expression matching shall be based on input records; i.e., record
  23706.  separator characters (the first character of the value of the variable
  23707.  RS, <newline> by default) cannot be embedded in the expression, and no
  23708.  expression shall match the record separator character.  If the record
  23709.  separator is not <newline>, <newline> characters embedded in the
  23710.  expression can be matched.  In those four built-in functions, regular
  23711.  expression matching shall be based on text strings; i.e., any character
  23712.  (including <newline> and the record separator) can be embedded in the
  23713.  pattern and an appropriate pattern shall match any character.  However,
  23714.  in all awk regular expression matching, the use of one or more NUL
  23715.  characters in the pattern, input record, or text string produces
  23716.  undefined results.
  23717.  
  23718.  
  23719.  4.1.7.5  Patterns
  23720.  
  23721.  A _p_a_t_t_e_r_n is any valid _e_x_p_r_e_s_s_i_o_n, a range specified by two expressions
  23722.  separated by comma, or one of the two special patterns BEGIN or END.
  23723.  
  23724.  4.1.7.5.1  Special Patterns
  23725.  
  23726.  The awk utility shall recognize two special patterns, BEGIN and END.
  23727.  Each BEGIN pattern shall be matched once and its associated action
  23728.  executed before the first record of input is read [except possibly by use
  23729.  of the getline function (see 4.1.7.6.2) in a prior BEGIN action] and
  23730.  before command line assignment is done.  Each END pattern shall be
  23731.  matched once and its associated action executed after the last record of
  23732.  input has been read.  These two patterns shall have associated actions.
  23733.  
  23734.  BEGIN and END shall not combine with other patterns.  Multiple BEGIN and
  23735.  END patterns shall be allowed.  The actions associated with the BEGIN
  23736.  patterns shall be executed in the order specified in the program, as are
  23737.  the END actions.  An END pattern can precede a BEGIN pattern in a
  23738.  program.
  23739.  
  23740.  If an awk program consists of only actions with the pattern BEGIN, and
  23741.  the BEGIN action contains no getline function, awk shall exit without
  23742.  reading its input when the last statement in the last BEGIN action is
  23743.  executed.  If an awk program consists of only actions with the pattern
  23744.  END or only actions with the patterns BEGIN and END, the input shall be
  23745.  read before the statements in the END action(s) are executed.
  23746.  
  23747.  
  23748.  
  23749.  
  23750.  
  23751.                Copyright c 1991 IEEE.  All rights reserved.
  23752.       This is an unapproved IEEE Standards Draft, subject to change.
  23753.  
  23754.  
  23755.  
  23756.  
  23757.  
  23758.  330                                     4 Execution Environment Utilities
  23759.  
  23760.  
  23761.  
  23762.  
  23763.  
  23764.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  23765.  
  23766.  4.1.7.5.2  Expression Patterns
  23767.  
  23768.  An expression pattern shall be evaluated as if it were an expression in a  1
  23769.  Boolean context.  If the result is true, the pattern shall be considered   1
  23770.  to match, and the associated action (if any) shall be executed.  If the    1
  23771.  result is false, the action shall not be executed.                         1
  23772.  
  23773.  4.1.7.5.3  Pattern Ranges
  23774.  
  23775.  A pattern range consists of two expressions separated by a comma; in this
  23776.  case, the action shall be performed for all records between a match of
  23777.  the first expression and the following match of the second expression,
  23778.  inclusive.  At this point, the pattern range can be repeated starting at
  23779.  input records subsequent to the end of the matched range.
  23780.  
  23781.  
  23782.  4.1.7.6  Actions
  23783.  
  23784.  An action is a sequence of statements as shown in the grammar in 4.1.7.7.
  23785.  Any single statement can be replaced by a statement list enclosed in
  23786.  braces.  The statements in a statement list shall be separated by
  23787.  <newline>s or semicolons, and shall be executed sequentially in the order
  23788.  that they appear.
  23789.  
  23790.  The _e_x_p_r_e_s_s_i_o_n acting as the conditional in an if statement shall be
  23791.  evaluated and if it is nonzero or nonnull, the following _s_t_a_t_e_m_e_n_t shall
  23792.  be executed; otherwise, if else is present, the statement following the
  23793.  else shall be executed.
  23794.  
  23795.  The if, while, do ...  while, for, break, and continue statements are
  23796.  based on the C Standard {7} (see 2.9.2), except that the Boolean
  23797.  expressions shall be treated as described in 4.1.7.2, and except in the
  23798.  case of
  23799.  
  23800.        for (_v_a_r_i_a_b_l_e _i_n _a_r_r_a_y)
  23801.  
  23802.  which shall iterate, assigning each _i_n_d_e_x of _a_r_r_a_y to _v_a_r_i_a_b_l_e in an
  23803.  unspecified order.  The results of adding new elements to _a_r_r_a_y within
  23804.  such a for loop are undefined.  If a break or continue statement occurs
  23805.  outside of a loop, the behavior is undefined.
  23806.  
  23807.  The delete statement shall remove an individual array element.  Thus, the
  23808.  following code shall delete an entire array:
  23809.  
  23810.        for (index in array)
  23811.                delete array[index]
  23812.  
  23813.  The next statement shall cause all further processing of the current
  23814.  input record to be abandoned.  The behavior is undefined if a next
  23815.  statement appears or is invoked in a BEGIN or END action.
  23816.  
  23817.                Copyright c 1991 IEEE.  All rights reserved.
  23818.       This is an unapproved IEEE Standards Draft, subject to change.
  23819.  
  23820.  
  23821.  
  23822.  
  23823.  
  23824.  4.1 awk - Pattern scanning and processing language                    331
  23825.  
  23826.  
  23827.  
  23828.  
  23829.  
  23830.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  23831.  
  23832.  The exit statement shall invoke all END actions in the order in which
  23833.  they occur in the program source and then terminate the program without
  23834.  reading further input.  An exit statement inside an END action shall
  23835.  terminate the program without further execution of END actions.  If an
  23836.  expression is specified in an exit statement, its numeric value shall be
  23837.  the exit status of awk, unless subsequent errors are encountered or a
  23838.  subsequent exit statement with an expression is executed.
  23839.  
  23840.  4.1.7.6.1  Output Statements
  23841.  
  23842.  Both print and printf statements shall write to standard output by
  23843.  default.  The output shall be written to the location specified by
  23844.  _o_u_t_p_u_t__r_e_d_i_r_e_c_t_i_o_n if one is supplied, as follows:
  23845.  
  23846.        > _e_x_p_r_e_s_s_i_o_n
  23847.        >> _e_x_p_r_e_s_s_i_o_n
  23848.        | _e_x_p_r_e_s_s_i_o_n
  23849.  
  23850.  In all cases, the _e_x_p_r_e_s_s_i_o_n shall be evaluated to produce a string that
  23851.  is used as a full pathname to write into (for > or >>) or as a command to
  23852.  be executed (for |).  Using the first two forms, if the file of that name
  23853.  is not currently open, it shall be opened, creating it if necessary, and
  23854.  using the first form, truncating the file.  The output then shall be
  23855.  appended to the file.  As long as the file remains open, subsequent calls
  23856.  in which _e_x_p_r_e_s_s_i_o_n evaluates to the same string value simply shall
  23857.  append output to the file.  The file remains open until the close
  23858.  function (see 4.1.7.6.2).  is called with an expression that evaluates to
  23859.  the same string value.
  23860.  
  23861.  The third form shall write output onto a stream piped to the input of a
  23862.  command.  The stream shall be created if no stream is currently open with
  23863.  the value of _e_x_p_r_e_s_s_i_o_n as its command name.  The stream created shall be
  23864.  equivalent to one created by a call to the _p_o_p_e_n() function (see B.3.2)
  23865.  with the value of _e_x_p_r_e_s_s_i_o_n as the _c_o_m_m_a_n_d argument and a value of "w"
  23866.  as the _m_o_d_e argument.  As long as the stream remains open, subsequent
  23867.  calls in which _e_x_p_r_e_s_s_i_o_n evaluates to the same string value shall write
  23868.  output to the existing stream.  The stream shall remain open until the
  23869.  close function (see 4.1.7.6.2) is called with an expression that
  23870.  evaluates to the same string value.  At that time, the stream shall be
  23871.  closed as if by a call to the _p_c_l_o_s_e() function (see B.3.2).
  23872.  
  23873.  As described in detail by the grammar in 4.1.7.7, these output statements
  23874.  shall take a comma-separated list of _e_x_p_r_e_s_s_i_o_ns referred in the grammar
  23875.  by the nonterminal symbols expr_list, print_expr_list, or
  23876.  print_expr_list_opt.  This list is referred to here as the _e_x_p_r_e_s_s_i_o_n
  23877.  _l_i_s_t, and each member is referred to as an _e_x_p_r_e_s_s_i_o_n _a_r_g_u_m_e_n_t.
  23878.  
  23879.  The print statement shall write the value of each expression argument
  23880.  onto the indicated output stream separated by the current output field
  23881.  
  23882.  
  23883.                Copyright c 1991 IEEE.  All rights reserved.
  23884.       This is an unapproved IEEE Standards Draft, subject to change.
  23885.  
  23886.  
  23887.  
  23888.  
  23889.  
  23890.  332                                     4 Execution Environment Utilities
  23891.  
  23892.  
  23893.  
  23894.  
  23895.  
  23896.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  23897.  
  23898.  separator (see variable OFS above), and terminated by the output record
  23899.  separator (see variable ORS above).  All expression arguments shall be
  23900.  taken as strings, being converted if necessary; this conversion shall be   1
  23901.  as described in 4.1.7.2, with the exception that the printf format in      1
  23902.  OFMT shall be used instead of the value in CONVFMT.  An empty expression   1
  23903.  list shall stand for the whole input record ($0).
  23904.  
  23905.  The printf statement shall produce output based on a notation similar to
  23906.  the File Format Notation used to describe file formats in this standard
  23907.  (see 2.12).  Output shall be produced as specified with the first
  23908.  expression argument as the string <_f_o_r_m_a_t> and subsequent expression
  23909.  arguments as the strings <_a_r_g_1> through <_a_r_g_n>, with the following
  23910.  exceptions:
  23911.  
  23912.      (1)  The _f_o_r_m_a_t shall be an actual character string rather than a
  23913.           graphical representation.  Therefore, it cannot contain empty
  23914.           character positions.  The <space> character in the _f_o_r_m_a_t
  23915.           string, in any context other than a _f_l_a_g of a conversion
  23916.           specification, shall be treated as an ordinary character that is
  23917.           copied to the output.
  23918.  
  23919.      (2)  If the character set contains a W character and that character
  23920.           appears in the _f_o_r_m_a_t string, it shall be treated as an ordinary
  23921.           character that is copied to the output.
  23922.  
  23923.      (3)  The _e_s_c_a_p_e _s_e_q_u_e_n_c_e_s beginning with a backslash character shall
  23924.           be treated as sequences of ordinary characters that are copied
  23925.           to the output.  (Note that these same sequences shall be
  23926.           interpreted lexically by awk when they appear in literal
  23927.           strings, but they shall not be treated specially by the printf
  23928.           statement).
  23929.  
  23930.      (4)  A _f_i_e_l_d _w_i_d_t_h or _p_r_e_c_i_s_i_o_n can be specified as the * character
  23931.           instead of a digit string.  In this case the next argument from
  23932.           the expression list shall be fetched and its numeric value taken
  23933.           as the field width or precision.
  23934.  
  23935.      (5)  The implementation shall not precede or follow output from the d
  23936.           or u conversion specifications with <blank>_s not specified by
  23937.           the _f_o_r_m_a_t string.
  23938.  
  23939.      (6)  The implementation shall not precede output from the o
  23940.           conversion specification with leading zeroes not specified by
  23941.           the _f_o_r_m_a_t string.
  23942.  
  23943.      (7)  For the c conversion specification:  if the argument has a
  23944.           numeric value, the character whose encoding is that value shall
  23945.           be output.  If the value is zero or is not the encoding of any
  23946.           character in the character set, the behavior is undefined.  If
  23947.  
  23948.  
  23949.                Copyright c 1991 IEEE.  All rights reserved.
  23950.       This is an unapproved IEEE Standards Draft, subject to change.
  23951.  
  23952.  
  23953.  
  23954.  
  23955.  
  23956.  4.1 awk - Pattern scanning and processing language                    333
  23957.  
  23958.  
  23959.  
  23960.  
  23961.  
  23962.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  23963.  
  23964.           the argument does not have a numeric value, the first character
  23965.           of the string value shall be output; if the string does not
  23966.           contain any characters the behavior is undefined.
  23967.  
  23968.      (8)  For each conversion specification that consumes an argument, the
  23969.           next expression argument shall be evaluated.  With the exception
  23970.           of the c conversion, the value shall be converted (according to
  23971.           the rules specified in 4.1.7.2) to the appropriate type for the
  23972.           conversion specification.
  23973.  
  23974.      (9)  If there are insufficient expression arguments to satisfy all
  23975.           the conversion specifications in the _f_o_r_m_a_t string, the behavior
  23976.           is undefined.
  23977.  
  23978.     (10)  If any character sequence in the _f_o_r_m_a_t string begins with a %
  23979.           character, but does not form a valid conversion specification,
  23980.           the behavior is unspecified.
  23981.  
  23982.  Both print and printf can output at least {LINE_MAX} bytes.
  23983.  
  23984.  4.1.7.6.2  Functions
  23985.  
  23986.  The awk language has a variety of built-in functions: arithmetic, string,
  23987.  input/output, and general.
  23988.  
  23989.  4.1.7.6.2.1  _A_r_i_t_h_m_e_t_i_c__F_u_n_c_t_i_o_n_s
  23990.  
  23991.  The arithmetic functions, except for int, shall be based on the
  23992.  C Standard {7}; see 2.9.2.  The behavior is undefined in cases where the
  23993.  C Standard {7} specifies that an error be returned or that the behavior
  23994.  is undefined.
  23995.  
  23996.     atan2(_y,_x)         Return arctangent of _y/_x.
  23997.  
  23998.     cos(_x)             _R_e_t_u_r_n _c_o_s_i_n_e _o_f _x, _w_h_e_r_e _x _i_s _i_n _r_a_d_i_a_n_s.
  23999.  
  24000.     _s_i_n(_x)             _R_e_t_u_r_n _s_i_n_e _o_f _x, _w_h_e_r_e _x _i_s _i_n _r_a_d_i_a_n_s.
  24001.  
  24002.     _e_x_p(_x)             _R_e_t_u_r_n _t_h_e _e_x_p_o_n_e_n_t_i_a_l _f_u_n_c_t_i_o_n _o_f _x.
  24003.  
  24004.     _l_o_g(_x)             _R_e_t_u_r_n _t_h_e _n_a_t_u_r_a_l _l_o_g_a_r_i_t_h_m _o_f _x.
  24005.  
  24006.     _s_q_r_t(_x)            _R_e_t_u_r_n _t_h_e _s_q_u_a_r_e _r_o_o_t _o_f _x.
  24007.  
  24008.     _i_n_t(_x)             _T_r_u_n_c_a_t_e _i_t_s _a_r_g_u_m_e_n_t _t_o _a_n _i_n_t_e_g_e_r.  _I_t _s_h_a_l_l _b_e
  24009.                        _t_r_u_n_c_a_t_e_d _t_o_w_a_r_d _0 _w_h_e_n _x > 0.
  24010.  
  24011.     rand()             _R_e_t_u_r_n _a _r_a_n_d_o_m _n_u_m_b_e_r _n, _s_u_c_h _t_h_a_t _0 _< _n < _1.
  24012.  
  24013.  
  24014.  
  24015.                Copyright c 1991 IEEE.  All rights reserved.
  24016.       This is an unapproved IEEE Standards Draft, subject to change.
  24017.  
  24018.  
  24019.  
  24020.  
  24021.  
  24022.  334                                     4 Execution Environment Utilities
  24023.  
  24024.  
  24025.  
  24026.  
  24027.  
  24028.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  24029.  
  24030.     _s_r_a_n_d([expr])      Set the seed value for rand to _e_x_p_r or use the time
  24031.                        of day if _e_x_p_r is omitted.  The previous seed value
  24032.                        shall be returned.
  24033.  
  24034.  4.1.7.6.2.2  _S_t_r_i_n_g__F_u_n_c_t_i_o_n_s
  24035.  
  24036.  The string functions are:
  24037.  
  24038.     gsub(_e_r_e, _r_e_p_l[,_i_n])
  24039.                        Behave like sub (see below), except that it shall
  24040.                        replace all occurrences of the regular expression
  24041.                        (like the ed utility global substitute) in $0 or in
  24042.                        the _i_n argument, when specified.
  24043.  
  24044.     index(_s, _t)        Return the position, in characters, numbering from
  24045.                        1, in string _s where string _t first occurs, or zero
  24046.                        if it does not occur at all.
  24047.  
  24048.     length([_s])        Return the length, in characters, of its argument
  24049.                        taken as a string, or of the whole record, $0, if
  24050.                        there is no argument.
  24051.  
  24052.     match(_s, _e_r_e)      Return the position, in characters, numbering from
  24053.                        1, in string _s where the extended regular
  24054.                        expression _E_R_E occurs, or zero if it does not occur
  24055.                        at all.  RSTART shall be set to the starting
  24056.                        position (which is the same as the returned value),
  24057.                        zero if no match is found; RLENGTH shall be set to
  24058.                        the length of the matched string, -1 if no match is
  24059.                        found.
  24060.  
  24061.     split(_s, _a[,_f_s])   Split the string _s into array elements _a[1], _a[2],
  24062.                        ... , _a[_n], and returns _n.  The separation shall be
  24063.                        done with the extended regular expression _f_s or
  24064.                        with the field separator FS if _f_s is not given.
  24065.                        Each array element shall have a string value when
  24066.                        created.  If the string assigned to any array
  24067.                        element, with any occurrence of the decimal-point
  24068.                        character from the current locale changed to a
  24069.                        <period>, would be considered a _n_u_m_e_r_i_c _s_t_r_i_n_g (see
  24070.                        4.1.7.2), the array element shall also have the
  24071.                        numeric value of the _n_u_m_e_r_i_c _s_t_r_i_n_g.  The effect of
  24072.                        a null string as the value of _f_s is unspecified.
  24073.  
  24074.     sprintf(_f_m_t, _e_x_p_r, _e_x_p_r, ...)
  24075.                        Format the expressions according to the printf
  24076.                        format given by _f_m_t and return the resulting
  24077.                        string.
  24078.  
  24079.  
  24080.  
  24081.                Copyright c 1991 IEEE.  All rights reserved.
  24082.       This is an unapproved IEEE Standards Draft, subject to change.
  24083.  
  24084.  
  24085.  
  24086.  
  24087.  
  24088.  4.1 awk - Pattern scanning and processing language                    335
  24089.  
  24090.  
  24091.  
  24092.  
  24093.  
  24094.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  24095.  
  24096.     sub(_e_r_e, _r_e_p_l[,_i_n])
  24097.                        Substitute the string _r_e_p_l in place of the first
  24098.                        instance of the extended regular expression _E_R_E in
  24099.                        string _i_n and return the number of substitutions.
  24100.                        An ampersand (&) appearing in the string _r_e_p_l shall
  24101.                        be replaced by the string from _i_n that matches the
  24102.                        regular expression.  An ampersand preceded by a
  24103.                        backslash within _r_e_p_l shall be interpreted as a
  24104.                        literal ampersand character.  If _i_n is specified
  24105.                        and it is not an _l_v_a_l_u_e (see 4.1.7.2), the behavior
  24106.                        is undefined.  If _i_n is omitted, awk shall
  24107.                        substitute in the current record ($0).
  24108.  
  24109.     substr(_s, _m[,_n])
  24110.                        Return the at most _n-character substring of _s that
  24111.                        begins at position _m, numbering from 1.  If _n is
  24112.                        missing, the length of the substring shall be
  24113.                        limited by the length of the string _s.
  24114.  
  24115.     tolower(_s)         Return a string based on the string _s.  Each
  24116.                        character in _s that is an uppercase letter
  24117.                        specified to have a tolower mapping by the LC_CTYPE
  24118.                        category of the current locale shall be replaced in
  24119.                        the returned string by the lowercase letter
  24120.                        specified by the mapping.  Other characters in _s
  24121.                        shall be unchanged in the returned string.
  24122.  
  24123.     toupper(_s)         Return a string based on the string _s.  Each
  24124.                        character in _s that is a lowercase letter specified
  24125.                        to have a toupper mapping by the LC_CTYPE category
  24126.                        of the current locale shall be replaced in the
  24127.                        returned string by the uppercase letter specified
  24128.                        by the mapping.  Other characters in _s shall be
  24129.                        unchanged in the returned string.
  24130.  
  24131.  All of the preceding functions that take _E_R_E as a parameter expect a
  24132.  pattern or a string valued expression that is a regular expression as
  24133.  defined in 4.1.7.4.
  24134.  
  24135.  4.1.7.6.2.3  _I_n_p_u_t_/_O_u_t_p_u_t__a_n_d__G_e_n_e_r_a_l__F_u_n_c_t_i_o_n_s
  24136.  
  24137.  The input/output and general functions are:
  24138.  
  24139.     close(_e_x_p_r_e_s_s_i_o_n)  Close the file or pipe opened by a print or printf
  24140.                        statement or a call to getline with the same
  24141.                        string-valued _e_x_p_r_e_s_s_i_o_n.  The limit on the number
  24142.                        of open _e_x_p_r_e_s_s_i_o_n arguments is implementation
  24143.                        defined.  If the close was successful, the function
  24144.                        shall return zero; otherwise, it shall return
  24145.  
  24146.  
  24147.                Copyright c 1991 IEEE.  All rights reserved.
  24148.       This is an unapproved IEEE Standards Draft, subject to change.
  24149.  
  24150.  
  24151.  
  24152.  
  24153.  
  24154.  336                                     4 Execution Environment Utilities
  24155.  
  24156.  
  24157.  
  24158.  
  24159.  
  24160.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  24161.  
  24162.                        nonzero.
  24163.  
  24164.     _e_x_p_r_e_s_s_i_o_n | _g_e_t_l_i_n_e [_v_a_r]
  24165.                        Read a record of input from a stream piped from the
  24166.                        output of a command.  The stream shall be created
  24167.                        if no stream is currently open with the value of
  24168.                        _e_x_p_r_e_s_s_i_o_n as its command name.  The stream created
  24169.                        shall be equivalent to one created by a call to the
  24170.                        _p_o_p_e_n() function with the value of _e_x_p_r_e_s_s_i_o_n as
  24171.                        the _c_o_m_m_a_n_d argument and a value of "r" as the _m_o_d_e
  24172.                        argument.  As long as the stream remains open,
  24173.                        subsequent calls in which _e_x_p_r_e_s_s_i_o_n evaluates to
  24174.                        the same string value shall read subsequent records
  24175.                        from the file.  The stream shall remain open until
  24176.                        the close function is called with an expression
  24177.                        that evaluates to the same string value.  At that
  24178.                        time, the stream shall be closed as if by a call to
  24179.                        the _p_c_l_o_s_e() function.  If _v_a_r is missing, $0 and
  24180.                        NF shall be set; otherwise, _v_a_r shall be set.
  24181.  
  24182.     getline            Set $0 to the next input record from the current
  24183.                        input file.  This form of getline shall set the NF,
  24184.                        NR, and FNR variables.
  24185.  
  24186.     getline _v_a_r        Set variable _v_a_r to the next input record from the
  24187.                        current input file.  This form of getline shall set
  24188.                        the FNR and NR variables.
  24189.  
  24190.     getline [_v_a_r] < _e_x_p_r_e_s_s_i_o_n
  24191.                        Read the next record of input from a named file.
  24192.                        The _e_x_p_r_e_s_s_i_o_n shall be evaluated to produce a
  24193.                        string that is used as a full pathname.  If the
  24194.                        file of that name is not currently open, it shall
  24195.                        be opened.  As long as the stream remains open,
  24196.                        subsequent calls in which _e_x_p_r_e_s_s_i_o_n evaluates to
  24197.                        the same string value shall read subsequent records
  24198.                        from the file.  The file shall remain open until
  24199.                        the close function is called with an expression
  24200.                        that evaluates to the same string value.  If _v_a_r is
  24201.                        missing, $0 and NF shall be set; otherwise, _v_a_r
  24202.                        shall be set.
  24203.  
  24204.     system(_e_x_p_r_e_s_s_i_o_n)
  24205.                        Execute the command given by _e_x_p_r_e_s_s_i_o_n in a manner
  24206.                        equivalent to the _s_y_s_t_e_m() function [see B.3.1] and
  24207.                        return the exit status of the command.
  24208.  
  24209.  All forms of getline shall return 1 for successful input, zero for end of
  24210.  file, and -1 for an error.
  24211.  
  24212.  
  24213.                Copyright c 1991 IEEE.  All rights reserved.
  24214.       This is an unapproved IEEE Standards Draft, subject to change.
  24215.  
  24216.  
  24217.  
  24218.  
  24219.  
  24220.  4.1 awk - Pattern scanning and processing language                    337
  24221.  
  24222.  
  24223.  
  24224.  
  24225.  
  24226.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  24227.  
  24228.  4.1.7.6.2.4  _U_s_e_r_-_D_e_f_i_n_e_d__F_u_n_c_t_i_o_n_s
  24229.  
  24230.  The awk language also shall provide user-defined functions.  Such
  24231.  functions can be defined as:
  24232.  
  24233.        _f_u_n_c_t_i_o_n _n_a_m_e(_a_r_g_s,...) {  _s_t_a_t_e_m_e_n_t_s }
  24234.  
  24235.  A function can be referred to anywhere in an awk program; in particular,
  24236.  its use can precede its definition.  The scope of a function shall be
  24237.  global.
  24238.  
  24239.  Function arguments can be either scalars or arrays; the behavior is
  24240.  undefined if an array name is passed as an argument that the function
  24241.  uses as a scalar, or if a scalar expression is passed as an argument that
  24242.  the function uses as an array.  Function arguments shall be passed by
  24243.  value if scalar and by reference if array name.  Argument names shall be
  24244.  local to the function; all other variable names shall be global.  The
  24245.  same name shall not be used as both an argument name and as the name of a
  24246.  function or a special awk variable.  The same name shall not be used both
  24247.  as a variable name with global scope and as the name of a function.  The
  24248.  same name shall not be used within the same scope both as a scalar
  24249.  variable and as an array.
  24250.  
  24251.  The number of parameters in the function definition need not match the
  24252.  number of parameters in the function call.  Excess formal parameters can
  24253.  be used as local variables.  If fewer arguments are supplied in a          1
  24254.  function call than are in the function definition, the extra parameters    1
  24255.  that are used in the function body as scalars shall be initialized with a  1
  24256.  string value of the null string and a numeric value of zero, and the       1
  24257.  extra parameters that are used in the function body as arrays shall be     1
  24258.  initialized as empty arrays.  If more arguments are supplied in a          1
  24259.  function call than are in the function definition, the behavior is
  24260.  undefined.
  24261.  
  24262.  When invoking a function, no white space can be placed between the
  24263.  function name and the opening parenthesis.  The implementation shall       1
  24264.  permit function calls to be nested, and for recursive calls to be made     1
  24265.  upon functions.  Upon return from any nested or recursive function call,
  24266.  the values of all of the calling function's parameters shall be
  24267.  unchanged, except for array parameters passed by reference.  The return
  24268.  statement can be used to return a value.  If a return statement appears
  24269.  outside of a function definition, the behavior is undefined.
  24270.  
  24271.  In the function definition, <newline>s shall be optional before the
  24272.  opening brace and after the closing brace.  Function definitions can
  24273.  appear anywhere in the program where a _p_a_t_t_e_r_n-_a_c_t_i_o_n pair is allowed.
  24274.  
  24275.  
  24276.  
  24277.  
  24278.  
  24279.                Copyright c 1991 IEEE.  All rights reserved.
  24280.       This is an unapproved IEEE Standards Draft, subject to change.
  24281.  
  24282.  
  24283.  
  24284.  
  24285.  
  24286.  338                                     4 Execution Environment Utilities
  24287.  
  24288.  
  24289.  
  24290.  
  24291.  
  24292.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  24293.  
  24294.  _4._1._7._7  awk _G_r_a_m_m_a_r
  24295.  
  24296.  The grammar in this subclause and the lexical conventions in the
  24297.  following subclause shall together describe the syntax for awk programs.
  24298.  The general conventions for this style of grammar are described in 2.1.2.
  24299.  A valid program can be represented as the nonterminal symbol _p_r_o_g_r_a_m in
  24300.  the grammar.  Any discrepancies found between this grammar and other
  24301.  descriptions in this clause shall be resolved in favor of this grammar.
  24302.  
  24303.  %token   NAME NUMBER STRING ERE NEWLINE
  24304.  %token   FUNC_NAME     /* name followed by '(' without white space */
  24305.  
  24306.           /* Keywords */
  24307.  %token    Begin   End
  24308.  /*       'BEGIN' 'END' */
  24309.  
  24310.  %token    Break   Continue   Delete   Do   Else
  24311.  /*       'break' 'continue' 'delete' 'do' 'else' */
  24312.  
  24313.  %token    Exit   For   Function   If   In
  24314.  /*       'exit' 'for' 'function' 'if' 'in' */
  24315.  
  24316.  %token    Next   Print   Printf   Return   While
  24317.  /*       'next' 'print' 'printf' 'return' 'while' */
  24318.  
  24319.           /* Reserved function names */
  24320.  %token   BUILTIN_FUNC_NAME      /* one token for the following:
  24321.           * atan2 cos sin exp log sqrt int rand srand
  24322.           * gsub index length match split sprintf sub substr
  24323.           * tolower toupper close system
  24324.           */
  24325.  %token   GETLINE      /* Syntactically different from other built-ins */
  24326.  
  24327.           /* Two-character tokens */
  24328.  %token   ADD_ASSIGN SUB_ASSIGN MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN POW_ASSIGN
  24329.  /*         '+='       '-='      '*='      '/='      '%='      '^=' */
  24330.  
  24331.  %token    OR  AND  NO_MATCH EQ   LE   GE   NE  INCR DECR APPEND
  24332.  /*       '||' '&&' '! '    '==' '<=' '>=' '!=' '++' '--' '>>' */
  24333.                       ~
  24334.           /* One-character tokens */
  24335.  %token   '{' '}' '(' ')' '[' ']' ',' ';'
  24336.  %token   '+' '-' '*' '%' '^' '!' '>' '<' '|' '?' ':' ' ' '$' '='
  24337.                                                        ~
  24338.  %start   program
  24339.  %%
  24340.  
  24341.  
  24342.  program:
  24343.  
  24344.  
  24345.                Copyright c 1991 IEEE.  All rights reserved.
  24346.       This is an unapproved IEEE Standards Draft, subject to change.
  24347.  
  24348.  
  24349.  
  24350.  
  24351.  
  24352.  4.1 awk - Pattern scanning and processing language                    339
  24353.  
  24354.  
  24355.  
  24356.  
  24357.  
  24358.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  24359.  
  24360.          item_list
  24361.        | actionless_item_list
  24362.        ;
  24363.  
  24364.  item_list:
  24365.          newline_opt
  24366.        | actionless_item_list item terminator
  24367.        | item_list item terminator
  24368.        | item_list action terminator
  24369.        ;
  24370.  
  24371.  actionless_item_list:
  24372.          item_list pattern terminator
  24373.        | actionless_item_list pattern terminator
  24374.        ;
  24375.  
  24376.  item:
  24377.          pattern action
  24378.        | Function NAME '(' param_list_opt ')' newline_opt action
  24379.        | Function FUNC_NAME '(' param_list_opt ')' newline_opt action
  24380.        ;
  24381.  
  24382.  param_list_opt:
  24383.          /* empty */
  24384.        | param_list
  24385.        ;
  24386.  
  24387.  param_list:
  24388.          NAME
  24389.        | param_list ',' NAME
  24390.        ;
  24391.  
  24392.  pattern:
  24393.          Begin
  24394.        | End
  24395.        | expr
  24396.        | expr ',' newline_opt expr
  24397.        ;
  24398.  
  24399.  action:
  24400.          '{' newline_opt '}'
  24401.        | '{' newline_opt terminated_statement_list '}'
  24402.        | '{' newline_opt unterminated_statement_list '}'
  24403.        ;
  24404.  
  24405.  terminator:
  24406.          ';'
  24407.        | NEWLINE
  24408.        | terminator NEWLINE ';'                                             2
  24409.  
  24410.  
  24411.                Copyright c 1991 IEEE.  All rights reserved.
  24412.       This is an unapproved IEEE Standards Draft, subject to change.
  24413.  
  24414.  
  24415.  
  24416.  
  24417.  
  24418.  340                                     4 Execution Environment Utilities
  24419.  
  24420.  
  24421.  
  24422.  
  24423.  
  24424.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  24425.  
  24426.        ;
  24427.  
  24428.  terminated_statement_list:
  24429.          terminated_statement
  24430.        | terminated_statement_list terminated_statement
  24431.        ;
  24432.  
  24433.  unterminated_statement_list:
  24434.          unterminated_statement
  24435.        | terminated_statement_list unterminated_statement
  24436.        ;
  24437.  
  24438.  terminated_statement:
  24439.          action newline_opt
  24440.        | If '(' expr ')' newline_opt terminated_statement
  24441.          Else newline_opt terminated_statement
  24442.        | While '(' expr ')' newline_opt terminated_statement
  24443.        | For '(' simple_statement_opt ';' expr_opt ';' simple_statement_opt ')'
  24444.          newline_opt terminated_statement
  24445.        | For '(' NAME In NAME ')' newline_opt terminated_statement
  24446.        | ';' newline_opt
  24447.        | terminatable_statement NEWLINE newline_opt
  24448.        | terminatable_statement ';' newline_opt
  24449.        ;
  24450.  
  24451.  unterminated_statement:
  24452.          terminatable_statement
  24453.        | If '(' expr ')' newline_opt unterminated_statement
  24454.        | If '(' expr ')' newline_opt terminated_statement
  24455.          Else newline_opt unterminated_statement
  24456.        | While '(' expr ')' newline_opt unterminated_statement
  24457.        | For '(' simple_statement_opt ';' expr_opt ';' simple_statement_opt ')'
  24458.          newline_opt unterminated_statement
  24459.        | For '(' NAME In NAME ')' newline_opt unterminated_statement
  24460.        ;
  24461.  
  24462.  terminatable_statement:
  24463.          simple_statement
  24464.        | Break
  24465.        | Continue
  24466.        | Next
  24467.        | Exit expr_opt
  24468.        | Return expr_opt
  24469.        | Do newline_opt terminated_statement While '(' expr ')'
  24470.        ;
  24471.  
  24472.  simple_statement_opt:
  24473.          /* empty */
  24474.        | simple_statement
  24475.  
  24476.  
  24477.                Copyright c 1991 IEEE.  All rights reserved.
  24478.       This is an unapproved IEEE Standards Draft, subject to change.
  24479.  
  24480.  
  24481.  
  24482.  
  24483.  
  24484.  4.1 awk - Pattern scanning and processing language                    341
  24485.  
  24486.  
  24487.  
  24488.  
  24489.  
  24490.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  24491.  
  24492.        ;
  24493.  
  24494.  simple_statement:
  24495.          Delete NAME '[' expr_list ']'
  24496.        | expr
  24497.        | print_statement
  24498.        ;
  24499.  
  24500.  print_statement:
  24501.          simple_print_statement
  24502.        | simple_print_statement output_redirection
  24503.        ;
  24504.  
  24505.  simple_print_statement:
  24506.          Print print_expr_list_opt
  24507.        | Print '(' multiple_expr_list ')'
  24508.        | Printf print_expr_list
  24509.        | Printf '(' multiple_expr_list ')'
  24510.        ;
  24511.  
  24512.  output_redirection:
  24513.          '>' expr
  24514.        | APPEND expr
  24515.        | '|' expr
  24516.        ;
  24517.  
  24518.  expr_list_opt:
  24519.          /* empty */
  24520.        | expr_list
  24521.        ;
  24522.  
  24523.  expr_list:
  24524.          expr
  24525.        | multiple_expr_list
  24526.        ;
  24527.  
  24528.  multiple_expr_list:
  24529.          expr ',' newline_opt expr
  24530.        | multiple_expr_list ',' newline_opt expr
  24531.        ;
  24532.  
  24533.  expr_opt:
  24534.          /* empty */
  24535.        | expr
  24536.        ;
  24537.  
  24538.  expr:
  24539.          unary_expr
  24540.        | non_unary_expr
  24541.  
  24542.  
  24543.                Copyright c 1991 IEEE.  All rights reserved.
  24544.       This is an unapproved IEEE Standards Draft, subject to change.
  24545.  
  24546.  
  24547.  
  24548.  
  24549.  
  24550.  342                                     4 Execution Environment Utilities
  24551.  
  24552.  
  24553.  
  24554.  
  24555.  
  24556.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  24557.  
  24558.        ;
  24559.  
  24560.  unary_expr:
  24561.          '+' expr
  24562.        | '-' expr
  24563.        | unary_expr '^' expr
  24564.        | unary_expr '*' expr
  24565.        | unary_expr '/' expr
  24566.        | unary_expr '%' expr
  24567.        | unary_expr '+' expr
  24568.        | unary_expr '-' expr
  24569.        | unary_expr non_unary_expr
  24570.        | unary_expr '<' expr
  24571.        | unary_expr LE expr
  24572.        | unary_expr NE expr
  24573.        | unary_expr EQ expr
  24574.        | unary_expr '>' expr
  24575.        | unary_expr GE expr
  24576.        | unary_expr ' ' expr
  24577.        | unary_expr N~O_MATCH expr
  24578.        | unary_expr In NAME
  24579.        | unary_expr AND newline_opt expr
  24580.        | unary_expr OR newline_opt expr
  24581.        | unary_expr '?' expr ':' expr
  24582.        | unary_input_function
  24583.        ;
  24584.  
  24585.  non_unary_expr:
  24586.          '(' expr ')'
  24587.        | '!' expr
  24588.        | non_unary_expr '^' expr
  24589.        | non_unary_expr '*' expr
  24590.        | non_unary_expr '/' expr
  24591.        | non_unary_expr '%' expr
  24592.        | non_unary_expr '+' expr
  24593.        | non_unary_expr '-' expr
  24594.        | non_unary_expr non_unary_expr
  24595.        | non_unary_expr '<' expr
  24596.        | non_unary_expr LE expr
  24597.        | non_unary_expr NE expr
  24598.        | non_unary_expr EQ expr
  24599.        | non_unary_expr '>' expr
  24600.        | non_unary_expr GE expr
  24601.        | non_unary_expr ' ' expr
  24602.        | non_unary_expr N~O_MATCH expr
  24603.        | non_unary_expr In NAME
  24604.        | '(' multiple_expr_list ')' In NAME
  24605.        | non_unary_expr AND newline_opt expr
  24606.        | non_unary_expr OR newline_opt expr
  24607.  
  24608.  
  24609.                Copyright c 1991 IEEE.  All rights reserved.
  24610.       This is an unapproved IEEE Standards Draft, subject to change.
  24611.  
  24612.  
  24613.  
  24614.  
  24615.  
  24616.  4.1 awk - Pattern scanning and processing language                    343
  24617.  
  24618.  
  24619.  
  24620.  
  24621.  
  24622.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  24623.  
  24624.        | non_unary_expr '?' expr ':' expr
  24625.        | NUMBER
  24626.        | STRING
  24627.        | lvalue
  24628.        | ERE
  24629.        | lvalue INCR
  24630.        | lvalue DECR
  24631.        | INCR lvalue
  24632.        | DECR lvalue
  24633.        | lvalue POW_ASSIGN expr
  24634.        | lvalue MOD_ASSIGN expr
  24635.        | lvalue MUL_ASSIGN expr
  24636.        | lvalue DIV_ASSIGN expr
  24637.        | lvalue ADD_ASSIGN expr
  24638.        | lvalue SUB_ASSIGN expr
  24639.        | lvalue '=' expr
  24640.        | FUNC_NAME '(' expr_list_opt ')'  /* no white space allowed */
  24641.        | BUILTIN_FUNC_NAME '(' expr_list_opt ')'
  24642.        | BUILTIN_FUNC_NAME
  24643.        | non_unary_input_function
  24644.        ;
  24645.  
  24646.  print_expr_list_opt:
  24647.          /* empty */
  24648.        | print_expr_list
  24649.        ;
  24650.  
  24651.  print_expr_list:
  24652.          print_expr
  24653.        | print_expr_list ',' newline_opt print_expr
  24654.        ;
  24655.  
  24656.  print_expr:
  24657.          unary_print_expr
  24658.        | non_unary_print_expr
  24659.        ;
  24660.  
  24661.  unary_print_expr:
  24662.          '+' print_expr
  24663.        | '-' print_expr
  24664.        | unary_print_expr '^' print_expr
  24665.        | unary_print_expr '*' print_expr
  24666.        | unary_print_expr '/' print_expr
  24667.        | unary_print_expr '%' print_expr
  24668.        | unary_print_expr '+' print_expr
  24669.        | unary_print_expr '-' print_expr
  24670.        | unary_print_expr non_unary_print_expr
  24671.        | unary_print_expr ' ' print_expr
  24672.        | unary_print_expr N~O_MATCH print_expr
  24673.  
  24674.  
  24675.                Copyright c 1991 IEEE.  All rights reserved.
  24676.       This is an unapproved IEEE Standards Draft, subject to change.
  24677.  
  24678.  
  24679.  
  24680.  
  24681.  
  24682.  344                                     4 Execution Environment Utilities
  24683.  
  24684.  
  24685.  
  24686.  
  24687.  
  24688.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  24689.  
  24690.        | unary_print_expr In NAME
  24691.        | unary_print_expr AND newline_opt print_expr
  24692.        | unary_print_expr OR newline_opt print_expr
  24693.        | unary_print_expr '?' print_expr ':' print_expr
  24694.        ;
  24695.  
  24696.  non_unary_print_expr:
  24697.          '(' expr ')'
  24698.        | '!' print_expr
  24699.        | non_unary_print_expr '^' print_expr
  24700.        | non_unary_print_expr '*' print_expr
  24701.        | non_unary_print_expr '/' print_expr
  24702.        | non_unary_print_expr '%' print_expr
  24703.        | non_unary_print_expr '+' print_expr
  24704.        | non_unary_print_expr '-' print_expr
  24705.        | non_unary_print_expr non_unary_print_expr
  24706.        | non_unary_print_expr ' ' print_expr
  24707.        | non_unary_print_expr N~O_MATCH print_expr
  24708.        | non_unary_print_expr In NAME
  24709.        | '(' multiple_expr_list ')' In NAME
  24710.        | non_unary_print_expr AND newline_opt print_expr
  24711.        | non_unary_print_expr OR newline_opt print_expr
  24712.        | non_unary_print_expr '?' print_expr ':' print_expr
  24713.        | NUMBER
  24714.        | STRING
  24715.        | lvalue
  24716.        | ERE
  24717.        | lvalue INCR
  24718.        | lvalue DECR
  24719.        | INCR lvalue
  24720.        | DECR lvalue
  24721.        | lvalue POW_ASSIGN print_expr
  24722.        | lvalue MOD_ASSIGN print_expr
  24723.        | lvalue MUL_ASSIGN print_expr
  24724.        | lvalue DIV_ASSIGN print_expr
  24725.        | lvalue ADD_ASSIGN print_expr
  24726.        | lvalue SUB_ASSIGN print_expr
  24727.        | lvalue '=' print_expr
  24728.        | FUNC_NAME '(' expr_list_opt ')' /* no white space allowed */
  24729.        | BUILTIN_FUNC_NAME '(' expr_list_opt ')'
  24730.        | BUILTIN_FUNC_NAME
  24731.        ;
  24732.  
  24733.  lvalue:
  24734.          NAME
  24735.        | NAME '[' expr_list ']'
  24736.        | '$' expr
  24737.        ;
  24738.  
  24739.  
  24740.  
  24741.                Copyright c 1991 IEEE.  All rights reserved.
  24742.       This is an unapproved IEEE Standards Draft, subject to change.
  24743.  
  24744.  
  24745.  
  24746.  
  24747.  
  24748.  4.1 awk - Pattern scanning and processing language                    345
  24749.  
  24750.  
  24751.  
  24752.  
  24753.  
  24754.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  24755.  
  24756.  non_unary_input_function:
  24757.          simple_get
  24758.        | simple_get '<' expr
  24759.        | non_unary_expr '|' simple_get
  24760.        ;
  24761.  
  24762.  unary_input_function:
  24763.          unary_expr '|' simple_get
  24764.        ;
  24765.  
  24766.  simple_get:
  24767.          GETLINE
  24768.        | GETLINE lvalue
  24769.        ;
  24770.  
  24771.  newline_opt:
  24772.          /* empty */
  24773.        | newline_opt NEWLINE
  24774.        ;
  24775.  
  24776.  This grammar has several ambiguities that shall be resolved as follows:
  24777.  
  24778.      - Operator precedence and associativity shall be as described in
  24779.        Table 4-1.
  24780.  
  24781.      - In case of ambiguity, an else shall be associated with the most
  24782.        immediately preceding if that would satisfy the grammar.
  24783.  
  24784.  
  24785.  4.1.7.8  awk Lexical Conventions
  24786.  
  24787.  The lexical conventions for awk programs, with respect to the preceding
  24788.  grammar, shall be as follows:
  24789.  
  24790.      (1)  Except as noted, awk shall recognize the longest possible token
  24791.           or delimiter beginning at a given point.
  24792.  
  24793.      (2)  A comment shall consist of any characters beginning with the
  24794.           number sign character and terminated by, but excluding the next
  24795.           occurrence of, a <newline> character.  Comments shall have no
  24796.           effect, except to delimit lexical tokens.
  24797.  
  24798.      (3)  The character <newline> shall be recognized as the token
  24799.           NEWLINE.
  24800.  
  24801.      (4)  A backslash character immediately followed by a <newline>         1
  24802.           character shall have no effect.                                   1
  24803.  
  24804.  
  24805.  
  24806.  
  24807.                Copyright c 1991 IEEE.  All rights reserved.
  24808.       This is an unapproved IEEE Standards Draft, subject to change.
  24809.  
  24810.  
  24811.  
  24812.  
  24813.  
  24814.  346                                     4 Execution Environment Utilities
  24815.  
  24816.  
  24817.  
  24818.  
  24819.  
  24820.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  24821.  
  24822.      (5)  The token STRING shall represent a string constant.  A string
  24823.           constant shall begin with the character ".  Within a string
  24824.           constant, a backslash character shall be considered to begin an
  24825.           escape sequence as specified in Table 2-15 (see 2.12).  In
  24826.           addition, the escape sequences in Table 4-2 shall be recognized.
  24827.           A <newline> character shall not occur within a string constant.
  24828.           A string constant shall be terminated by the first unescaped
  24829.           occurrence of the character " after the one that begins the
  24830.           string constant.  The value of the string shall be the sequence
  24831.           of all unescaped characters and values of escape sequences
  24832.           between, but not including, the two delimiting " characters.
  24833.  
  24834.  
  24835.                     Table 4-2  -  awk Escape Sequences
  24836.  __________________________________________________________________________________________________________________________________________________
  24837.         Escape
  24838.        Sequence        Description                  Meaning
  24839.        _____________________________________________________________
  24840.  
  24841.           \"      <backslash>              <quotation-mark>
  24842.                   <quotation-mark>         character
  24843.  
  24844.           \/      <backslash> <slash>      <slash> character
  24845.  
  24846.          \_d_d_d     <backslash> followed     The character whose              111
  24847.                   by the longest           encoding is represented          11
  24848.                   sequence of one, two,    by the one-, two-, or            11
  24849.                   or three octal-digit     three-digit octal                11
  24850.                   characters (01234567).   integer.  If the size of         11
  24851.                   If all of the digits     a byte on the system is          11
  24852.                   are 0, (i.e.,            greater than nine bits,          11
  24853.                   representation of the    the valid escape sequence        11
  24854.                   NUL character), the      used to represent a byte         11
  24855.                   behavior is undefined.   is implementation                11
  24856.                                            defined.  Multibyte              1
  24857.                                            characters require               1
  24858.                                            multiple, concatenated           1
  24859.                                            escape sequences of this         1
  24860.                                            type, including the              1
  24861.                                            leading \ for each byte.         1
  24862.  
  24863.           \_c      <backslash> followed     Undefined
  24864.                   by any character not
  24865.                   described in this
  24866.                   table or in Table 2-15
  24867.  __________________________________________________________________________________________________________________________________________________
  24868.  
  24869.  
  24870.  
  24871.  
  24872.  
  24873.                Copyright c 1991 IEEE.  All rights reserved.
  24874.       This is an unapproved IEEE Standards Draft, subject to change.
  24875.  
  24876.  
  24877.  
  24878.  
  24879.  
  24880.  4.1 awk - Pattern scanning and processing language                    347
  24881.  
  24882.  
  24883.  
  24884.  
  24885.  
  24886.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  24887.  
  24888.      (6)  The token ERE represents an extended regular expression
  24889.           constant.  An ERE constant shall begin with the slash character.
  24890.           Within an ERE constant, a <backslash> character shall be
  24891.           considered to begin an escape sequence as specified in Table 2-
  24892.           15 (see 2.12).  In addition, the escape sequences in Table 4-2    1
  24893.           shall be recognized.  A <newline> character shall not occur
  24894.           within an ERE constant.  An ERE constant shall be terminated by
  24895.           the first unescaped occurrence of the slash character after the
  24896.           one that begins the string constant.  The extended regular
  24897.           expression represented by the ERE constant shall be the sequence
  24898.           of all unescaped characters and values of escape sequences
  24899.           between, but not including, the two delimiting slash characters.
  24900.  
  24901.      (7)  A <blank> shall have no effect, except to delimit lexical tokens
  24902.           or within STRING or ERE tokens.
  24903.  
  24904.      (8)  The token NUMBER shall represent a numeric constant.  Its form
  24905.           and numeric value shall be equivalent to the either of the
  24906.           tokens floating-constant or integer-constant as specified by the
  24907.           C Standard {7}, with the following exceptions:
  24908.  
  24909.            (a)  An integer constant cannot begin with 0x or include the
  24910.                 hexadecimal digits a, b, c, d, e, f, A, B, C, D, E, or F.
  24911.  
  24912.            (b)  The value of an integer constant beginning with 0 shall be
  24913.                 taken in decimal rather than octal.
  24914.  
  24915.            (c)  An integer constant cannot include a suffix (u, U, l, or
  24916.                 L).
  24917.  
  24918.            (d)  A floating constant cannot include a suffix (f, F, l, or
  24919.                 L).
  24920.  
  24921.           If the value is too large or too small to be representable (see
  24922.           2.9.2.1), the behavior is undefined.
  24923.  
  24924.      (9)  A sequence of underscores, digits, and alphabetics from the
  24925.           portable character set (see 2.4), beginning with an underscore
  24926.           or alphabetic, shall be considered a word.
  24927.  
  24928.     (10)  The following words are keywords that shall be recognized as
  24929.           individual tokens; the name of the token is the same as the
  24930.           keyword:
  24931.  
  24932.                    BEGIN      delete   for        in      printf
  24933.                    END        do       function   next    return
  24934.                    break      else     getline    print   while
  24935.  
  24936.  
  24937.  
  24938.  
  24939.                Copyright c 1991 IEEE.  All rights reserved.
  24940.       This is an unapproved IEEE Standards Draft, subject to change.
  24941.  
  24942.  
  24943.  
  24944.  
  24945.  
  24946.  348                                     4 Execution Environment Utilities
  24947.  
  24948.  
  24949.  
  24950.  
  24951.  
  24952.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  24953.  
  24954.                    continue   exit     if
  24955.  
  24956.     (11)  The following words are names of built-in functions and shall be
  24957.           recognized as the token BUILTIN_FUNC_NAME:
  24958.  
  24959.                      atan2   index    match   sprintf   substr
  24960.                      close   int      rand    sqrt      system
  24961.                      cos     length   sin     srand     tolower
  24962.                      exp     log      split   sub       toupper
  24963.                      gsub
  24964.  
  24965.           The above-listed keywords and names of built-in functions are
  24966.           considered reserved words.
  24967.  
  24968.     (12)  The token NAME shall consist of a word that is not a keyword or
  24969.           a name of a built-in function and is not followed immediately
  24970.           (without any delimiters) by the ( character.
  24971.  
  24972.     (13)  The token FUNC_NAME shall consist of a word that is not a
  24973.           keyword or a name of a built-in function, followed immediately
  24974.           (without any delimiters) by the ( character.  The ( character
  24975.           shall not be included as part of the token.
  24976.  
  24977.     (14)  The following two-character sequences shall be recognized as the
  24978.           named tokens:
  24979.  
  24980.                   Token Name   Sequence     Token Name   Sequence
  24981.                   __________   ________     __________   ________
  24982.                   ADD_ASSIGN      +=        NO_MATCH        !~
  24983.                   SUB_ASSIGN      -=        EQ              ==
  24984.                   MUL_ASSIGN      *=        LE              <=
  24985.                   DIV_ASSIGN      /=        GE              >=
  24986.                   MOD_ASSIGN      %=        NE              !=
  24987.                   POW_ASSIGN      ^=        INCR            ++
  24988.                   OR              ||        DECR            --
  24989.                   AND             &&        APPEND          >>
  24990.  
  24991.     (15)  The following single characters shall be recognized as tokens
  24992.           whose names are the character:
  24993.  
  24994.                 <newline>  {  }  (  )  [  ]  ,  ;  +  -  *  %  ^  !  >  <  |  ?  :  ~  $  =
  24995.  
  24996.  There is a lexical ambiguity between the token ERE and the tokens / and
  24997.  DIV_ASSIGN.  When an input sequence begins with a slash character in any
  24998.  syntactic context where the token / or DIV_ASSIGN could appear as the
  24999.  next token in a valid program, the longer of those two tokens that can be
  25000.  recognized shall be recognized.  In any other syntactic context where the
  25001.  token ERE could appear as the next token in a valid program, the token
  25002.  ERE shall be recognized.
  25003.  
  25004.  
  25005.                Copyright c 1991 IEEE.  All rights reserved.
  25006.       This is an unapproved IEEE Standards Draft, subject to change.
  25007.  
  25008.  
  25009.  
  25010.  
  25011.  
  25012.  4.1 awk - Pattern scanning and processing language                    349
  25013.  
  25014.  
  25015.  
  25016.  
  25017.  
  25018.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  25019.  
  25020.  4.1.8  Exit Status
  25021.  
  25022.  The awk utility shall exit with one of the following values:
  25023.  
  25024.      0    All input files were processed successfully.
  25025.  
  25026.     >0    An error occurred.
  25027.  
  25028.  The exit status can be altered within the program by using an exit
  25029.  expression.
  25030.  
  25031.  
  25032.  4.1.9  Consequences of Errors
  25033.  
  25034.  If any _f_i_l_e operand is specified and the named file cannot be accessed,
  25035.  awk shall write a diagnostic message to standard error and terminate
  25036.  without any further action.
  25037.  
  25038.  If the program specified by either the _p_r_o_g_r_a_m operand or the _p_r_o_g_f_i_l_e
  25039.  operand(s) is not a valid awk program (as specified in 4.1.7), the
  25040.  behavior is undefined.
  25041.  
  25042.  BEGIN_RATIONALE
  25043.  
  25044.  
  25045.  4.1.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  25046.  
  25047.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  25048.  
  25049.  The awk program specified in the command line is most easily specified
  25050.  within single-quotes (e.g., '_p_r_o_g_r_a_m') for applications using sh, because
  25051.  awk programs commonly contain characters that are special to the shell,
  25052.  including double-quotes.  In the cases where an awk program contains
  25053.  single-quote characters, it is usually easiest to specify most of the
  25054.  program as strings within single-quotes concatenated by the shell with
  25055.  quoted single-quote characters.  For example,
  25056.  
  25057.        awk '/'\''/ { print "quote:", $0 }'
  25058.  
  25059.  prints all lines from the standard input containing a single-quote
  25060.  character, prefixed with quote:.
  25061.  
  25062.  The following are examples of simple awk programs:
  25063.  
  25064.      (1)  Write to the standard output all input lines for which field 3
  25065.           is greater than 5.
  25066.  
  25067.                 $3 > 5
  25068.  
  25069.  
  25070.  
  25071.                Copyright c 1991 IEEE.  All rights reserved.
  25072.       This is an unapproved IEEE Standards Draft, subject to change.
  25073.  
  25074.  
  25075.  
  25076.  
  25077.  
  25078.  350                                     4 Execution Environment Utilities
  25079.  
  25080.  
  25081.  
  25082.  
  25083.  
  25084.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  25085.  
  25086.      (2)  Write every tenth line.
  25087.  
  25088.                 (NR % 10) == 0
  25089.  
  25090.      (3)  Write any line with a substring matching the regular expression.
  25091.  
  25092.                 /(G|D)(2[0-9][[:alpha:]]*)/
  25093.  
  25094.      (4)  Write any line in which the second field matches the regular
  25095.           expression and the fourth field does not.
  25096.  
  25097.                 $2   /xyz/ && $4 !  /xyz/
  25098.                    ~              ~
  25099.      (5)  Write any line in which the second field contains a backslash.
  25100.  
  25101.                 $2   /\\/
  25102.                    ~
  25103.      (6)  Write any line in which the second field contains a backslash.
  25104.           Note that backslash escapes are interpreted twice, once in
  25105.           lexical processing of the string and once in processing the
  25106.           regular expression.
  25107.  
  25108.                 $2   "\\\\"
  25109.                    ~
  25110.      (7)  Write the second to the last and the last field in each line.
  25111.           Separate the fields by a colon.
  25112.  
  25113.                 {OFS=":";print $(NF-1), $NF}
  25114.  
  25115.      (8)  Write the line number and number of fields in each line.  The
  25116.           three strings representing the line number, the colon and the
  25117.           number of fields are concatenated and that string is written to
  25118.           standard output.
  25119.  
  25120.                 {print NR ":" NF}
  25121.  
  25122.      (9)  Write lines longer than 72 characters.
  25123.  
  25124.                 {length($0) > 72}
  25125.  
  25126.     (10)  Write first two fields in opposite order separated by the OFS:
  25127.  
  25128.                 { print $2, $1 }
  25129.  
  25130.     (11)  Same, with input fields separated by comma and/or <space>_s and
  25131.           <tab>_s:
  25132.  
  25133.  
  25134.  
  25135.  
  25136.  
  25137.                Copyright c 1991 IEEE.  All rights reserved.
  25138.       This is an unapproved IEEE Standards Draft, subject to change.
  25139.  
  25140.  
  25141.  
  25142.  
  25143.  
  25144.  4.1 awk - Pattern scanning and processing language                    351
  25145.  
  25146.  
  25147.  
  25148.  
  25149.  
  25150.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  25151.  
  25152.                 BEGIN   { FS = ",[ \t]*|[ \t]+" }
  25153.                         { print $2, $1 }
  25154.  
  25155.     (12)  Add up first column, print sum and average.
  25156.  
  25157.                         {s += $1 }
  25158.                 END     {print "sum is ", s, " average is", s/NR}
  25159.  
  25160.     (13)  Write fields in reverse order, one per line (many lines out for
  25161.           each line in):
  25162.  
  25163.                 { for (i = NF; i > 0; --i) print $i }
  25164.  
  25165.     (14)  Write all lines between occurrences of the strings start and
  25166.           stop:
  25167.  
  25168.                 /start/, /stop/
  25169.  
  25170.     (15)  Write all lines whose first field is different from the previous
  25171.           one:
  25172.  
  25173.                 $1 != prev { print; prev = $1 }
  25174.  
  25175.     (16)  Simulate echo:
  25176.  
  25177.                 BEGIN   {
  25178.                         for (i = 1; i < ARGC; ++i)
  25179.                                 printf "%s%s", ARGV[i], i==ARGC-1?"\n":""
  25180.                 }
  25181.  
  25182.     (17)  Write the path prefixes contained in the PATH environment
  25183.           variable, one per line:
  25184.  
  25185.                 BEGIN   {
  25186.                         n = split (ENVIRON["PATH"], path, ":")
  25187.                         for (i = 1; i <= n; ++i)
  25188.                                 print path[i]
  25189.                 }
  25190.  
  25191.     (18)  If there is a file named ``input'' containing page headers of
  25192.           the form:
  25193.  
  25194.                                 Page #
  25195.  
  25196.           and a file named ``program'' that contains:
  25197.  
  25198.                         /Page/{ $2 = n++; }
  25199.                         { print }
  25200.  
  25201.  
  25202.  
  25203.                Copyright c 1991 IEEE.  All rights reserved.
  25204.       This is an unapproved IEEE Standards Draft, subject to change.
  25205.  
  25206.  
  25207.  
  25208.  
  25209.  
  25210.  352                                     4 Execution Environment Utilities
  25211.  
  25212.  
  25213.  
  25214.  
  25215.  
  25216.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  25217.  
  25218.           then the command line:
  25219.  
  25220.                 awk -f program n=5 input
  25221.  
  25222.           will print the file ``input,'' filling in page numbers starting
  25223.           at 5.
  25224.  
  25225.  The index, length, match, and substr should not be confused with similar
  25226.  functions in the C Standard {7}; the awk versions deal with characters,
  25227.  while the C Standard {7} deals with bytes.
  25228.  
  25229.  To forestall any possible confusion, where strings are used as the name    1
  25230.  of a file or pipeline, the strings must be textually identical.  The       1
  25231.  terminology ``same string value'' implies that ``equivalent strings,''     1
  25232.  even those that differ only by <space>s, represent different files.        1
  25233.  
  25234.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  25235.  
  25236.  This description is based on the new awk, ``nawk,'' (see _T_h_e _A_W_K
  25237.  _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e {B21}), which introduced a number of new features to
  25238.  the historical awk:
  25239.  
  25240.      (1)  New keywords:  delete, do, function, return
  25241.  
  25242.      (2)  New built-in functions:  atan2, cos, sin, rand, srand, gsub,
  25243.           sub, match, close, system
  25244.  
  25245.      (3)  New predefined variables:  FNR, ARGC, ARGV, RSTART, RLENGTH,
  25246.           SUBSEP
  25247.  
  25248.      (4)  New expression operators:  ?:, ^
  25249.  
  25250.      (5)  The FS variable and the third argument to split are now treated
  25251.           as extended regular expressions.
  25252.  
  25253.      (6)  The operator precedence has changed to more closely match C.
  25254.           Two examples of code that operate differently are:
  25255.  
  25256.                 while ( n /= 10 > 1) ...
  25257.                 if (!"wk"   /bwk/) ...
  25258.                           ~
  25259.  Several features have been added based on newer implementations of awk:
  25260.  
  25261.      (1)  Multiple instances of -f _p_r_o_g_f_i_l_e are permitted.
  25262.  
  25263.      (2)  New option:  -v _a_s_s_i_g_n_m_e_n_t
  25264.  
  25265.      (3)  New predefined variable:  ENVIRON
  25266.  
  25267.  
  25268.  
  25269.                Copyright c 1991 IEEE.  All rights reserved.
  25270.       This is an unapproved IEEE Standards Draft, subject to change.
  25271.  
  25272.  
  25273.  
  25274.  
  25275.  
  25276.  4.1 awk - Pattern scanning and processing language                    353
  25277.  
  25278.  
  25279.  
  25280.  
  25281.  
  25282.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  25283.  
  25284.      (4)  New built-in functions:  toupper, tolower
  25285.  
  25286.      (5)  More formatting capabilities added to printf to match the
  25287.           C Standard {7}.
  25288.  
  25289.  Regular expressions have been extended somewhat from traditional
  25290.  implementations to make them a pure superset of Extended Regular
  25291.  Expressions as defined by this standard (see 2.8.4).  The main extensions
  25292.  are internationalization features and interval expressions.  Traditional
  25293.  implementations of awk have long supported <backslash> escape sequences
  25294.  as an extension to regular expressions, and this extension has been
  25295.  retained despite inconsistency with other utilities.  The number of
  25296.  escape sequences recognized in both regular expressions and strings has
  25297.  varied (generally increasing with time) among implementations.  The set
  25298.  specified by the standard includes most sequences known to be supported
  25299.  by popular implementations and by the C Standard {7}.  One sequence that
  25300.  is not supported is hexadecimal value escapes beginning with "\x".  This
  25301.  would allow values expressed in more than 9 bits to be used within awk as
  25302.  in the C Standard {7}.  However, because this syntax has a
  25303.  nondeterministic length, it does not permit the subsequent character to
  25304.  be a hexadecimal digit.  This limitation can be worked around in the
  25305.  C language by the use of lexical string concatenation.  In the awk
  25306.  language, concatenation could also be a solution for strings, but not for
  25307.  regular expressions (either lexical ERE tokens or strings used
  25308.  dynamically as regular expressions).  Because of this limitation, the
  25309.  feature has not been added to POSIX.2.
  25310.  
  25311.  When a string variable is used in a context where an ERE normally appears  1
  25312.  (where the lexical token ERE is used in the grammar) the string does not   1
  25313.  contain the literal slashes.                                               1
  25314.  
  25315.  Some versions of awk allow the form:
  25316.  
  25317.        func _n_a_m_e(_a_r_g_s,...) {  _s_t_a_t_e_m_e_n_t_s }
  25318.  
  25319.  This has been deprecated by the language's authors, who have asked that
  25320.  it not be included in the standard.
  25321.  
  25322.  Traditional implementations of awk produce an error if a next statement
  25323.  is executed in a BEGIN action, and cause awk to terminate if a next
  25324.  statement is executed in an END action.  This behavior has not been
  25325.  documented, and it was not believed that it was necessary to standardize
  25326.  it.
  25327.  
  25328.  The specification of conversions between string and numeric values is
  25329.  much more detailed than in the documentation of traditional
  25330.  implementations or in _T_h_e _A_W_K _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e {B21}.  Although most
  25331.  of the behavior is designed to be intuitive, the details are necessary to
  25332.  ensure compatible behavior from different implementations.  This is
  25333.  
  25334.  
  25335.                Copyright c 1991 IEEE.  All rights reserved.
  25336.       This is an unapproved IEEE Standards Draft, subject to change.
  25337.  
  25338.  
  25339.  
  25340.  
  25341.  
  25342.  354                                     4 Execution Environment Utilities
  25343.  
  25344.  
  25345.  
  25346.  
  25347.  
  25348.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  25349.  
  25350.  especially important in relational expressions, since the types of the
  25351.  operands determine whether a string or numeric comparison is performed.
  25352.  From the perspective of an application writer, it is usually sufficient
  25353.  to expect intuitive behavior and to force conversions (by adding zero or
  25354.  concatenating a null string) when the type of an expression does not
  25355.  obviously match what is needed.  The intent has been to specify existing
  25356.  practice in almost all cases.  The one exception is that, in traditional
  25357.  implementations, variables and constants maintain both string and numeric
  25358.  values after their original value is converted by any use.  This means
  25359.  that referencing a variable or constant can have unexpected side effects.
  25360.  For example, with traditional implementations the following program:
  25361.  
  25362.        {
  25363.                a = "+2"
  25364.                b = 2
  25365.                if (NR % 2)
  25366.                        c = a + b
  25367.                if (a == b)
  25368.                        print "numeric comparison"
  25369.                else
  25370.                        print "string comparison"
  25371.        }
  25372.  
  25373.  would perform a numeric comparison (and output numeric comparison) for
  25374.  each odd-numbered line, but perform a string comparison (and output
  25375.  string comparison) for each even-numbered line.  POSIX.2 ensures that      1
  25376.  comparisons will be numeric if necessary.  With traditional                1
  25377.  implementations, the following program:
  25378.  
  25379.        BEGIN {
  25380.                OFMT = "%e"
  25381.                print 3.14
  25382.                OFMT = "%f"
  25383.                print 3.14
  25384.        }
  25385.  
  25386.  would output 3.140000e+00 twice, because in the second print statement
  25387.  the constant 3.14 would have a string value from the previous conversion.
  25388.  The standard requires that the output of the second print statement be
  25389.  3.140000.  The behavior of traditional implementations was seen as too
  25390.  unintuitive and unpredictable.
  25391.  
  25392.  However, a further modification was made in Draft 11.  It was pointed out
  25393.  that with the Draft 10 rules, the following script would print nothing:
  25394.  
  25395.  
  25396.  
  25397.  
  25398.  
  25399.  
  25400.  
  25401.                Copyright c 1991 IEEE.  All rights reserved.
  25402.       This is an unapproved IEEE Standards Draft, subject to change.
  25403.  
  25404.  
  25405.  
  25406.  
  25407.  
  25408.  4.1 awk - Pattern scanning and processing language                    355
  25409.  
  25410.  
  25411.  
  25412.  
  25413.  
  25414.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  25415.  
  25416.        BEGIN {
  25417.                y[1.5] = 1
  25418.                OFMT = "%e"
  25419.                print y[1.5]
  25420.        }
  25421.  
  25422.  Therefore, a new variable, CONVFMT, was introduced.  The OFMT variable is
  25423.  now restricted to affecting output conversions of numbers to strings and
  25424.  CONVFMT is used for internal conversions, such as comparisons or array
  25425.  indexing.  The default value is the same as that for OFMT, so unless a
  25426.  program changes CONVFMT (which no historical program would do), it will
  25427.  receive the historical behavior associated with internal string
  25428.  conversions.
  25429.  
  25430.  The POSIX awk lexical and syntactic conventions are specified more
  25431.  formally than in other sources.  Again the intent has been to specify
  25432.  existing practice.  One convention that may not be obvious from the
  25433.  formal grammar as in other verbal descriptions is where <newline>_s are
  25434.  acceptable.  There are several obvious placements such as terminating a
  25435.  statement, and a backslash can be used to escape <newline>_s between any
  25436.  lexical tokens.  In addition, <newline>_s without backslashes can follow a
  25437.  comma, an open brace, logical AND operator (&&), _l_o_g_i_c_a_l _O_R _o_p_e_r_a_t_o_r
  25438.  (||), the do keyword, the else keyword, and the closing parenthesis of an
  25439.  if, for, or while statement.  For example:
  25440.  
  25441.        { print   $1,
  25442.                  $2 }
  25443.  
  25444.  The requirement that awk add a trailing <newline> to the _p_r_o_g_r_a_m argument
  25445.  text is to simplify the grammar, making it match a text file in form.
  25446.  There is no way for an application or test suite to determine whether a
  25447.  literal <newline> is added or whether awk simply acts as if it did.
  25448.  
  25449.  Because the concatenation operation is represented by adjacent
  25450.  expressions rather than an explicit operator, it is often necessary to
  25451.  use parentheses to enforce the proper evaluation precedence.
  25452.  
  25453.  The overall awk syntax has always been based on the C language, with a
  25454.  few features from the shell command language and other sources.  Because
  25455.  of this, it is not completely compatible with any other language, which
  25456.  has caused confusion for some users.  It is not the intent of this
  25457.  standard to address such issues.  The standard has made a few relatively
  25458.  minor changes toward making the language more compatible with the
  25459.  C language as specified by the C Standard {7}; most of these changes are
  25460.  based on similar changes in recent implementations, as described above.
  25461.  There remain several C language conventions that are not in _a_w_k.  One of
  25462.  the notable ones is the comma operator, which is commonly used to specify
  25463.  multiple expressions in the C language for statement.  Also, there are
  25464.  various places where awk is more restrictive than the C language
  25465.  
  25466.  
  25467.                Copyright c 1991 IEEE.  All rights reserved.
  25468.       This is an unapproved IEEE Standards Draft, subject to change.
  25469.  
  25470.  
  25471.  
  25472.  
  25473.  
  25474.  356                                     4 Execution Environment Utilities
  25475.  
  25476.  
  25477.  
  25478.  
  25479.  
  25480.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  25481.  
  25482.  regarding the type of expression that can be used in a given context.
  25483.  These limitations are due to the different features that the awk language
  25484.  does provide.
  25485.  
  25486.  This standard requires several changes from traditional implementations
  25487.  in order to support internationalization.  Probably the most subtle of
  25488.  these is the use of the decimal-point character, defined by the
  25489.  LC_NUMERIC category of the locale, in representations of floating point
  25490.  numbers.  This locale-specific character is used in recognizing numeric
  25491.  input, in converting between strings and numeric values, and in
  25492.  formatting output.  However, regardless of locale, the period character
  25493.  (the decimal-point character of the POSIX Locale) is the decimal-point
  25494.  character recognized in processing awk programs (including assignments in
  25495.  command-line arguments).  This is essentially the same convention as the
  25496.  one used in the C Standard {7}.  The difference is that the C language
  25497.  includes the _s_e_t_l_o_c_a_l_e() function, which permits an application to modify
  25498.  its locale.  Because of this capability, a C application begins executing
  25499.  with its locale set to the C locale, and only executes in the
  25500.  environment-specified locale after an explicit call to _s_e_t_l_o_c_a_l_e().
  25501.  However, adding such an elaborate new feature to the awk language was
  25502.  seen as inappropriate for POSIX.2.  It is possible to explicitly execute
  25503.  an awk program in any desired locale by setting the environment in the
  25504.  shell.
  25505.  
  25506.  The behavior in the case of invalid awk programs (including lexical,
  25507.  syntactic, and semantic errors) is undefined because it was considered
  25508.  overly limiting on implementations to specify.  In most cases such errors
  25509.  can be expected to produce a diagnostic and a nonzero exit status.
  25510.  However, some implementations may choose to extend the language in ways
  25511.  that make use of certain invalid constructs.  Other invalid constructs
  25512.  might be deemed worthy of a warning but otherwise cause some reasonable
  25513.  behavior.  Still other constructs may be very difficult to detect in some
  25514.  implementations.  Also, different implementations might detect a given
  25515.  error during an initial parsing of the program (before reading any input
  25516.  files) while others might detect it when executing the program after
  25517.  reading some input.  Implementors should be aware that diagnosing errors
  25518.  as early as possible and producing useful diagnostics can ease debugging
  25519.  of applications, and thus make an implementation more usable.
  25520.  
  25521.  The unspecified behavior from using multicharacter RS values is to allow
  25522.  possible future extensions based on regular expressions used for record
  25523.  separators.  Historical implementations take the first character of the
  25524.  string and ignore the others.
  25525.  
  25526.  The undefined behavior resulting from NULs in regular expressions allows
  25527.  future extensions for the GNU gawk program to process binary data.
  25528.  
  25529.  Unspecified behavior when split(string,array,<null>) is used is to allow
  25530.  a proposed future extension that would split up a string into an array of
  25531.  
  25532.  
  25533.                Copyright c 1991 IEEE.  All rights reserved.
  25534.       This is an unapproved IEEE Standards Draft, subject to change.
  25535.  
  25536.  
  25537.  
  25538.  
  25539.  
  25540.  4.1 awk - Pattern scanning and processing language                    357
  25541.  
  25542.  
  25543.  
  25544.  
  25545.  
  25546.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  25547.  
  25548.  individual characters.
  25549.  
  25550.  END_RATIONALE
  25551.  
  25552.  
  25553.  
  25554.  4.2  basename - Return nondirectory portion of pathname
  25555.  
  25556.  
  25557.  4.2.1  Synopsis
  25558.  
  25559.  basename  _s_t_r_i_n_g [_s_u_f_f_i_x]
  25560.  
  25561.  
  25562.  4.2.2  Description
  25563.  
  25564.  The _s_t_r_i_n_g operand shall be treated as a pathname, as defined in
  25565.  2.2.2.102.  The string _s_t_r_i_n_g shall be converted to the filename
  25566.  corresponding to the last pathname component in _s_t_r_i_n_g and then the
  25567.  suffix string _s_u_f_f_i_x, if present, shall be removed.  This shall be done
  25568.  by performing actions equivalent to the following steps in order:
  25569.  
  25570.      (1)  If _s_t_r_i_n_g is //, it is implementation defined whether steps (2)
  25571.           through (5) are skipped or processed.
  25572.  
  25573.      (2)  If _s_t_r_i_n_g consists entirely of slash characters, _s_t_r_i_n_g shall be
  25574.           set to a single slash character.  In this case, skip steps (3)
  25575.           through (5).
  25576.  
  25577.      (3)  If there are any trailing slash characters in _s_t_r_i_n_g, they shall
  25578.           be removed.
  25579.  
  25580.      (4)  If there are any slash characters remaining in _s_t_r_i_n_g, the
  25581.           prefix of _s_t_r_i_n_g up to and including the last slash character in
  25582.           _s_t_r_i_n_g shall be removed.
  25583.  
  25584.      (5)  If the _s_u_f_f_i_x operand is present, is not identical to the
  25585.           characters remaining in _s_t_r_i_n_g, and is identical to a suffix of
  25586.           the characters remaining in _s_t_r_i_n_g, the suffix _s_u_f_f_i_x shall be
  25587.           removed from _s_t_r_i_n_g. Otherwise, _s_t_r_i_n_g shall not be modified by
  25588.           this step.  It shall not be considered an error if _s_u_f_f_i_x is not
  25589.           found in _s_t_r_i_n_g.
  25590.  
  25591.  The resulting string shall be written to standard output.
  25592.  
  25593.  
  25594.  
  25595.  
  25596.  
  25597.  
  25598.  
  25599.                Copyright c 1991 IEEE.  All rights reserved.
  25600.       This is an unapproved IEEE Standards Draft, subject to change.
  25601.  
  25602.  
  25603.  
  25604.  
  25605.  
  25606.  358                                     4 Execution Environment Utilities
  25607.  
  25608.  
  25609.  
  25610.  
  25611.  
  25612.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  25613.  
  25614.  4.2.3  Options
  25615.  
  25616.  None.
  25617.  
  25618.  
  25619.  4.2.4  Operands
  25620.  
  25621.  The following operands shall be supported by the implementation:
  25622.  
  25623.     _s_t_r_i_n_g      A string.
  25624.  
  25625.     _s_u_f_f_i_x      A string.
  25626.  
  25627.  
  25628.  4.2.5  External Influences
  25629.  
  25630.  
  25631.  4.2.5.1  Standard Input
  25632.  
  25633.  None.
  25634.  
  25635.  4.2.5.2  Input Files
  25636.  
  25637.  None.
  25638.  
  25639.  
  25640.  4.2.5.3  Environment Variables
  25641.  
  25642.  The following environment variables shall affect the execution of
  25643.  basename:
  25644.  
  25645.     LANG               This variable shall determine the locale to use for
  25646.                        the locale categories when both LC_ALL and the
  25647.                        corresponding environment variable (beginning with
  25648.                        LC_) do not specify a locale.  See 2.6.
  25649.  
  25650.     LC_ALL             This variable shall determine the locale to be used
  25651.                        to override any values for locale categories
  25652.                        specified by the settings of LANG or any
  25653.                        environment variables beginning with LC_.
  25654.  
  25655.     LC_CTYPE           This variable shall determine the locale for the
  25656.                        interpretation of sequences of bytes of text data
  25657.                        as characters (e.g., single- versus multibyte
  25658.                        characters in arguments).
  25659.  
  25660.     LC_MESSAGES        This variable shall determine the language in which
  25661.                        messages should be written.
  25662.  
  25663.  
  25664.  
  25665.                Copyright c 1991 IEEE.  All rights reserved.
  25666.       This is an unapproved IEEE Standards Draft, subject to change.
  25667.  
  25668.  
  25669.  
  25670.  
  25671.  
  25672.  4.2 basename - Return nondirectory portion of pathname                359
  25673.  
  25674.  
  25675.  
  25676.  
  25677.  
  25678.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  25679.  
  25680.  4.2.5.4  Asynchronous Events
  25681.  
  25682.  Default.
  25683.  
  25684.  
  25685.  4.2.6  External Effects
  25686.  
  25687.  
  25688.  4.2.6.1  Standard Output
  25689.  
  25690.  The basename utility shall write a line to the standard output in the
  25691.  following format:
  25692.  
  25693.        "%s\n", <_r_e_s_u_l_t_i_n_g _s_t_r_i_n_g>
  25694.  
  25695.  4.2.6.2  Standard Error
  25696.  
  25697.  Used only for diagnostic messages.
  25698.  
  25699.  
  25700.  4.2.6.3  Output Files
  25701.  
  25702.  None.
  25703.  
  25704.  
  25705.  4.2.7  Extended Description
  25706.  
  25707.  None.
  25708.  
  25709.  
  25710.  4.2.8  Exit Status
  25711.  
  25712.  The basename utility shall exit with one of the following values:
  25713.  
  25714.      0    Successful completion.
  25715.  
  25716.     >0    An error occurred.
  25717.  
  25718.  
  25719.  4.2.9  Consequences of Errors
  25720.  
  25721.  Default.
  25722.  
  25723.  BEGIN_RATIONALE
  25724.  
  25725.  
  25726.  
  25727.  
  25728.  
  25729.  
  25730.  
  25731.                Copyright c 1991 IEEE.  All rights reserved.
  25732.       This is an unapproved IEEE Standards Draft, subject to change.
  25733.  
  25734.  
  25735.  
  25736.  
  25737.  
  25738.  360                                     4 Execution Environment Utilities
  25739.  
  25740.  
  25741.  
  25742.  
  25743.  
  25744.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  25745.  
  25746.  4.2.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  25747.  
  25748.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  25749.  
  25750.  If the string _s_t_r_i_n_g is a valid pathname,
  25751.  
  25752.        $(basename "string")
  25753.  
  25754.  produces a filename that could be used to open the file named by _s_t_r_i_n_g
  25755.  in the directory returned by
  25756.  
  25757.        $(dirname "string")
  25758.  
  25759.  If the string _s_t_r_i_n_g is not a valid pathname, the same algorithm is used,
  25760.  but the result need not be a valid filename.  The basename utility is not
  25761.  expected to make any judgements about the validity of _s_t_r_i_n_g as a
  25762.  pathname; it just follows the specified algorithm to produce a result
  25763.  string.
  25764.  
  25765.  The following shell script compiles /usr/src/cmd/cat.c and moves the
  25766.  output to a file named cat in the current directory when invoked with the
  25767.  argument /usr/src/cmd/cat or with the argument /usr/src/cmd/cat.c:
  25768.  
  25769.        c89 $(dirname "$1")/$(basename "$1" .c).c
  25770.        mv a.out $(basename "$1" .c)
  25771.  
  25772.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  25773.  
  25774.  The POSIX.1 {8} definition of pathname allows trailing slashes on a
  25775.  pathname naming a directory.  Some historical implementations have not
  25776.  allowed trailing slashes and thus treated pathnames of this form in other
  25777.  ways.  Existing implementations also differ in their handling of _s_u_f_f_i_x
  25778.  when _s_u_f_f_i_x matches the entire string left after removing the directory
  25779.  part of _s_t_r_i_n_g.
  25780.  
  25781.  The behaviors of basename and dirname in this standard have been
  25782.  coordinated so that when _s_t_r_i_n_g is a valid pathname
  25783.  
  25784.        $(basename "string")
  25785.  
  25786.  would be a valid filename for the file in the directory
  25787.  
  25788.        $(dirname "string")
  25789.  
  25790.  This would not work for the versions of these utilities in earlier drafts
  25791.  due to the way it specified handling of trailing slashes.
  25792.  
  25793.  Since the definition of _p_a_t_h_n_a_m_e in 2.2.2.102 specifies implementation-
  25794.  defined behavior for pathnames starting with two slash characters, Draft
  25795.  
  25796.  
  25797.                Copyright c 1991 IEEE.  All rights reserved.
  25798.       This is an unapproved IEEE Standards Draft, subject to change.
  25799.  
  25800.  
  25801.  
  25802.  
  25803.  
  25804.  4.2 basename - Return nondirectory portion of pathname                361
  25805.  
  25806.  
  25807.  
  25808.  
  25809.  
  25810.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  25811.  
  25812.  11 has been changed to specify similar implementation-defined behavior
  25813.  for the basename and dirname utilities.  On implementations where the
  25814.  pathname // is always treated the same as the pathname /, the
  25815.  functionality required by Draft 10 meets all of the Draft 11
  25816.  requirements.
  25817.  
  25818.  END_RATIONALE
  25819.  
  25820.  
  25821.  
  25822.  4.3  bc - Arbitrary-precision arithmetic language
  25823.  
  25824.  
  25825.  4.3.1  Synopsis
  25826.  
  25827.  bc  [-l] [_f_i_l_e ...]
  25828.  
  25829.  
  25830.  4.3.2  Description
  25831.  
  25832.  The bc utility shall implement an arbitrary precision calculator.  It
  25833.  shall take input from any files given, then read from the standard input.
  25834.  If the standard input and standard output to bc are attached to a
  25835.  terminal, the invocation of bc shall be considered to be _i_n_t_e_r_a_c_t_i_v_e,
  25836.  causing behavioral constraints described in the following subclauses.
  25837.  
  25838.  
  25839.  4.3.3  Options
  25840.  
  25841.  The bc utility shall conform to the utility argument syntax guidelines
  25842.  described in 2.10.2.
  25843.  
  25844.  The following option shall be supported by the implementation:
  25845.  
  25846.     -l          (The letter ell.)  Define the math functions and
  25847.                 initialize scale to 20, instead of the default zero.  See
  25848.                 4.3.7.
  25849.  
  25850.  
  25851.  4.3.4  Operands
  25852.  
  25853.  The following operands shall be supported by the implementation:
  25854.  
  25855.     _f_i_l_e        A pathname of a text file containing bc program
  25856.                 statements.  After all _f_i_l_es have been read, bc shall read
  25857.                 the standard input.
  25858.  
  25859.  
  25860.  
  25861.  
  25862.  
  25863.                Copyright c 1991 IEEE.  All rights reserved.
  25864.       This is an unapproved IEEE Standards Draft, subject to change.
  25865.  
  25866.  
  25867.  
  25868.  
  25869.  
  25870.  362                                     4 Execution Environment Utilities
  25871.  
  25872.  
  25873.  
  25874.  
  25875.  
  25876.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  25877.  
  25878.  4.3.5  External Influences
  25879.  
  25880.  
  25881.  4.3.5.1  Standard Input
  25882.  
  25883.  See Input Files.
  25884.  
  25885.  4.3.5.2  Input Files
  25886.  
  25887.  Input files shall be text files containing a sequence of comments,
  25888.  statements, and function definitions that shall be executed as they are
  25889.  read.
  25890.  
  25891.  
  25892.  4.3.5.3  Environment Variables
  25893.  
  25894.  The following environment variables shall affect the execution of bc:
  25895.  
  25896.     LANG               This variable shall determine the locale to use for
  25897.                        the locale categories when both LC_ALL and the
  25898.                        corresponding environment variable (beginning with
  25899.                        LC_) do not specify a locale.  See 2.6.
  25900.  
  25901.     LC_ALL             This variable shall determine the locale to be used
  25902.                        to override any values for locale categories
  25903.                        specified by the settings of LANG or any
  25904.                        environment variables beginning with LC_.
  25905.  
  25906.     LC_CTYPE           This variable shall determine the locale for the
  25907.                        interpretation of sequences of bytes of text data
  25908.                        as characters (e.g., single- versus multibyte
  25909.                        characters in arguments and input files).
  25910.  
  25911.     LC_MESSAGES        This variable shall determine the language in which
  25912.                        messages should be written.
  25913.  
  25914.  4.3.5.4  Asynchronous Events
  25915.  
  25916.  Default.
  25917.  
  25918.  
  25919.  4.3.6  External Effects
  25920.  
  25921.  
  25922.  
  25923.  
  25924.  
  25925.  
  25926.  
  25927.  
  25928.  
  25929.                Copyright c 1991 IEEE.  All rights reserved.
  25930.       This is an unapproved IEEE Standards Draft, subject to change.
  25931.  
  25932.  
  25933.  
  25934.  
  25935.  
  25936.  4.3 bc - Arbitrary-precision arithmetic language                      363
  25937.  
  25938.  
  25939.  
  25940.  
  25941.  
  25942.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  25943.  
  25944.  4.3.6.1  Standard Output
  25945.  
  25946.  The output of the bc utility shall be controlled by the program read, and
  25947.  shall consist of zero or more lines containing the value of all executed   2
  25948.  expressions without assignments.  The radix and precision of the output    2
  25949.  shall be controlled by the values of the obase and scale variables.  See
  25950.  4.3.7.
  25951.  
  25952.  
  25953.  4.3.6.2  Standard Error
  25954.  
  25955.  Used only for diagnostic messages.
  25956.  
  25957.  4.3.6.3  Output Files
  25958.  
  25959.  None.
  25960.  
  25961.  
  25962.  4.3.7  Extended Description
  25963.  
  25964.  
  25965.  4.3.7.1  bc Grammar
  25966.  
  25967.  The grammar in this subclause and the lexical conventions in the
  25968.  following subclause shall together describe the syntax for bc programs.
  25969.  The general conventions for this style of grammar are described in 2.1.2.
  25970.  A valid program can be represented as the nonterminal symbol program in
  25971.  the grammar.  Any discrepancies found between this grammar and other
  25972.  descriptions in this subclause (4.3.7) shall be resolved in favor of this
  25973.  grammar.
  25974.  
  25975.  %token   EOF NEWLINE STRING LETTER NUMBER
  25976.  
  25977.  %token   MUL_OP
  25978.  /*       '*', '/', '%'                           */
  25979.  
  25980.  %token   ASSIGN_OP
  25981.  /*       '=', '+=', '-=', '*=', '/=', '%=', '^=' */
  25982.  
  25983.  %token   REL_OP
  25984.  /*       '==', '<=', '>=', '!=', '<', '>'        */
  25985.  
  25986.  %token   INCR_DECR
  25987.  /*       '++', '--'                              */
  25988.  
  25989.  %token    Define    Break    Quit    Length
  25990.  /*       'define', 'break', 'quit', 'length'     */
  25991.  
  25992.  
  25993.  
  25994.  
  25995.                Copyright c 1991 IEEE.  All rights reserved.
  25996.       This is an unapproved IEEE Standards Draft, subject to change.
  25997.  
  25998.  
  25999.  
  26000.  
  26001.  
  26002.  364                                     4 Execution Environment Utilities
  26003.  
  26004.  
  26005.  
  26006.  
  26007.  
  26008.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  26009.  
  26010.  %token    Return    For    If    While    Sqrt
  26011.  /*       'return', 'for', 'if', 'while', 'sqrt'  */
  26012.  
  26013.  %token    Scale    Ibase    Obase    Auto
  26014.  /*       'scale', 'ibase', 'obase', 'auto'       */
  26015.  
  26016.  %start   program
  26017.  
  26018.  %%
  26019.  
  26020.  program               : EOF
  26021.                        | input_item program
  26022.                        ;
  26023.  
  26024.  input_item            : semicolon_list NEWLINE
  26025.                        | function
  26026.                        ;
  26027.  
  26028.  semicolon_list        : /* empty */
  26029.                        | statement
  26030.                        | semicolon_list ';' statement
  26031.                        | semicolon_list ';'
  26032.                        ;
  26033.  
  26034.  statement_list        : /* empty */
  26035.                        | statement
  26036.                        | statement_list NEWLINE
  26037.                        | statement_list NEWLINE statement
  26038.                        | statement_list ';'
  26039.                        | statement_list ';' statement
  26040.                        ;
  26041.  
  26042.  statement             : expression
  26043.                        | STRING
  26044.                        | Break
  26045.                        | Quit
  26046.                        | Return
  26047.                        | Return '(' return_expression ')'
  26048.                        | For '(' expression ';'
  26049.                              relational_expression ';'
  26050.                              expression ')' statement
  26051.                        | If '(' relational_expression ')' statement
  26052.                        | While '(' relational_expression ')' statement
  26053.                        | '{' statement_list '}'
  26054.                        ;
  26055.  
  26056.  function              : Define LETTER '(' opt_parameter_list ')'
  26057.  
  26058.  
  26059.  
  26060.  
  26061.                Copyright c 1991 IEEE.  All rights reserved.
  26062.       This is an unapproved IEEE Standards Draft, subject to change.
  26063.  
  26064.  
  26065.  
  26066.  
  26067.  
  26068.  4.3 bc - Arbitrary-precision arithmetic language                      365
  26069.  
  26070.  
  26071.  
  26072.  
  26073.  
  26074.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  26075.  
  26076.                              '{' NEWLINE opt_auto_define_list
  26077.                              statement_list '}'
  26078.                        ;
  26079.  
  26080.  opt_parameter_list    : /* empty */
  26081.                        | parameter_list
  26082.                        ;
  26083.  
  26084.  parameter_list        : LETTER
  26085.                        | define_list ',' LETTER
  26086.                        ;
  26087.  
  26088.  opt_auto_define_list  : /* empty */
  26089.                        | Auto define_list NEWLINE
  26090.                        | Auto define_list ';'
  26091.                        ;
  26092.  
  26093.  define_list           : LETTER
  26094.                        | LETTER '[' ']'
  26095.                        | define_list ',' LETTER
  26096.                        | define_list ',' LETTER '[' ']'
  26097.                        ;
  26098.  
  26099.  opt_argument_list     : /* empty */
  26100.                        | argument_list
  26101.                        ;
  26102.  
  26103.  argument_list         : expression
  26104.                        | argument_list ',' expression
  26105.                        ;
  26106.  
  26107.  relational_expression : expression
  26108.                        | expression REL_OP expression
  26109.                        ;
  26110.  
  26111.  return_expression     : /* empty */
  26112.                        | expression
  26113.                        ;
  26114.  
  26115.  expression            : named_expression
  26116.                        | NUMBER
  26117.                        | '(' expression ')'
  26118.                        | LETTER '(' opt_argument_list ')'
  26119.                        | '-' expression
  26120.                        | expression '+' expression                          1
  26121.                        | expression '-' expression                          1
  26122.                        | expression MUL_OP expression
  26123.  
  26124.  
  26125.  
  26126.  
  26127.                Copyright c 1991 IEEE.  All rights reserved.
  26128.       This is an unapproved IEEE Standards Draft, subject to change.
  26129.  
  26130.  
  26131.  
  26132.  
  26133.  
  26134.  366                                     4 Execution Environment Utilities
  26135.  
  26136.  
  26137.  
  26138.  
  26139.  
  26140.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  26141.  
  26142.                        | expression '^' expression
  26143.                        | INCR_DECR named_expression
  26144.                        | named_expression INCR_DECR
  26145.                        | named_expression ASSIGN_OP expression
  26146.                        | Length '(' expression ')'
  26147.                        | Sqrt '(' expression ')'
  26148.                        | Scale '(' expression ')'
  26149.                        ;
  26150.  
  26151.  named_expression      : LETTER
  26152.                        | LETTER '[' expression ']'
  26153.                        | Scale
  26154.                        | Ibase
  26155.                        | Obase
  26156.                        ;
  26157.  
  26158.  
  26159.  4.3.7.2  bc Lexical Conventions
  26160.  
  26161.  The lexical conventions for bc programs, with respect to the preceding
  26162.  grammar, shall be as follows:
  26163.  
  26164.      (1)  Except as noted, bc shall recognize the longest possible token
  26165.           or delimiter beginning at a given point.
  26166.  
  26167.      (2)  A comment shall consist of any characters beginning with the two
  26168.           adjacent characters /* and terminated by the next occurrence of
  26169.           the two adjacent characters */.  Comments shall have no effect
  26170.           except to delimit lexical tokens.
  26171.  
  26172.      (3)  The character <newline> shall be recognized as the token
  26173.           NEWLINE.
  26174.  
  26175.      (4)  The token STRING shall represent a string constant; it shall
  26176.           consist of any characters beginning with the double-quote
  26177.           character (") and terminated by another occurrence of the
  26178.           double-quote character.  The value of the string shall be the
  26179.           sequence of all characters between, but not including, the two
  26180.           double-quote characters.  All characters shall be taken
  26181.           literally from the input, and there is no way to specify a
  26182.           string containing a double-quote character.  The length of the
  26183.           value of each string shall be limited to {BC_STRING_MAX} bytes.
  26184.  
  26185.      (5)  A <blank> shall have no effect except as an ordinary character    1
  26186.           if it appears within a STRING token, or to delimit a lexical      1
  26187.           token other than STRING.                                          1
  26188.  
  26189.      (6)  The combination of a backslash character immediately followed by  2
  26190.           a <newline> character shall delimit lexical tokens with the       2
  26191.           following exceptions:                                             2
  26192.  
  26193.                Copyright c 1991 IEEE.  All rights reserved.
  26194.       This is an unapproved IEEE Standards Draft, subject to change.
  26195.  
  26196.  
  26197.  
  26198.  
  26199.  
  26200.  4.3 bc - Arbitrary-precision arithmetic language                      367
  26201.  
  26202.  
  26203.  
  26204.  
  26205.  
  26206.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  26207.  
  26208.            - It shall be interpreted as a literal <newline> in STRING       2
  26209.              tokens.                                                        2
  26210.  
  26211.            - It shall be ignored as part of a multiline NUMBER token.       2
  26212.  
  26213.      (7)  The token NUMBER shall represent a numeric constant.  It shall
  26214.           be recognized by the following grammar:
  26215.  
  26216.                 NUMBER  : integer
  26217.                         | '.' integer
  26218.                         | integer '.'
  26219.                         | integer '.' integer
  26220.                         ;
  26221.  
  26222.                 integer : digit
  26223.                         | integer digit
  26224.                         ;
  26225.  
  26226.                 digit   : 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
  26227.                         | 8 | 9 | A | B | C | D | E | F
  26228.                         ;
  26229.  
  26230.      (8)  The value of a NUMBER token shall be interpreted as a numeral in
  26231.           the base specified by the value of the internal register ibase
  26232.           (described below).  Each of the digit characters shall have the
  26233.           value from 0 to 15 in the order listed here, and the period
  26234.           character shall represent the radix point.  The behavior is
  26235.           undefined if digits greater than or equal to the value of ibase
  26236.           appear in the token.  (However, note the exception for single-
  26237.           digit values being assigned to ibase and obase themselves, in
  26238.           4.3.7.3).
  26239.  
  26240.      (9)  The following keywords shall be recognized as tokens:
  26241.  
  26242.                       auto     for     length   return   sqrt
  26243.                       break    ibase   obase    scale    while
  26244.                       define   if      quit
  26245.  
  26246.     (10)  Any of the following characters occurring anywhere except within
  26247.           a keyword shall be recognized as the token LETTER:
  26248.  
  26249.                 a b c d e f g h i j k l m n o p q r s t u v w x y z
  26250.  
  26251.     (11)  The following single-character and two-character sequences shall
  26252.           be recognized as the token ASSIGN_OP:
  26253.  
  26254.                 =    +=    -=    *=    /=    %=    ^=
  26255.  
  26256.  
  26257.  
  26258.  
  26259.                Copyright c 1991 IEEE.  All rights reserved.
  26260.       This is an unapproved IEEE Standards Draft, subject to change.
  26261.  
  26262.  
  26263.  
  26264.  
  26265.  
  26266.  368                                     4 Execution Environment Utilities
  26267.  
  26268.  
  26269.  
  26270.  
  26271.  
  26272.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  26273.  
  26274.     (12)  If an = character, as the beginning of a token, is followed by a
  26275.           - character with no intervening delimiter, the behavior is
  26276.           undefined.
  26277.  
  26278.     (13)  The following single-characters shall be recognized as the token
  26279.           MUL_OP:
  26280.  
  26281.                 *    /    %
  26282.  
  26283.     (14)  The following single-character and two-character sequences shall
  26284.           be recognized as the token REL_OP:
  26285.  
  26286.                 ==      <=      >=      !=      <      >
  26287.  
  26288.     (15)  The following two-character sequences shall be recognized as the
  26289.           token INCR_DECR:
  26290.  
  26291.                 ++    --
  26292.  
  26293.     (16)  The following single characters shall be recognized as tokens
  26294.           whose names are the character:
  26295.  
  26296.                 <newline>   (   )   ,   +   -   ;   [   ]   ^   {   }       1
  26297.  
  26298.     (17)  The token EOF shall be returned when the end of input is
  26299.           reached.
  26300.  
  26301.  
  26302.  4.3.7.3  bc Operations
  26303.  
  26304.  There are three kinds of identifiers:  ordinary identifiers, array
  26305.  identifiers, and function identifiers.  All three types consist of single
  26306.  lowercase letters.  Array identifiers shall be followed by square
  26307.  brackets ([ ]).  An array subscript is required except in an argument or
  26308.  auto list.  Arrays are singly dimensioned and can contain up to
  26309.  {BC_DIM_MAX} elements.  Indexing begins at zero so an array is indexed
  26310.  from 0 to {BC_DIM_MAX}-1.  Subscripts shall be truncated to integers.
  26311.  Function identifiers shall be followed by parentheses, possibly enclosing
  26312.  arguments.  The three types of identifiers do not conflict.
  26313.  
  26314.  Table 4-3 summarizes the rules for precedence and associativity of all
  26315.  operators.  Operators on the same line shall have the same precedence;
  26316.  rows are in order of decreasing precedence.
  26317.  
  26318.  Each expression or named expression has a _s_c_a_l_e, which is the number of
  26319.  decimal digits that shall be maintained as the fractional portion of the
  26320.  expression.
  26321.  
  26322.  
  26323.  
  26324.  
  26325.                Copyright c 1991 IEEE.  All rights reserved.
  26326.       This is an unapproved IEEE Standards Draft, subject to change.
  26327.  
  26328.  
  26329.  
  26330.  
  26331.  
  26332.  4.3 bc - Arbitrary-precision arithmetic language                      369
  26333.  
  26334.  
  26335.  
  26336.  
  26337.  
  26338.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  26339.  
  26340.  
  26341.                         Table 4-3  -  bc Operators
  26342.  __________________________________________________________________________________________________________________________________________________
  26343.                         Operator                     Associativity
  26344.        ____________________________________________________________
  26345.        ++,    --                                     not applicable
  26346.        unary -                                       not applicable
  26347.        ^                                             right to left
  26348.        *,    /,    %                                 left to right
  26349.        +, binary -                                   left to right
  26350.        =,    +=,    -=,    *=,    /=,    %=,    ^=   right to left
  26351.        ==,    <=,    >=,    !=,    <,    >           none
  26352.  __________________________________________________________________________________________________________________________________________________
  26353.  
  26354.  
  26355.  _N_a_m_e_d _e_x_p_r_e_s_s_i_o_n_s are places where values are stored.  Named expressions
  26356.  shall be valid on the left side of an assignment.  The value of a named
  26357.  expression shall be the value stored in the place named.  Simple
  26358.  identifiers and array elements shall be named expressions; they shall
  26359.  have an initial value of zero and an initial scale of zero.
  26360.  
  26361.  The internal registers scale, _i_b_a_s_e, and obase are all named expressions.
  26362.  The scale of an expression consisting of the name of one of these
  26363.  registers shall be zero; values assigned to any of these registers shall
  26364.  be truncated to integers.  The scale register shall contain a global
  26365.  value used in computing the scale of expressions (as described below).
  26366.  The value of the register scale shall be limited to 0 _< scale _<
  26367.  {BC_SCALE_MAX} and shall have a default value of zero.  The ibase and
  26368.  obase registers are the input and output number radix, respectively.  The
  26369.  value of ibase shall be limited to
  26370.  
  26371.        2 _< ibase _< 16
  26372.  
  26373.  The value of obase shall be limited to
  26374.  
  26375.        2 _< obase _< {BC_BASE_MAX}
  26376.  
  26377.  When either ibase or obase is assigned a single digit value from the list
  26378.  in 4.3.7.2, the value shall be assumed in hexadecimal.  (For example,
  26379.  ibase=A sets to base ten, regardless of the current ibase value.)
  26380.  Otherwise, the behavior is undefined when digits greater than or equal to
  26381.  the value of ibase appear in the input.  Both ibase and obase shall have
  26382.  initial values of 10.
  26383.  
  26384.  Internal computations shall be conducted as if in decimal, regardless of   1
  26385.  the input and output bases, to the specified number of decimal digits.
  26386.  When an exact result is not achieved, (e.g., scale=0; 3.2/1) the result
  26387.  shall be truncated.
  26388.  
  26389.  
  26390.  
  26391.                Copyright c 1991 IEEE.  All rights reserved.
  26392.       This is an unapproved IEEE Standards Draft, subject to change.
  26393.  
  26394.  
  26395.  
  26396.  
  26397.  
  26398.  370                                     4 Execution Environment Utilities
  26399.  
  26400.  
  26401.  
  26402.  
  26403.  
  26404.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  26405.  
  26406.  For all values of obase specified by this standard, numerical values
  26407.  shall be output as follows:
  26408.  
  26409.      (1)  If the value is less than zero, a hyphen (-) character shall be
  26410.           output.
  26411.  
  26412.      (2)  One of the following shall be output, depending on the numerical
  26413.           value:
  26414.  
  26415.            - If the absolute value of the numerical value is greater than
  26416.              or equal to one, the integer portion of the value shall be
  26417.              output as a series of digits appropriate to obase (as
  26418.              described below).  The most significant nonzero digit shall
  26419.              be output next, followed by each successively less
  26420.              significant digit.
  26421.  
  26422.            - If the absolute value of the numerical value is less than one
  26423.              but greater than zero and the scale of the numerical value is
  26424.              greater than zero, it is unspecified whether the character 0
  26425.              is output.
  26426.  
  26427.            - If the numerical value is zero, the character 0 shall be
  26428.              output.
  26429.  
  26430.      (3)  If the scale of the value is greater than zero, a period
  26431.           character shall be output, followed by a series of digits
  26432.           appropriate to obase (as described below) representing the most
  26433.           significant portion of the fractional part of the value.  If _s
  26434.           represents the scale of the value being output, the number of
  26435.           digits output shall be _s if obase is 10, less than or equal to _s
  26436.           if obase is greater than 10, or greater than or equal to _s if
  26437.           obase is less than 10.  For obase values other than 10, this
  26438.           should be the number of digits needed to represent a precision
  26439.           of 10_s.
  26440.  
  26441.  For obase values from 2 to 16, valid digits are the first obase of the
  26442.  single characters
  26443.  
  26444.        0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  26445.  
  26446.  which represent the values zero through fifteen, respectively.
  26447.  
  26448.  For bases greater than 16, each ``digit'' shall be written as a separate
  26449.  multidigit decimal number.  Each digit except the most significant
  26450.  fractional digit shall be preceded a single <space> character.  For bases
  26451.  from 17 to 100, bc shall write two-digit decimal numbers; for bases from
  26452.  101 to 999, three-digit decimal strings, and so on.  For example, the
  26453.  decimal number 1024 in base 25 would be written as:
  26454.  
  26455.  
  26456.  
  26457.                Copyright c 1991 IEEE.  All rights reserved.
  26458.       This is an unapproved IEEE Standards Draft, subject to change.
  26459.  
  26460.  
  26461.  
  26462.  
  26463.  
  26464.  4.3 bc - Arbitrary-precision arithmetic language                      371
  26465.  
  26466.  
  26467.  
  26468.  
  26469.  
  26470.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  26471.  
  26472.        W01W15W24
  26473.  
  26474.  in base 125, as:
  26475.  
  26476.        W008W024
  26477.  
  26478.  Very large numbers shall be split across lines with 70 characters per
  26479.  line in the POSIX Locale; other locales may split at different character
  26480.  boundaries.  Lines that are continued shall end with a backslash (\).
  26481.  
  26482.  A function call shall consist of a function name followed by parentheses
  26483.  containing a comma-separated list of expressions, which are the function
  26484.  arguments.  A whole array passed as an argument shall be specified by the
  26485.  array name followed by empty square brackets.  All function arguments
  26486.  shall be passed by value.  As a result, changes made to the formal
  26487.  parameters have no effect on the actual arguments.  If the function
  26488.  terminates by executing a return statement, the value of the function
  26489.  shall be the value of the expression in the parentheses of the return
  26490.  statement or shall be zero if no expression is provided or if there is no
  26491.  return statement.
  26492.  
  26493.  The result of sqrt(_e_x_p_r_e_s_s_i_o_n) _s_h_a_l_l _b_e _t_h_e _s_q_u_a_r_e _r_o_o_t _o_f _t_h_e
  26494.  _e_x_p_r_e_s_s_i_o_n.  _T_h_e _r_e_s_u_l_t _s_h_a_l_l _b_e _t_r_u_n_c_a_t_e_d _i_n _t_h_e _l_e_a_s_t _s_i_g_n_i_f_i_c_a_n_t
  26495.  _d_e_c_i_m_a_l _p_l_a_c_e.  _T_h_e _s_c_a_l_e _o_f _t_h_e _r_e_s_u_l_t _s_h_a_l_l _b_e _t_h_e _s_c_a_l_e _o_f _t_h_e
  26496.  _e_x_p_r_e_s_s_i_o_n _o_r _t_h_e _v_a_l_u_e _o_f _s_c_a_l_e, whichever is larger.
  26497.  
  26498.  The result of length(_e_x_p_r_e_s_s_i_o_n) _s_h_a_l_l _b_e _t_h_e _t_o_t_a_l _n_u_m_b_e_r _o_f _s_i_g_n_i_f_i_c_a_n_t
  26499.  _d_e_c_i_m_a_l _d_i_g_i_t_s _i_n _t_h_e _e_x_p_r_e_s_s_i_o_n.  _T_h_e _s_c_a_l_e _o_f _t_h_e _r_e_s_u_l_t _s_h_a_l_l _b_e _z_e_r_o.
  26500.  
  26501.  _T_h_e _r_e_s_u_l_t _o_f _s_c_a_l_e(_e_x_p_r_e_s_s_i_o_n) _s_h_a_l_l _b_e _t_h_e _s_c_a_l_e _o_f _t_h_e _e_x_p_r_e_s_s_i_o_n.
  26502.  _T_h_e _s_c_a_l_e _o_f _t_h_e _r_e_s_u_l_t _s_h_a_l_l _b_e _z_e_r_o.
  26503.  
  26504.  _A _n_u_m_e_r_i_c _c_o_n_s_t_a_n_t _s_h_a_l_l _b_e _a_n _e_x_p_r_e_s_s_i_o_n.  _T_h_e _s_c_a_l_e _s_h_a_l_l _b_e _t_h_e _n_u_m_b_e_r
  26505.  _o_f _d_i_g_i_t_s _t_h_a_t _f_o_l_l_o_w _t_h_e _r_a_d_i_x _p_o_i_n_t _i_n _t_h_e _i_n_p_u_t _r_e_p_r_e_s_e_n_t_i_n_g _t_h_e
  26506.  _c_o_n_s_t_a_n_t, _o_r _z_e_r_o _i_f _n_o _r_a_d_i_x _p_o_i_n_t _a_p_p_e_a_r_s.
  26507.  
  26508.  _T_h_e _s_e_q_u_e_n_c_e ( _e_x_p_r_e_s_s_i_o_n ) _s_h_a_l_l _b_e _a_n _e_x_p_r_e_s_s_i_o_n _w_i_t_h _t_h_e _s_a_m_e _v_a_l_u_e
  26509.  _a_n_d _s_c_a_l_e _a_s _e_x_p_r_e_s_s_i_o_n. The parentheses can be used to alter the normal
  26510.  precedence.
  26511.  
  26512.  The semantics of the unary and binary operators are as follows.
  26513.  
  26514.     -_e_x_p_r_e_s_s_i_o_n
  26515.              The result shall be the negative of the _e_x_p_r_e_s_s_i_o_n.  The
  26516.              scale of the result shall be the scale of _e_x_p_r_e_s_s_i_o_n.
  26517.  
  26518.  The unary increment and decrement operators shall not modify the scale of
  26519.  the named expression upon which they operate.  The scale of the result
  26520.  shall be the scale of that named expression.
  26521.  
  26522.  
  26523.                Copyright c 1991 IEEE.  All rights reserved.
  26524.       This is an unapproved IEEE Standards Draft, subject to change.
  26525.  
  26526.  
  26527.  
  26528.  
  26529.  
  26530.  372                                     4 Execution Environment Utilities
  26531.  
  26532.  
  26533.  
  26534.  
  26535.  
  26536.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  26537.  
  26538.     ++_n_a_m_e_d-_e_x_p_r_e_s_s_i_o_n
  26539.              The named expression shall be incremented by one.  The result
  26540.              shall be the value of the named expression after
  26541.              incrementing.
  26542.  
  26543.     --_n_a_m_e_d-_e_x_p_r_e_s_s_i_o_n
  26544.              The named expression shall be decremented by one.  The result
  26545.              shall be the value of the named expression after
  26546.              decrementing.
  26547.  
  26548.     _n_a_m_e_d-_e_x_p_r_e_s_s_i_o_n++
  26549.              The named expression shall be incremented by one.  The result
  26550.              shall be the value of the named expression before
  26551.              incrementing.
  26552.  
  26553.     _n_a_m_e_d-_e_x_p_r_e_s_s_i_o_n--
  26554.              The named expression shall be decremented by one.  The result
  26555.              shall be the value of the named expression before
  26556.              decrementing.
  26557.  
  26558.  The exponentiation operator, circumflex (^), shall bind right to left.
  26559.  
  26560.     _e_x_p_r_e_s_s_i_o_n^_e_x_p_r_e_s_s_i_o_n
  26561.              The result shall be the first _e_x_p_r_e_s_s_i_o_n raised to the power
  26562.              of the second _e_x_p_r_e_s_s_i_o_n.  If the second expression is not an
  26563.              integer, the behavior is undefined.  If a is the scale of the
  26564.              left expression and b is the absolute value of the right
  26565.              expression, the scale of the result shall be:
  26566.  
  26567.                    if b >= 0 min(a * b, max(scale, a))                      2
  26568.                    if b <  0 scale                                          2
  26569.  
  26570.  The multiplicative operators (*, /, %) shall bind left to right.
  26571.  
  26572.     _e_x_p_r_e_s_s_i_o_n * _e_x_p_r_e_s_s_i_o_n
  26573.              The result shall be the product of the two expressions.  If a
  26574.              and b are the scales of the two expressions, then the scale
  26575.              of the result shall be:
  26576.  
  26577.                    min(a+b,max(scale,a,b))
  26578.  
  26579.     _e_x_p_r_e_s_s_i_o_n / _e_x_p_r_e_s_s_i_o_n
  26580.              The result shall be the quotient of the two expressions.  The
  26581.              scale of the result shall be the value of scale.
  26582.  
  26583.     _e_x_p_r_e_s_s_i_o_n % _e_x_p_r_e_s_s_i_o_n
  26584.              _F_o_r _e_x_p_r_e_s_s_i_o_n_s _a and _b, a % b shall be evaluated equivalent
  26585.              to the steps:
  26586.  
  26587.  
  26588.  
  26589.                Copyright c 1991 IEEE.  All rights reserved.
  26590.       This is an unapproved IEEE Standards Draft, subject to change.
  26591.  
  26592.  
  26593.  
  26594.  
  26595.  
  26596.  4.3 bc - Arbitrary-precision arithmetic language                      373
  26597.  
  26598.  
  26599.  
  26600.  
  26601.  
  26602.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  26603.  
  26604.               (1)  Compute a/b to current scale.
  26605.  
  26606.               (2)  Use the result to compute
  26607.  
  26608.                          a - (a / b) * b
  26609.  
  26610.                    to scale
  26611.  
  26612.                          max(scale + scale(b), scale(a))
  26613.  
  26614.              The scale of the result shall be
  26615.  
  26616.                    max(scale + scale(b), scale(a))
  26617.  
  26618.  The additive operators (+, -) shall bind left to right.
  26619.  
  26620.     _e_x_p_r_e_s_s_i_o_n + _e_x_p_r_e_s_s_i_o_n
  26621.              The result shall be the sum of the two expressions.  The
  26622.              scale of the result shall be the maximum of the scales of the
  26623.              expressions.
  26624.  
  26625.     _e_x_p_r_e_s_s_i_o_n - _e_x_p_r_e_s_s_i_o_n
  26626.              The result shall be the difference of the two expressions.
  26627.              The scale of the result shall be the maximum of the scales of
  26628.              the expressions.
  26629.  
  26630.  The assignment operators (=, +=, -=, *=, /=, %=, ^=) shall bind right to
  26631.  left.
  26632.  
  26633.     _n_a_m_e_d-_e_x_p_r_e_s_s_i_o_n = _e_x_p_r_e_s_s_i_o_n
  26634.              This expression results in assigning the value of the
  26635.              expression on the right to the named expression on the left.
  26636.              The scale of both the named expression and the result shall
  26637.              be the scale of _e_x_p_r_e_s_s_i_o_n.
  26638.  
  26639.  The compound assignments forms
  26640.  
  26641.        _n_a_m_e_d-_e_x_p_r_e_s_s_i_o_n <_o_p_e_r_a_t_o_r>= _e_x_p_r_e_s_s_i_o_n
  26642.  
  26643.  shall be equivalent to:
  26644.  
  26645.        _n_a_m_e_d-_e_x_p_r_e_s_s_i_o_n = _n_a_m_e_d-_e_x_p_r_e_s_s_i_o_n <_o_p_e_r_a_t_o_r> _e_x_p_r_e_s_s_i_o_n
  26646.  
  26647.  except that the _n_a_m_e_d-_e_x_p_r_e_s_s_i_o_n shall be evaluated only once.
  26648.  
  26649.  Unlike all other operators, the relational operators (<, >, <=, >=, ==,
  26650.  !=) shall be only valid as the object of an if, while, or inside a for
  26651.  statement.
  26652.  
  26653.  
  26654.  
  26655.                Copyright c 1991 IEEE.  All rights reserved.
  26656.       This is an unapproved IEEE Standards Draft, subject to change.
  26657.  
  26658.  
  26659.  
  26660.  
  26661.  
  26662.  374                                     4 Execution Environment Utilities
  26663.  
  26664.  
  26665.  
  26666.  
  26667.  
  26668.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  26669.  
  26670.     _e_x_p_r_e_s_s_i_o_n_1 < _e_x_p_r_e_s_s_i_o_n_2
  26671.              The relation shall be true if the value of _e_x_p_r_e_s_s_i_o_n_1 is
  26672.              strictly less than the value of _e_x_p_r_e_s_s_i_o_n_2.
  26673.  
  26674.     _e_x_p_r_e_s_s_i_o_n_1 > _e_x_p_r_e_s_s_i_o_n_2
  26675.              The relation shall be true if the value of _e_x_p_r_e_s_s_i_o_n_1 is
  26676.              strictly greater than the value of _e_x_p_r_e_s_s_i_o_n_2.
  26677.  
  26678.     _e_x_p_r_e_s_s_i_o_n_1 <= _e_x_p_r_e_s_s_i_o_n_2
  26679.              The relation shall be true if the value of _e_x_p_r_e_s_s_i_o_n_1 is
  26680.              less than or equal to the value of _e_x_p_r_e_s_s_i_o_n_2.
  26681.  
  26682.     _e_x_p_r_e_s_s_i_o_n_1 >= _e_x_p_r_e_s_s_i_o_n_2
  26683.              The relation shall be true if the value of _e_x_p_r_e_s_s_i_o_n_1 is
  26684.              greater than or equal to the value of _e_x_p_r_e_s_s_i_o_n_2.
  26685.  
  26686.     _e_x_p_r_e_s_s_i_o_n_1 == _e_x_p_r_e_s_s_i_o_n_2
  26687.              The relation shall be true if the values of _e_x_p_r_e_s_s_i_o_n_1 and
  26688.              _e_x_p_r_e_s_s_i_o_n_2 are equal.
  26689.  
  26690.     _e_x_p_r_e_s_s_i_o_n_1 != _e_x_p_r_e_s_s_i_o_n_2
  26691.              The relation shall be true if the values of _e_x_p_r_e_s_s_i_o_n_1 and
  26692.              _e_x_p_r_e_s_s_i_o_n_2 are unequal.
  26693.  
  26694.  There are only two storage classes in bc, global and automatic (local).
  26695.  Only identifiers that are to be local to a function need be declared with
  26696.  the auto command.  The arguments to a function shall be local to the
  26697.  function.  All other identifiers are assumed to be global and available
  26698.  to all functions.  All identifiers, global and local, have initial values
  26699.  of zero.  Identifiers declared as auto shall be allocated on entry to the
  26700.  function and released on returning from the function.  They therefore do
  26701.  not retain values between function calls.  Auto arrays shall be specified
  26702.  by the array name followed by empty square brackets.  On entry to a
  26703.  function, the old values of the names that appear as parameters and as
  26704.  automatic variables are pushed onto a stack.  Until return is made from
  26705.  the function, reference to these names refers only to the new values.
  26706.  
  26707.  References to any of these names from other functions that are called
  26708.  from this function also refer to the new value until one of those
  26709.  functions uses the same name for a local variable.
  26710.  
  26711.  When a statement is an expression, unless the main operator is an
  26712.  assignment, execution of the statement shall write the value of the
  26713.  expression followed by a <newline> character.
  26714.  
  26715.  When a statement is a string, execution of the statement shall write the
  26716.  value of the string.
  26717.  
  26718.  
  26719.  
  26720.  
  26721.                Copyright c 1991 IEEE.  All rights reserved.
  26722.       This is an unapproved IEEE Standards Draft, subject to change.
  26723.  
  26724.  
  26725.  
  26726.  
  26727.  
  26728.  4.3 bc - Arbitrary-precision arithmetic language                      375
  26729.  
  26730.  
  26731.  
  26732.  
  26733.  
  26734.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  26735.  
  26736.  Statements separated by semicolon or <newline> shall be executed
  26737.  sequentially.  In an interactive invocation of bc, each time a <newline>
  26738.  character is read that satisfies the grammatical production
  26739.  
  26740.        input_item : semicolon_list NEWLINE
  26741.  
  26742.  the sequential list of statements making up the semicolon_list shall be
  26743.  executed immediately and any output produced by that execution shall be
  26744.  written without any delay due to buffering.
  26745.  
  26746.  In an if statement [if (_r_e_l_a_t_i_o_n) _s_t_a_t_e_m_e_n_t] the _s_t_a_t_e_m_e_n_t shall be
  26747.  executed if the relation is true.
  26748.  
  26749.  The while statement [while (_r_e_l_a_t_i_o_n) _s_t_a_t_e_m_e_n_t] implements a loop in
  26750.  which the _r_e_l_a_t_i_o_n is tested; each time the _r_e_l_a_t_i_o_n is true, the
  26751.  _s_t_a_t_e_m_e_n_t shall be executed and the _r_e_l_a_t_i_o_n retested.  When the _r_e_l_a_t_i_o_n
  26752.  is false, execution shall resume after _s_t_a_t_e_m_e_n_t.
  26753.  
  26754.  A for statement [for (_e_x_p_r_e_s_s_i_o_n; _r_e_l_a_t_i_o_n; _e_x_p_r_e_s_s_i_o_n) _s_t_a_t_e_m_e_n_t] shall
  26755.  be the same as:
  26756.  
  26757.        _f_i_r_s_t-_e_x_p_r_e_s_s_i_o_n
  26758.        while (_r_e_l_a_t_i_o_n) {
  26759.                _s_t_a_t_e_m_e_n_t
  26760.                _l_a_s_t-_e_x_p_r_e_s_s_i_o_n
  26761.        }
  26762.  
  26763.  All three expressions shall be present.
  26764.  
  26765.  The break statement causes termination of a for or while statement.
  26766.  
  26767.  The auto statement [auto _i_d_e_n_t_i_f_i_e_r[,_i_d_e_n_t_i_f_i_e_r] ...]  _s_h_a_l_l _c_a_u_s_e _t_h_e
  26768.  _v_a_l_u_e_s _o_f _t_h_e _i_d_e_n_t_i_f_i_e_r_s _t_o _b_e _p_u_s_h_e_d _d_o_w_n.  _T_h_e _i_d_e_n_t_i_f_i_e_r_s _c_a_n _b_e
  26769.  _o_r_d_i_n_a_r_y _i_d_e_n_t_i_f_i_e_r_s _o_r _a_r_r_a_y _i_d_e_n_t_i_f_i_e_r_s.  _A_r_r_a_y _i_d_e_n_t_i_f_i_e_r_s _s_h_a_l_l _b_e
  26770.  _s_p_e_c_i_f_i_e_d _b_y _f_o_l_l_o_w_i_n_g _t_h_e _a_r_r_a_y _n_a_m_e _b_y _e_m_p_t_y _s_q_u_a_r_e _b_r_a_c_k_e_t_s.  _T_h_e _a_u_t_o
  26771.  statement shall be the first statement in a function definition.
  26772.  
  26773.  A define statement:
  26774.  
  26775.        define _L_E_T_T_E_R ( _o_p_t__p_a_r_a_m_e_t_e_r__l_i_s_t ) {
  26776.                _o_p_t__a_u_t_o__d_e_f_i_n_e__l_i_s_t
  26777.                _s_t_a_t_e_m_e_n_t__l_i_s_t
  26778.        }
  26779.  
  26780.  defines a function named _L_E_T_T_E_R. If a function named _L_E_T_T_E_R was
  26781.  previously defined, the define statement shall replace the previous
  26782.  definition.  The expression
  26783.  
  26784.  
  26785.  
  26786.  
  26787.                Copyright c 1991 IEEE.  All rights reserved.
  26788.       This is an unapproved IEEE Standards Draft, subject to change.
  26789.  
  26790.  
  26791.  
  26792.  
  26793.  
  26794.  376                                     4 Execution Environment Utilities
  26795.  
  26796.  
  26797.  
  26798.  
  26799.  
  26800.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  26801.  
  26802.        _L_E_T_T_E_R ( _o_p_t__a_r_g_u_m_e_n_t__l_i_s_t )
  26803.  
  26804.  shall invoke the function named _L_E_T_T_E_R. The behavior is undefined if the
  26805.  number of arguments in the invocation does not match the number of
  26806.  parameters in the definition.  Functions shall be defined before they are
  26807.  invoked.  A function shall be considered to be defined within its own
  26808.  body, so recursive calls shall be valid.  The values of numeric constants
  26809.  within a function shall be interpreted in the base specified by the value
  26810.  of the ibase register when the function is invoked.
  26811.  
  26812.  The return statements [return and return(_e_x_p_r_e_s_s_i_o_n)] shall cause
  26813.  termination of a function, popping of its auto variables, and specifies
  26814.  the result of the function.  The first form shall be equivalent to
  26815.  return(0).  The value and scale of an invocation of the function shall be
  26816.  the value and scale of the expression in parentheses.
  26817.  
  26818.  The quit statement (quit) _s_h_a_l_l _s_t_o_p _e_x_e_c_u_t_i_o_n _o_f _a _b_c program at the
  26819.  point where the statement occurs in the input, even if it occurs in a
  26820.  function definition, or in an if, for, or while statement.
  26821.  
  26822.  The following functions shall be defined when the -l option is specified:
  26823.  
  26824.     s ( _E_x_p_r_e_s_s_i_o_n )     Sine of argument in radians
  26825.  
  26826.     c ( _E_x_p_r_e_s_s_i_o_n )     _C_o_s_i_n_e _o_f _a_r_g_u_m_e_n_t _i_n _r_a_d_i_a_n_s
  26827.  
  26828.     _a ( _E_x_p_r_e_s_s_i_o_n )     _A_r_c_t_a_n_g_e_n_t _o_f _a_r_g_u_m_e_n_t
  26829.  
  26830.     _l ( _E_x_p_r_e_s_s_i_o_n )     _N_a_t_u_r_a_l _l_o_g_a_r_i_t_h_m _o_f _a_r_g_u_m_e_n_t
  26831.  
  26832.     _e ( _E_x_p_r_e_s_s_i_o_n )     _E_x_p_o_n_e_n_t_i_a_l _f_u_n_c_t_i_o_n _o_f _a_r_g_u_m_e_n_t
  26833.  
  26834.     _j ( _E_x_p_r_e_s_s_i_o_n , _E_x_p_r_e_s_s_i_o_n )
  26835.                          _B_e_s_s_e_l _f_u_n_c_t_i_o_n _o_f _i_n_t_e_g_e_r _o_r_d_e_r
  26836.  
  26837.  _T_h_e _s_c_a_l_e _o_f _a_n _i_n_v_o_c_a_t_i_o_n _o_f _e_a_c_h _o_f _t_h_e_s_e _f_u_n_c_t_i_o_n_s _s_h_a_l_l _b_e _t_h_e _v_a_l_u_e
  26838.  _o_f _t_h_e _s_c_a_l_e register when the function is invoked.  The behavior is
  26839.  undefined if any of these functions is invoked with an argument outside
  26840.  the domain of the mathematical function.
  26841.  
  26842.  
  26843.  4.3.8  Exit Status
  26844.  
  26845.  The bc utility shall exit with one of the following values:
  26846.  
  26847.     0              All input files were processed successfully.
  26848.  
  26849.  
  26850.  
  26851.  
  26852.  
  26853.                Copyright c 1991 IEEE.  All rights reserved.
  26854.       This is an unapproved IEEE Standards Draft, subject to change.
  26855.  
  26856.  
  26857.  
  26858.  
  26859.  
  26860.  4.3 bc - Arbitrary-precision arithmetic language                      377
  26861.  
  26862.  
  26863.  
  26864.  
  26865.  
  26866.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  26867.  
  26868.     _u_n_s_p_e_c_i_f_i_e_d    An error occurred.
  26869.  
  26870.  
  26871.  4.3.9  Consequences of Errors
  26872.  
  26873.  If any _f_i_l_e operand is specified and the named file cannot be accessed,
  26874.  bc shall write a diagnostic message to standard error and terminate
  26875.  without any further action.
  26876.  
  26877.  In an interactive invocation of bc, the utility should print an error
  26878.  message and recover following any error in the input.  In a
  26879.  noninteractive invocation of bc, invalid input causes undefined behavior.
  26880.  
  26881.  BEGIN_RATIONALE
  26882.  
  26883.  
  26884.  4.3.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  26885.  
  26886.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  26887.  
  26888.  This description is based on _B_C--_A_n _A_r_b_i_t_r_a_r_y _P_r_e_c_i_s_i_o_n _D_e_s_k-_C_a_l_c_u_l_a_t_o_r
  26889.  _L_a_n_g_u_a_g_e by Lorinda Cherry and Robert Morris, in the BSD User Manual
  26890.  {B28}.
  26891.  
  26892.  Automatic variables in bc do not work in exactly the same way as in
  26893.  either C or PL/1.
  26894.  
  26895.  In the shell, the following assigns an approximation of the first ten
  26896.  digits of J to the variable _x:
  26897.  
  26898.        x=$(printf "%s\n" 'scale = 10; 104348/33215' | bc)
  26899.  
  26900.  The following bc program prints the same approximation of J, with a
  26901.  label, to standard output:
  26902.  
  26903.        scale = 10
  26904.        "pi equals "
  26905.        104348 / 33215
  26906.  
  26907.  The following defines a function to compute an approximate value of the
  26908.  exponential function (note that such a function is predefined if the -l
  26909.  option is specified):
  26910.  
  26911.  
  26912.  
  26913.  
  26914.  
  26915.  
  26916.  
  26917.  
  26918.  
  26919.                Copyright c 1991 IEEE.  All rights reserved.
  26920.       This is an unapproved IEEE Standards Draft, subject to change.
  26921.  
  26922.  
  26923.  
  26924.  
  26925.  
  26926.  378                                     4 Execution Environment Utilities
  26927.  
  26928.  
  26929.  
  26930.  
  26931.  
  26932.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  26933.  
  26934.        scale = 20
  26935.        define e(x){
  26936.                auto a, b, c, i, s
  26937.                a = 1
  26938.                b = 1
  26939.                s = 1
  26940.                for (i = 1; 1 == 1; i++){
  26941.                        a = a*x
  26942.                        b = b*i
  26943.                        c = a/b
  26944.                        if (c == 0) {
  26945.                                return(s)
  26946.                        }
  26947.                        s = s+c
  26948.                }
  26949.        }
  26950.  
  26951.  The following prints approximate values of the exponential function of
  26952.  the first ten integers:
  26953.  
  26954.        for (i = 1; i <= 10; ++i) {
  26955.                e(i)
  26956.        }
  26957.  
  26958.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  26959.  
  26960.  The bc utility is traditionally implemented as a front-end processor for
  26961.  dc; dc was not selected to be part of the standard because bc was thought
  26962.  to have a more intuitive programmatic interface.  Current implementations
  26963.  that implement bc using dc are expected to be compliant.
  26964.  
  26965.  The Exit Status for error conditions been left unspecified for several
  26966.  reasons:
  26967.  
  26968.      (1)  The bc utility is used in both interactive and noninteractive
  26969.           situations.  Different exit codes may be appropriate for the two
  26970.           uses.
  26971.  
  26972.      (2)  It is unclear when a nonzero exit should be given; divide-by-
  26973.           zero, undefined functions, and syntax errors are all
  26974.           possibilities.
  26975.  
  26976.      (3)  It is not clear what utility the exit status has.
  26977.  
  26978.      (4)  In the 4.3BSD, System V, and Ninth Edition implementations, bc
  26979.           works in conjunction with dc.  dc is the parent, bc is the
  26980.           child.  This was done to cleanly terminate bc if dc aborted.
  26981.  
  26982.  
  26983.  
  26984.  
  26985.                Copyright c 1991 IEEE.  All rights reserved.
  26986.       This is an unapproved IEEE Standards Draft, subject to change.
  26987.  
  26988.  
  26989.  
  26990.  
  26991.  
  26992.  4.3 bc - Arbitrary-precision arithmetic language                      379
  26993.  
  26994.  
  26995.  
  26996.  
  26997.  
  26998.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  26999.  
  27000.  The decision to have bc exit upon encountering an inaccessible input file
  27001.  is based on the belief that bc _f_i_l_e_1 _f_i_l_e_2 is used most often when at
  27002.  least _f_i_l_e_1 contains data/function declarations/initializations.  Having
  27003.  bc continue with prerequisite files missing is probably not useful.
  27004.  There is no implication in the Consequences of Errors subclause that bc
  27005.  must check all its files for accessibility before opening any of them.
  27006.  
  27007.  There was considerable debate on the appropriateness of the language
  27008.  accepted by bc.  Several members of the balloting group preferred to see
  27009.  either a pure subset of the C language or some changes to make the
  27010.  language more compatible with C.  While the bc language has some obvious
  27011.  similarities to C, it has never claimed to be compatible with any version
  27012.  of C.  An interpreter for a subset of C might be a very worthwhile
  27013.  utility, and it could potentially make bc obsolete.  However, no such
  27014.  utility is known in existing practice, and it was not within the scope of
  27015.  POSIX.2 to define such a language and utility.  If and when they are
  27016.  defined, it may be appropriate to include them in a future revision of
  27017.  this standard.  This left the following alternatives:
  27018.  
  27019.      (1)  Exclude any calculator language from the standard.
  27020.  
  27021.           The consensus of the working group was that a simple
  27022.           programmatic calculator language is very useful.  Also, an
  27023.           interactive version of such a calculator would be very important
  27024.           for the POSIX.2a revision.  The only arguments for excluding any
  27025.           calculator were that it would become obsolete if and when a C-
  27026.           compatible one emerged, or that the absence would encourage the
  27027.           development of such a C-compatible one.  These arguments did not
  27028.           sufficiently address the needs of current application writers.
  27029.  
  27030.      (2)  Standardize the existing dc, possibly with minor modifications.
  27031.  
  27032.           The consensus of the working group was that dc is a
  27033.           fundamentally less usable language and that that would be far
  27034.           too severe a penalty for avoiding the issue of being similar to
  27035.           but incompatible with C.
  27036.  
  27037.      (3)  Standardize the existing bc, possibly with minor modifications.
  27038.  
  27039.           This was the approach taken.  Most of the proponents of changing
  27040.           the language would not have been satisfied until most or all of
  27041.           the incompatibilities with C were resolved.  Since most of the
  27042.           changes considered most desirable would break existing
  27043.           applications and require significant modification to existing
  27044.           implementations, almost no modifications were made.  The one
  27045.           significant modification that was made was the replacement of
  27046.           the traditional bc's assignment operators =+ et al. with the
  27047.           more modern += et al.  The older versions are considered to be
  27048.           fundamentally flawed because of the lexical ambiguity in uses
  27049.  
  27050.  
  27051.                Copyright c 1991 IEEE.  All rights reserved.
  27052.       This is an unapproved IEEE Standards Draft, subject to change.
  27053.  
  27054.  
  27055.  
  27056.  
  27057.  
  27058.  380                                     4 Execution Environment Utilities
  27059.  
  27060.  
  27061.  
  27062.  
  27063.  
  27064.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  27065.  
  27066.           like
  27067.  
  27068.                 a=-1
  27069.  
  27070.           In order to permit implementations to deal with backward
  27071.           compatibility as they see fit, the behavior of this one
  27072.           ambiguous construct was made undefined.  (At least three
  27073.           implementations have been known to support this change already,
  27074.           so the degree of change involved should not be great.)
  27075.  
  27076.  The % operator is the mathematical remainder operator when scale is zero.
  27077.  The behavior of this operator for other values of scale is from
  27078.  traditional implementations of bc, and has been maintained for the sake
  27079.  of existing applications despite its nonintuitive nature.
  27080.  
  27081.  The bc utility always uses the period (.) character to represent a radix
  27082.  point, regardless of any decimal-point character specified as part of the
  27083.  current locale.  In languages like C or awk, the period character is used
  27084.  in program source, so it can be portable and unambiguous, while the
  27085.  locale-specific character is used in input and output.  Because there is
  27086.  no distinction between source and input in bc, this arrangement would not
  27087.  be possible.  Using the locale-specific character in bc's input would
  27088.  introduce ambiguities into the language; consider the following example
  27089.  in a locale with a comma as the decimal-point character:
  27090.  
  27091.        define f(a,b) {
  27092.                ...
  27093.        }
  27094.        ...
  27095.  
  27096.        f(1,2,3)
  27097.  
  27098.  Because of such ambiguities, the period character is used in input.
  27099.  Having input follow different conventions from output would be confusing
  27100.  in either pipeline usage or interactive usage, so period is also used in
  27101.  output.
  27102.  
  27103.  Traditional implementations permit setting ibase and obase to a broader
  27104.  range of values.  This includes values less than 2, which were not seen
  27105.  as sufficiently useful to standardize.  These implementations do not
  27106.  interpret input properly for values of ibase outside greater than 16.
  27107.  This is because numeric constants are recognized syntactically, rather
  27108.  than lexically, as described in the standard.  They are built from
  27109.  lexical tokens of single hexadecimal digits and periods.  Since <blank>s
  27110.  between tokens are not visible at the syntactic level, it is not possible
  27111.  to properly recognize the multidigit ``digits'' used in the higher bases.
  27112.  The ability to recognize input in these bases was not considered useful
  27113.  enough to require modifying these implementations.  Note that the
  27114.  recognition of numeric constants at the syntactic level is not a problem
  27115.  
  27116.  
  27117.                Copyright c 1991 IEEE.  All rights reserved.
  27118.       This is an unapproved IEEE Standards Draft, subject to change.
  27119.  
  27120.  
  27121.  
  27122.  
  27123.  
  27124.  4.3 bc - Arbitrary-precision arithmetic language                      381
  27125.  
  27126.  
  27127.  
  27128.  
  27129.  
  27130.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  27131.  
  27132.  with conformance to the standard, as it does not impact the behavior of
  27133.  portable applications (and correct bc programs).  Traditional
  27134.  implementations also accept input with all of the digits 0-9 and A-F
  27135.  regardless of the value of ibase; since digits with value greater than or
  27136.  equal to ibase are not really appropriate, the behavior when they appear
  27137.  is undefined, except for the common case of
  27138.  
  27139.        ibase=8;
  27140.        /* Process in octal base */
  27141.        ...
  27142.        ibase=A
  27143.        /* Restore decimal base */
  27144.  
  27145.  In some historical implementations, if the expression to be written is an
  27146.  uninitialized array element, a leading <space> character and/or up to
  27147.  four leading 0 characters may be output before the character zero.  This
  27148.  behavior is considered a bug; it is unlikely that any currently portable
  27149.  application relies on
  27150.  
  27151.        echo 'b[3]' | bc
  27152.  
  27153.  returning 00000 rather than 0.
  27154.  
  27155.  Exact calculation of the number of fractional digits to output for a
  27156.  given value in a base other than 10 can be computationally expensive.
  27157.  Traditional implementations use a faster approximation, and this is
  27158.  permitted.  Note that the requirements apply only to values of obase that
  27159.  the standard requires implementations to support (in particular, not to
  27160.  1, 0, or negative bases, if an implementation supports them as an
  27161.  extension).
  27162.  
  27163.  END_RATIONALE
  27164.  
  27165.  
  27166.  
  27167.  
  27168.  
  27169.  
  27170.  
  27171.  
  27172.  
  27173.  
  27174.  
  27175.  
  27176.  
  27177.  
  27178.  
  27179.  
  27180.  
  27181.  
  27182.  
  27183.                Copyright c 1991 IEEE.  All rights reserved.
  27184.       This is an unapproved IEEE Standards Draft, subject to change.
  27185.  
  27186.  
  27187.  
  27188.  
  27189.  
  27190.  382                                     4 Execution Environment Utilities
  27191.  
  27192.  
  27193.  
  27194.  
  27195.  
  27196.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  27197.  
  27198.  4.4  cat - Concatenate and print files
  27199.  
  27200.  
  27201.  4.4.1  Synopsis
  27202.  
  27203.  
  27204.  cat  [-u] [_f_i_l_e ...]
  27205.  
  27206.  
  27207.  4.4.2  Description
  27208.  
  27209.  The cat utility reads files in sequence and writes their contents to the
  27210.  standard output in the same sequence.
  27211.  
  27212.  
  27213.  4.4.3  Options
  27214.  
  27215.  The cat utility shall conform to the utility argument syntax guidelines
  27216.  described in 2.10.2.
  27217.  
  27218.  The following option shall be supported by the implementation:
  27219.  
  27220.     -u          Write bytes from the input file to the standard output
  27221.                 without delay as each is read.
  27222.  
  27223.  
  27224.  4.4.4  Operands
  27225.  
  27226.  The following operand shall be supported by the implementation:
  27227.  
  27228.     _f_i_l_e        A pathname of an input file.  If no _f_i_l_e operands are
  27229.                 specified, the standard input is used.  If a _f_i_l_e is -,
  27230.                 the cat utility shall read from the standard input at that
  27231.                 point in the sequence.  The cat utility shall not close
  27232.                 and reopen standard input when it is referenced in this
  27233.                 way, but shall accept multiple occurrences of - as a _f_i_l_e
  27234.                 operand.
  27235.  
  27236.  
  27237.  4.4.5  External Influences
  27238.  
  27239.  4.4.5.1  Standard Input
  27240.  
  27241.  The standard input is used only if no _f_i_l_e operands are specified, or if
  27242.  a _f_i_l_e operand is -.  See Input Files.
  27243.  
  27244.  
  27245.  
  27246.  
  27247.  
  27248.  
  27249.                Copyright c 1991 IEEE.  All rights reserved.
  27250.       This is an unapproved IEEE Standards Draft, subject to change.
  27251.  
  27252.  
  27253.  
  27254.  
  27255.  
  27256.  4.4 cat - Concatenate and print files                                 383
  27257.  
  27258.  
  27259.  
  27260.  
  27261.  
  27262.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  27263.  
  27264.  4.4.5.2  Input Files
  27265.  
  27266.  The input files can be any file type.
  27267.  
  27268.  
  27269.  4.4.5.3  Environment Variables
  27270.  
  27271.  The following environment variables shall affect the execution of cat:
  27272.  
  27273.     LANG               This variable shall determine the locale to use for
  27274.                        the locale categories when both LC_ALL and the
  27275.                        corresponding environment variable (beginning with
  27276.                        LC_) do not specify a locale.  See 2.6.
  27277.  
  27278.     LC_ALL             This variable shall determine the locale to be used
  27279.                        to override any values for locale categories
  27280.                        specified by the settings of LANG or any
  27281.                        environment variables beginning with LC_.
  27282.  
  27283.     LC_CTYPE           This variable shall determine the locale for the
  27284.                        interpretation of sequences of bytes of text data
  27285.                        as characters (e.g., single- versus multibyte
  27286.                        characters in arguments).
  27287.  
  27288.     LC_MESSAGES        This variable shall determine the language in which
  27289.                        messages should be written.
  27290.  
  27291.  4.4.5.4  Asynchronous Events
  27292.  
  27293.  Default.
  27294.  
  27295.  
  27296.  4.4.6  External Effects
  27297.  
  27298.  
  27299.  4.4.6.1  Standard Output
  27300.  
  27301.  The standard output shall contain the sequence of bytes read from the
  27302.  input file(s).  Nothing else shall be written to the standard output.
  27303.  
  27304.  4.4.6.2  Standard Error
  27305.  
  27306.  Used only for diagnostic messages.
  27307.  
  27308.  
  27309.  
  27310.  
  27311.  
  27312.  
  27313.  
  27314.  
  27315.                Copyright c 1991 IEEE.  All rights reserved.
  27316.       This is an unapproved IEEE Standards Draft, subject to change.
  27317.  
  27318.  
  27319.  
  27320.  
  27321.  
  27322.  384                                     4 Execution Environment Utilities
  27323.  
  27324.  
  27325.  
  27326.  
  27327.  
  27328.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  27329.  
  27330.  4.4.6.3  Output Files
  27331.  
  27332.  None.
  27333.  
  27334.  
  27335.  4.4.7  Extended Description
  27336.  
  27337.  None.
  27338.  
  27339.  
  27340.  4.4.8  Exit Status
  27341.  
  27342.  The cat utility shall exit with one of the following values:
  27343.  
  27344.      0    All input files were output successfully.
  27345.  
  27346.     >0    An error occurred.
  27347.  
  27348.  
  27349.  4.4.9  Consequences of Errors
  27350.  
  27351.  Default.
  27352.  
  27353.  BEGIN_RATIONALE
  27354.  
  27355.  
  27356.  4.4.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  27357.  
  27358.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  27359.  
  27360.  Historical versions of the cat utility include the options -e, -t, and
  27361.  -v, which permit the ends of lines, <tab>s, and invisible characters,
  27362.  respectively, to be rendered visible in the output.  The working group
  27363.  omitted these options because they provide too fine a degree of control
  27364.  over what is made visible, and similar output can be obtained using a
  27365.  command such as:
  27366.  
  27367.        sed -n -e 's/$/$/' -e l pathname
  27368.  
  27369.  The -s option was omitted because it corresponds to different functions
  27370.  in BSD and System V-based systems.  The BSD -s option to squeeze blank
  27371.  lines will be handled by more -s in the UPE.  The System V -s option to
  27372.  silence error messages can be accomplished by redirecting the standard
  27373.  error.  An alternative to cat-s is the following shell script using sed:
  27374.  
  27375.  
  27376.  
  27377.  
  27378.  
  27379.  
  27380.  
  27381.                Copyright c 1991 IEEE.  All rights reserved.
  27382.       This is an unapproved IEEE Standards Draft, subject to change.
  27383.  
  27384.  
  27385.  
  27386.  
  27387.  
  27388.  4.4 cat - Concatenate and print files                                 385
  27389.  
  27390.  
  27391.  
  27392.  
  27393.  
  27394.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  27395.  
  27396.        sed -n '
  27397.        # Write non-empty lines.
  27398.        /./     {
  27399.                p
  27400.                d
  27401.                }
  27402.        # Write a single empty line, then look for more empty lines.
  27403.        /^$/    p
  27404.        # Get next line, discard the held <newline> (empty line),
  27405.        # and look for more empty lines.
  27406.        :Empty
  27407.        /^$/    {
  27408.                N
  27409.                s/.//
  27410.                b Empty
  27411.                }
  27412.        # Write the non-empty line before going back to search
  27413.        # for the first in a set of empty lines.
  27414.                p
  27415.        '
  27416.  
  27417.  Note that the BSD documentation for cat uses the term ``blank line'' to
  27418.  mean the same as the POSIX ``empty line''; a line consisting only of a
  27419.  <newline>.
  27420.  
  27421.  The BSD -n option is omitted because similar functionality can be
  27422.  obtained from the -n option of the pr utility.
  27423.  
  27424.  The -u option is included here for its value in prototyping nonblocking
  27425.  reads from FIFOs.  The intent is to support the following sequence:
  27426.  
  27427.        mkfifo foo
  27428.        cat -u foo > /dev/tty13 &
  27429.        cat -u > foo
  27430.  
  27431.  It is unspecified whether standard output is or is not buffered in the
  27432.  default case.  This is sometimes of interest when standard output is
  27433.  associated with a terminal, since buffering may delay the output.  The
  27434.  presence of the -u option guarantees that unbuffered I/O is available.
  27435.  It is implementation dependent whether the cat utility buffers output if
  27436.  the -u option is not specified.  Traditionally, the -u option is
  27437.  implemented using the BSD _s_e_t_b_u_f_f_e_r() function, the System V _s_e_t_b_u_f()
  27438.  function, or the C Standard {7} _s_e_t_v_b_u_f() function.
  27439.  
  27440.  The following command
  27441.  
  27442.        cat myfile
  27443.  
  27444.  writes the contents of the file myfile to standard output.
  27445.  
  27446.  
  27447.                Copyright c 1991 IEEE.  All rights reserved.
  27448.       This is an unapproved IEEE Standards Draft, subject to change.
  27449.  
  27450.  
  27451.  
  27452.  
  27453.  
  27454.  386                                     4 Execution Environment Utilities
  27455.  
  27456.  
  27457.  
  27458.  
  27459.  
  27460.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  27461.  
  27462.  The following command
  27463.  
  27464.        cat doc1 doc2 > doc.all
  27465.  
  27466.  concatenates the files doc1 and doc2 and writes the result to doc.all.
  27467.  
  27468.  Because of the shell language mechanism used to perform output
  27469.  redirection, a command such as this:
  27470.  
  27471.        cat doc doc.end > doc
  27472.  
  27473.  causes the original data in doc to be lost.
  27474.  
  27475.  Due to changes made to subclause 2.11.4 in Draft 11, the description of
  27476.  the _f_i_l_e operand now states that - must be accepted multiple times, as in
  27477.  historical practice.  This allows the command:
  27478.  
  27479.        cat start - middle - end > file
  27480.  
  27481.  when standard input is a terminal, to get two arbitrary pieces of input
  27482.  from the terminal with a single invocation of cat.  Note, however, that
  27483.  if standard input is a regular file, this would be equivalent to the
  27484.  command:
  27485.  
  27486.        cat start - middle /dev/null end > file
  27487.  
  27488.  because the entire contents of the file would be consumed by cat the
  27489.  first time - was used as a _f_i_l_e operand and an end-of-file condition
  27490.  would be detected immediately when - was referenced the second time.
  27491.  
  27492.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  27493.  
  27494.  None.
  27495.  
  27496.  END_RATIONALE
  27497.  
  27498.  
  27499.  
  27500.  
  27501.  
  27502.  
  27503.  
  27504.  
  27505.  
  27506.  
  27507.  
  27508.  
  27509.  
  27510.  
  27511.  
  27512.  
  27513.                Copyright c 1991 IEEE.  All rights reserved.
  27514.       This is an unapproved IEEE Standards Draft, subject to change.
  27515.  
  27516.  
  27517.  
  27518.  
  27519.  
  27520.  4.4 cat - Concatenate and print files                                 387
  27521.  
  27522.  
  27523.  
  27524.  
  27525.  
  27526.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  27527.  
  27528.  4.5  cd - Change working directory
  27529.  
  27530.  
  27531.  4.5.1  Synopsis
  27532.  
  27533.  
  27534.  cd  [_d_i_r_e_c_t_o_r_y]
  27535.  
  27536.  
  27537.  4.5.2  Description
  27538.  
  27539.  The cd utility shall change the working directory of the current shell
  27540.  execution environment; see 3.12.
  27541.  
  27542.  When invoked with no operands, and the HOME environment variable is set
  27543.  to a nonempty value, the directory named in the HOME environment variable
  27544.  shall become the new working directory.  If HOME is empty or is
  27545.  undefined, the default behavior is implementation defined.
  27546.  
  27547.  
  27548.  4.5.3  Options
  27549.  
  27550.  None.
  27551.  
  27552.  
  27553.  4.5.4  Operands
  27554.  
  27555.  The following operands shall be supported by the implementation:
  27556.  
  27557.     _d_i_r_e_c_t_o_r_y   An absolute or relative pathname of the directory that
  27558.                 becomes the new working directory.  The interpretation of
  27559.                 a relative pathname by cd depends on the CDPATH
  27560.                 environment variable.  If _d_i_r_e_c_t_o_r_y is -, the results are
  27561.                 implementation defined.
  27562.  
  27563.  
  27564.  4.5.5  External Influences
  27565.  
  27566.  4.5.5.1  Standard Input
  27567.  
  27568.  None.
  27569.  
  27570.  
  27571.  4.5.5.2  Input Files
  27572.  
  27573.  None.
  27574.  
  27575.  
  27576.  
  27577.  
  27578.  
  27579.                Copyright c 1991 IEEE.  All rights reserved.
  27580.       This is an unapproved IEEE Standards Draft, subject to change.
  27581.  
  27582.  
  27583.  
  27584.  
  27585.  
  27586.  388                                     4 Execution Environment Utilities
  27587.  
  27588.  
  27589.  
  27590.  
  27591.  
  27592.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  27593.  
  27594.  4.5.5.3  Environment Variables
  27595.  
  27596.  The following environment variables shall affect the execution of cd:
  27597.  
  27598.     CDPATH             A colon-separated list of pathnames that refer to
  27599.                        directories.  If the _d_i_r_e_c_t_o_r_y operand does not
  27600.                        begin with a slash (/) character, and the first
  27601.                        component is not dot or dot-dot, cd shall search
  27602.                        for _d_i_r_e_c_t_o_r_y relative to each directory named in
  27603.                        the CDPATH variable, in the order listed.  The new
  27604.                        working directory shall be set to the first
  27605.                        matching directory found.  An empty string in place
  27606.                        of a directory pathname represents the current
  27607.                        directory.  If CDPATH is not set, it shall be
  27608.                        treated as if it were an empty string.
  27609.  
  27610.     HOME               The name of the home directory, used when no
  27611.                        _d_i_r_e_c_t_o_r_y operand is specified.
  27612.  
  27613.     LANG               This variable shall determine the locale to use for
  27614.                        the locale categories when both LC_ALL and the
  27615.                        corresponding environment variable (beginning with
  27616.                        LC_) do not specify a locale.  See 2.6.
  27617.  
  27618.     LC_ALL             This variable shall determine the locale to be used
  27619.                        to override any values for locale categories
  27620.                        specified by the settings of LANG or any
  27621.                        environment variables beginning with LC_.
  27622.  
  27623.     LC_CTYPE           This variable shall determine the locale for the
  27624.                        interpretation of sequences of bytes of text data
  27625.                        as characters (e.g., single- versus multibyte
  27626.                        characters in arguments).
  27627.  
  27628.     LC_MESSAGES        This variable shall determine the language in which
  27629.                        messages should be written.
  27630.  
  27631.  
  27632.  4.5.5.4  Asynchronous Events
  27633.  
  27634.  Default.
  27635.  
  27636.  
  27637.  4.5.6  External Effects
  27638.  
  27639.  
  27640.  
  27641.  
  27642.  
  27643.  
  27644.  
  27645.                Copyright c 1991 IEEE.  All rights reserved.
  27646.       This is an unapproved IEEE Standards Draft, subject to change.
  27647.  
  27648.  
  27649.  
  27650.  
  27651.  
  27652.  4.5 cd - Change working directory                                     389
  27653.  
  27654.  
  27655.  
  27656.  
  27657.  
  27658.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  27659.  
  27660.  4.5.6.1  Standard Output
  27661.  
  27662.  If a nonempty directory name from CDPATH is used, an absolute pathname of
  27663.  the new working directory shall be written to the standard output as
  27664.  follows:
  27665.  
  27666.        "%s\n", <_n_e_w _d_i_r_e_c_t_o_r_y>
  27667.  
  27668.  Otherwise, there shall be no output.
  27669.  
  27670.  
  27671.  4.5.6.2  Standard Error
  27672.  
  27673.  Used only for diagnostic messages.
  27674.  
  27675.  4.5.6.3  Output Files
  27676.  
  27677.  None.
  27678.  
  27679.  
  27680.  4.5.7  Extended Description
  27681.  
  27682.  None.
  27683.  
  27684.  
  27685.  4.5.8  Exit Status
  27686.  
  27687.  The cd utility shall exit with one of the following values:
  27688.  
  27689.      0    The directory was successfully changed.
  27690.  
  27691.     >0    An error occurred.
  27692.  
  27693.  
  27694.  4.5.9  Consequences of Errors
  27695.  
  27696.  The working directory remains unchanged.
  27697.  
  27698.  BEGIN_RATIONALE
  27699.  
  27700.  
  27701.  4.5.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  27702.  
  27703.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  27704.  
  27705.  _E_d_i_t_o_r'_s _N_o_t_e:  _A _b_a_l_l_o_t_e_r _r_e_q_u_e_s_t_e_d _t_h_a_t _t_h_e _f_o_l_l_o_w_i_n_g _r_a_t_i_o_n_a_l_e _b_e       2
  27706.  _h_i_g_h_l_i_g_h_t_e_d _i_n _t_h_e _D_1_1._2 _r_e_c_i_r_c_u_l_a_t_i_o_n.                                    2
  27707.  
  27708.  
  27709.  
  27710.  
  27711.                Copyright c 1991 IEEE.  All rights reserved.
  27712.       This is an unapproved IEEE Standards Draft, subject to change.
  27713.  
  27714.  
  27715.  
  27716.  
  27717.  
  27718.  390                                     4 Execution Environment Utilities
  27719.  
  27720.  
  27721.  
  27722.  
  27723.  
  27724.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  27725.  
  27726.  Since cd affects the current shell execution environment, it is generally
  27727.  provided as a shell regular built-in.  If it is called in a subshell or    1
  27728.  separate utility execution environment, such as one of the following:      1
  27729.  
  27730.        (cd /tmp)                                                            1
  27731.        nohup cd                                                             1
  27732.        find . -exec cd {} \;                                                1
  27733.  
  27734.  it will not affect the working directory of the caller's environment.      1
  27735.  
  27736.  The use of the CDPATH was introduced in the System V shell.  Its use is
  27737.  analogous to the use of the PATH variable in the shell.  Earlier systems
  27738.  such as the BSD C-shell used a shell parameter cdpath for this purpose.
  27739.  
  27740.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  27741.  
  27742.  A common extension when HOME is undefined is to get the login directory
  27743.  from the user database for the invoking user.  This does not occur on
  27744.  System V implementations.
  27745.  
  27746.  Not included in this description are the features from the KornShell such
  27747.  as setting OLDPWD, toggling current and previous directory (cd -), and
  27748.  the two-operand form of cd (cd _o_l_d _n_e_w). This standard does not specify
  27749.  the results of cd - or of calls with more than one operand.  Since these
  27750.  extensions are mostly used in interactive situations, they may be
  27751.  considered for inclusion in POSIX.2a.  The result of cd - and of using no
  27752.  arguments with HOME unset or null have been made implementation defined
  27753.  at the request of the POSIX.6 security working group.
  27754.  
  27755.  The setting of the PWD variable was removed from earlier drafts, as it
  27756.  can be replaced by $(pwd).
  27757.  
  27758.  END_RATIONALE
  27759.  
  27760.  
  27761.  
  27762.  
  27763.  
  27764.  
  27765.  
  27766.  
  27767.  
  27768.  
  27769.  
  27770.  
  27771.  
  27772.  
  27773.  
  27774.  
  27775.  
  27776.  
  27777.                Copyright c 1991 IEEE.  All rights reserved.
  27778.       This is an unapproved IEEE Standards Draft, subject to change.
  27779.  
  27780.  
  27781.  
  27782.  
  27783.  
  27784.  4.5 cd - Change working directory                                     391
  27785.  
  27786.  
  27787.  
  27788.  
  27789.  
  27790.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  27791.  
  27792.  4.6  chgrp - Change file group ownership
  27793.  
  27794.  
  27795.  4.6.1  Synopsis
  27796.  
  27797.  
  27798.  chgrp  [-R] _g_r_o_u_p _f_i_l_e ...
  27799.  
  27800.  
  27801.  4.6.2  Description
  27802.  
  27803.  The chgrp utility shall set the group ID of the file named by each _f_i_l_e
  27804.  operand to the group ID specified by the _g_r_o_u_p operand.
  27805.  
  27806.  For each _f_i_l_e operand, it shall perform actions equivalent to the
  27807.  POSIX.1 {8} _c_h_o_w_n() function, called with the following arguments:
  27808.  
  27809.      (1)  The _f_i_l_e operand shall be used as the _p_a_t_h argument.
  27810.  
  27811.      (2)  The user ID of the file shall be used as the _o_w_n_e_r argument.
  27812.  
  27813.      (3)  The specified _g_r_o_u_p _I_D shall be used as the _g_r_o_u_p argument.
  27814.  
  27815.  
  27816.  4.6.3  Options
  27817.  
  27818.  The chgrp utility shall conform to the utility argument syntax guidelines
  27819.  described in 2.10.2.
  27820.  
  27821.  The following option shall be supported by the implementation:
  27822.  
  27823.     -R          Recursively change file group IDs.  For each _f_i_l_e operand
  27824.                 that names a directory, chgrp shall change the group of
  27825.                 the directory and all files in the file hierarchy below
  27826.                 it.
  27827.  
  27828.  
  27829.  4.6.4  Operands
  27830.  
  27831.  The following operands shall be supported by the implementation:
  27832.  
  27833.     _g_r_o_u_p       A group name from the group database or a numeric group
  27834.                 ID.  Either specifies a group ID to be given to each file
  27835.                 named by one of the _f_i_l_e operands.  If a numeric _g_r_o_u_p
  27836.                 operand exists in the group database as a group name, the
  27837.                 group ID number associated with that group name is used as
  27838.                 the group ID.
  27839.  
  27840.  
  27841.  
  27842.  
  27843.                Copyright c 1991 IEEE.  All rights reserved.
  27844.       This is an unapproved IEEE Standards Draft, subject to change.
  27845.  
  27846.  
  27847.  
  27848.  
  27849.  
  27850.  392                                     4 Execution Environment Utilities
  27851.  
  27852.  
  27853.  
  27854.  
  27855.  
  27856.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  27857.  
  27858.     _f_i_l_e        A pathname of a file whose group ID is to be modified.
  27859.  
  27860.  
  27861.  4.6.5  External Influences
  27862.  
  27863.  
  27864.  4.6.5.1  Standard Input
  27865.  
  27866.  None.
  27867.  
  27868.  4.6.5.2  Input Files
  27869.  
  27870.  None.
  27871.  
  27872.  
  27873.  4.6.5.3  Environment Variables
  27874.  
  27875.  The following environment variables shall affect the execution of chgrp:
  27876.  
  27877.     LANG               This variable shall determine the locale to use for
  27878.                        the locale categories when both LC_ALL and the
  27879.                        corresponding environment variable (beginning with
  27880.                        LC_) do not specify a locale.  See 2.6.
  27881.  
  27882.     LC_ALL             This variable shall determine the locale to be used
  27883.                        to override any values for locale categories
  27884.                        specified by the settings of LANG or any
  27885.                        environment variables beginning with LC_.
  27886.  
  27887.     LC_CTYPE           This variable shall determine the locale for the
  27888.                        interpretation of sequences of bytes of text data
  27889.                        as characters (e.g., single- versus multibyte
  27890.                        characters in arguments).
  27891.  
  27892.     LC_MESSAGES        This variable shall determine the language in which
  27893.                        messages should be written.
  27894.  
  27895.  4.6.5.4  Asynchronous Events
  27896.  
  27897.  Default.
  27898.  
  27899.  
  27900.  4.6.6  External Effects
  27901.  
  27902.  
  27903.  
  27904.  
  27905.  
  27906.  
  27907.  
  27908.  
  27909.                Copyright c 1991 IEEE.  All rights reserved.
  27910.       This is an unapproved IEEE Standards Draft, subject to change.
  27911.  
  27912.  
  27913.  
  27914.  
  27915.  
  27916.  4.6 chgrp - Change file group ownership                               393
  27917.  
  27918.  
  27919.  
  27920.  
  27921.  
  27922.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  27923.  
  27924.  4.6.6.1  Standard Output
  27925.  
  27926.  None.
  27927.  
  27928.  
  27929.  4.6.6.2  Standard Error
  27930.  
  27931.  Used only for diagnostic messages.
  27932.  
  27933.  4.6.6.3  Output Files
  27934.  
  27935.  None.
  27936.  
  27937.  
  27938.  4.6.7  Extended Description
  27939.  
  27940.  None.
  27941.  
  27942.  
  27943.  4.6.8  Exit Status
  27944.  
  27945.  The chgrp utility shall exit with one of the following values:
  27946.  
  27947.      0    The utility executed successfully and all requested changes were
  27948.           made.
  27949.  
  27950.     >0    An error occurred.
  27951.  
  27952.  
  27953.  4.6.9  Consequences of Errors
  27954.  
  27955.  If, when invoked with the -R option, chgrp attempts but fails to change
  27956.  the group ID of a particular file in a specified file hierarchy, it shall
  27957.  continue to process the remaining files in the hierarchy.  If chgrp
  27958.  cannot read or search a directory within a hierarchy, it shall continue
  27959.  to process the other parts of the hierarchy that are accessible.
  27960.  
  27961.  BEGIN_RATIONALE
  27962.  
  27963.  
  27964.  4.6.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  27965.  
  27966.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  27967.  
  27968.  The System V and BSD versions use different exit status codes.  Some
  27969.  implementations used the exit status as a count of the number of errors
  27970.  that occurred; this practice is unworkable since it can overflow the
  27971.  range of valid exit status value.  The working group chose to mask these
  27972.  by specifying only 0 and >0 as exit values.
  27973.  
  27974.  
  27975.                Copyright c 1991 IEEE.  All rights reserved.
  27976.       This is an unapproved IEEE Standards Draft, subject to change.
  27977.  
  27978.  
  27979.  
  27980.  
  27981.  
  27982.  394                                     4 Execution Environment Utilities
  27983.  
  27984.  
  27985.  
  27986.  
  27987.  
  27988.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  27989.  
  27990.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  27991.  
  27992.  The functionality of chgrp is described substantially through references
  27993.  to functions in POSIX.1 {8}.  In this way, there is no duplication of
  27994.  effort required for describing the interactions of permissions, multiple
  27995.  groups, etc.
  27996.  
  27997.  END_RATIONALE
  27998.  
  27999.  
  28000.  
  28001.  4.7  chmod - Change file modes
  28002.  
  28003.  
  28004.  4.7.1  Synopsis
  28005.  
  28006.  chmod  [-R] _m_o_d_e _f_i_l_e ...
  28007.  
  28008.  
  28009.  4.7.2  Description
  28010.  
  28011.  The chmod utility shall change any or all of the file mode bits of the
  28012.  file named by each _f_i_l_e operand in the way specified by the _m_o_d_e operand.
  28013.  
  28014.  It is implementation defined whether and how the chmod utility affects
  28015.  any alternate or additional file access control mechanism (see _f_i_l_e
  28016.  _a_c_c_e_s_s _p_e_r_m_i_s_s_i_o_n_s in 2.2.2.55) being used for the specified file.
  28017.  
  28018.  Only a process whose effective user ID matches the user ID of the file,
  28019.  or a process with the appropriate privileges, shall be permitted to
  28020.  change the file mode bits of a file.
  28021.  
  28022.  
  28023.  4.7.3  Options
  28024.  
  28025.  The chmod utility shall conform to the utility argument syntax guidelines
  28026.  described in 2.10.2.
  28027.  
  28028.  The following option shall be supported by the implementation:
  28029.  
  28030.     -R          Recursively change file mode bits.  For each _f_i_l_e operand
  28031.                 that names a directory, chmod shall change the file mode
  28032.                 bits of the directory and all files in the file hierarchy
  28033.                 below it.
  28034.  
  28035.  
  28036.  
  28037.  
  28038.  
  28039.  
  28040.  
  28041.                Copyright c 1991 IEEE.  All rights reserved.
  28042.       This is an unapproved IEEE Standards Draft, subject to change.
  28043.  
  28044.  
  28045.  
  28046.  
  28047.  
  28048.  4.7 chmod - Change file modes                                         395
  28049.  
  28050.  
  28051.  
  28052.  
  28053.  
  28054.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  28055.  
  28056.  4.7.4  Operands
  28057.  
  28058.  The following operands shall be supported by the implementation:
  28059.  
  28060.     _m_o_d_e        Represents the change to be made to the file mode bits of
  28061.                 each file named by one of the _f_i_l_e operands, as described
  28062.                 in 4.7.7.
  28063.  
  28064.     _f_i_l_e        A pathname of a file whose file mode bits are to be
  28065.                 modified.
  28066.  
  28067.  
  28068.  4.7.5  External Influences
  28069.  
  28070.  
  28071.  4.7.5.1  Standard Input
  28072.  
  28073.  None.
  28074.  
  28075.  4.7.5.2  Input Files
  28076.  
  28077.  None.
  28078.  
  28079.  
  28080.  4.7.5.3  Environment Variables
  28081.  
  28082.  The following environment variables shall affect the execution of chmod:
  28083.  
  28084.     LANG               This variable shall determine the locale to use for
  28085.                        the locale categories when both LC_ALL and the
  28086.                        corresponding environment variable (beginning with
  28087.                        LC_) do not specify a locale.  See 2.6.
  28088.  
  28089.     LC_ALL             This variable shall determine the locale to be used
  28090.                        to override any values for locale categories
  28091.                        specified by the settings of LANG or any
  28092.                        environment variables beginning with LC_.
  28093.  
  28094.     LC_CTYPE           This variable shall determine the locale for the
  28095.                        interpretation of sequences of bytes of text data
  28096.                        as characters (e.g., single- versus multibyte
  28097.                        characters in arguments).
  28098.  
  28099.     LC_MESSAGES        This variable shall determine the language in which
  28100.                        messages should be written.
  28101.  
  28102.  
  28103.  
  28104.  
  28105.  
  28106.  
  28107.                Copyright c 1991 IEEE.  All rights reserved.
  28108.       This is an unapproved IEEE Standards Draft, subject to change.
  28109.  
  28110.  
  28111.  
  28112.  
  28113.  
  28114.  396                                     4 Execution Environment Utilities
  28115.  
  28116.  
  28117.  
  28118.  
  28119.  
  28120.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  28121.  
  28122.  4.7.5.4  Asynchronous Events
  28123.  
  28124.  Default.
  28125.  
  28126.  
  28127.  4.7.6  External Effects
  28128.  
  28129.  
  28130.  4.7.6.1  Standard Output
  28131.  
  28132.  None.
  28133.  
  28134.  4.7.6.2  Standard Error
  28135.  
  28136.  Used only for diagnostic messages.
  28137.  
  28138.  
  28139.  4.7.6.3  Output Files
  28140.  
  28141.  None.
  28142.  
  28143.  
  28144.  4.7.7  Extended Description
  28145.  
  28146.  The _m_o_d_e operand shall be either a symbolic_mode expression or a
  28147.  nonnegative octal integer.  The symbolic_mode form is described by the
  28148.  grammar in 4.7.7.1.
  28149.  
  28150.  Each clause shall specify an operation to be performed on the current
  28151.  file mode bits of each _f_i_l_e. The operations shall be performed on each
  28152.  _f_i_l_e in the order in which the clauses are specified.
  28153.  
  28154.  The _w_h_o symbols u, g, and o shall specify the _u_s_e_r, _g_r_o_u_p, and _o_t_h_e_r
  28155.  parts of the file mode bits, respectively.  A _w_h_o consisting of the
  28156.  symbol a shall be equivalent to ugo.
  28157.  
  28158.  The _p_e_r_m symbols r, w, and x represent the _r_e_a_d, _w_r_i_t_e, and
  28159.  _e_x_e_c_u_t_e/_s_e_a_r_c_h portions of file mode bits, respectively.  The _p_e_r_m symbol
  28160.  s shall represent the _s_e_t-_u_s_e_r-_I_D-_o_n-_e_x_e_c_u_t_i_o_n (when who contains or
  28161.  implies u) and _s_e_t-_g_r_o_u_p-_I_D-_o_n-_e_x_e_c_u_t_i_o_n (when who contains or implies g)
  28162.  bits.
  28163.  
  28164.  The perm symbol X shall represent the execute/search portion of the file
  28165.  mode bits if the file is a directory or if the current (unmodified) file
  28166.  mode bits have at least one of the execute bits (S_IXUSR, S_IXGRP, or
  28167.  S_IXOTH) set.  It shall be ignored if the file is not a directory and
  28168.  none of the execute bits are set in the current file mode bits.
  28169.  
  28170.  
  28171.  
  28172.  
  28173.                Copyright c 1991 IEEE.  All rights reserved.
  28174.       This is an unapproved IEEE Standards Draft, subject to change.
  28175.  
  28176.  
  28177.  
  28178.  
  28179.  
  28180.  4.7 chmod - Change file modes                                         397
  28181.  
  28182.  
  28183.  
  28184.  
  28185.  
  28186.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  28187.  
  28188.  The permcopy symbols u, g, and o shall represent the current permissions
  28189.  associated with the user, group, and other parts of the file mode bits,
  28190.  respectively.  For the remainder of subclause 4.7.7 up to subclause
  28191.  4.7.7.1, perm refers to the nonterminals perm and permcopy in the grammar
  28192.  in 4.7.7.1.
  28193.  
  28194.  If multiple actionlist_s are grouped with a single wholist in the grammar,
  28195.  each actionlist shall be applied in the order specified with that
  28196.  wholist.  The op symbols shall represent the operation performed, as
  28197.  follows:
  28198.  
  28199.     +     If perm is not specified, the + operation shall not change the
  28200.           file mode bits.
  28201.  
  28202.           If who is not specified, the file mode bits represented by perm
  28203.           for the owner, group, and other permissions, except for those
  28204.           with corresponding bits in the file mode creation mask of the
  28205.           invoking process, shall be set.
  28206.  
  28207.           Otherwise, the file mode bits represented by the specified who
  28208.           and perm values shall be set.
  28209.  
  28210.     -     If perm is not specified, the - operation shall not change the
  28211.           file mode bits.
  28212.  
  28213.           If who is not specified, the file mode bits represented by perm
  28214.           for the owner, group, and other permissions, except for those
  28215.           with corresponding bits in the file mode creation mask of the
  28216.           invoking process, shall be cleared.
  28217.  
  28218.           Otherwise, the file mode bits represented by the specified who
  28219.           and perm values shall be cleared.
  28220.  
  28221.     =     Clear the file mode bits specified by the who value, or, if no
  28222.           who value is specified, all of the file mode bits specified in
  28223.           this standard.
  28224.  
  28225.           If perm is not specified, the = operation shall make no further
  28226.           modifications to the file mode bits.
  28227.  
  28228.           If who is not specified, the file mode bits represented by perm
  28229.           for the owner, group, and other permissions, except for those
  28230.           with corresponding bits in the file mode creation mask of the
  28231.           invoking process, shall be set.
  28232.  
  28233.           Otherwise, the file mode bits represented by the specified who
  28234.           and perm values shall be set.
  28235.  
  28236.  
  28237.  
  28238.  
  28239.                Copyright c 1991 IEEE.  All rights reserved.
  28240.       This is an unapproved IEEE Standards Draft, subject to change.
  28241.  
  28242.  
  28243.  
  28244.  
  28245.  
  28246.  398                                     4 Execution Environment Utilities
  28247.  
  28248.  
  28249.  
  28250.  
  28251.  
  28252.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  28253.  
  28254.  When using the symbolic mode form on a regular file, it is implementation
  28255.  defined whether or not:
  28256.  
  28257.      (1)  Requests to set the set-user-ID-on-execution or set-group-ID-
  28258.           on-execution bit when all execute bits are currently clear and
  28259.           none are being set are ignored,
  28260.  
  28261.      (2)  Requests to clear all execute bits also clear the set-user-ID-
  28262.           on-execution and set-group-ID-on-execution bits, or
  28263.  
  28264.      (3)  Requests to clear the set-user-ID-on-execution or set-group-ID-
  28265.           on-execution bits when all execute bits are currently clear are
  28266.           ignored.  However, if the command ls -l file (see 4.39.6.1)
  28267.           writes an s in the positions indicating that the set-user-ID-
  28268.           on-execution or set-group-ID-on-execution, the commands chmod
  28269.           u-s file or chmod g-s file, respectively, shall not be ignored.
  28270.  
  28271.  When using the symbolic mode form on other file types, it is               2
  28272.  implementation defined whether or not requests to set or clear the set-    2
  28273.  user-ID-on-execution or set-group-ID-on-execution bits are honored.        2
  28274.  
  28275.  If the who symbol o is used in conjunction with the perm symbol s with no
  28276.  other who symbols being specified, the set-user-ID-on-execution and set-
  28277.  group-ID-on-execution bits shall not be modified.  It shall not be an
  28278.  error to specify the who symbol o in conjunction with the perm symbol s.
  28279.  
  28280.  For an octal integer _m_o_d_e operand, the file mode bits shall be set
  28281.  absolutely.  The octal number form of the _m_o_d_e operand is obsolescent.
  28282.  
  28283.  For each bit set in the octal number, the corresponding file permission    2
  28284.  bit shown in the following table shall be set; all other file permission   2
  28285.  bits shall be cleared.  For regular files, for each bit set in the octal   2
  28286.  number corresponding to the set-user-ID-on-execution or the set-group-     2
  28287.  ID-on-execution bits shown in the following table shall be set; if these   2
  28288.  bits are not set in the octal number, they shall be cleared.  For other    2
  28289.  file types, it is implementation defined whether or not requests to set    2
  28290.  or clear the set-user-ID-on-execution or set-group-ID-on-execution bits    2
  28291.  are honored.                                                               2
  28292.  
  28293.   _______________________________________________________________________
  28294.   _|O_c_t_a_l___M_o_d_e__b_i_t___|_O_c_t_a_l___M_o_d_e__b_i_t___|_O_c_t_a_l___M_o_d_e__b_i_t___|_O_c_t_a_l___M_o_d_e__b_i_t__|
  28295.   |4000   S_ISUID  | 0400   S_IRUSR  | 0040   S_IRGRP  | 0004   S_IROTH  |
  28296.   _|_________________|__________________|__________________|_________________|
  28297.   _|2_0_0_0____S___I_S_G_I_D____|_0_2_0_0____S___I_W_U_S_R____|_0_0_2_0____S___I_W_G_R_P____|_0_0_0_2____S___I_W_O_T_H___|
  28298.   |                | 0100   S_IXUSR  | 0010   S_IXGRP  | 0001   S_IXOTH  |
  28299.   _|_________________|__________________|__________________|_________________|
  28300.  
  28301.  When bits are set in the octal number other than those listed in the
  28302.  table above, the behavior is unspecified.
  28303.  
  28304.  
  28305.                Copyright c 1991 IEEE.  All rights reserved.
  28306.       This is an unapproved IEEE Standards Draft, subject to change.
  28307.  
  28308.  
  28309.  
  28310.  
  28311.  
  28312.  4.7 chmod - Change file modes                                         399
  28313.  
  28314.  
  28315.  
  28316.  
  28317.  
  28318.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  28319.  
  28320.  4.7.7.1  chmod Grammar
  28321.  
  28322.  The grammar and lexical conventions in this subclause describe the syntax
  28323.  for the symbolic_mode operand.  The general conventions for this style of
  28324.  grammar are described in 2.1.2.  A valid symbolic_mode can be represented
  28325.  as the nonterminal symbol symbolic_mode in the grammar.  Any
  28326.  discrepancies found between this grammar and descriptions in the rest of
  28327.  this clause shall be resolved in favor of this grammar.
  28328.  
  28329.  The lexical processing shall be based entirely on single characters.
  28330.  Implementations need not allow <blank>s within the single argument being
  28331.  processed.
  28332.  
  28333.        %start          symbolic_mode
  28334.        %%
  28335.  
  28336.        symbolic_mode : clause
  28337.                      | symbolic_mode ',' clause
  28338.                      ;
  28339.  
  28340.        clause        : actionlist
  28341.                      | wholist actionlist
  28342.                      ;
  28343.  
  28344.        wholist       : who
  28345.                      | wholist who
  28346.                      ;
  28347.  
  28348.        who           : 'u'
  28349.                      | 'g'
  28350.                      | 'o'
  28351.                      | 'a'
  28352.                      ;
  28353.  
  28354.        actionlist    : action
  28355.                      | actionlist action
  28356.                      ;
  28357.  
  28358.        action        : op
  28359.                      | op permlist
  28360.                      | op permcopy
  28361.                      ;
  28362.  
  28363.        permcopy      : 'u'
  28364.                      | 'g'
  28365.                      | 'o'
  28366.                      ;
  28367.  
  28368.  
  28369.  
  28370.  
  28371.                Copyright c 1991 IEEE.  All rights reserved.
  28372.       This is an unapproved IEEE Standards Draft, subject to change.
  28373.  
  28374.  
  28375.  
  28376.  
  28377.  
  28378.  400                                     4 Execution Environment Utilities
  28379.  
  28380.  
  28381.  
  28382.  
  28383.  
  28384.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  28385.  
  28386.        op            : '+'
  28387.                      | '-'
  28388.                      | '='
  28389.                      ;
  28390.  
  28391.        permlist      : perm
  28392.                      | perm permlist
  28393.                      ;
  28394.  
  28395.        perm          : 'r'
  28396.                      | 'w'
  28397.                      | 'x'
  28398.                      | 'X'
  28399.                      | 's'
  28400.                      ;
  28401.  
  28402.  
  28403.  4.7.8  Exit Status
  28404.  
  28405.  The chmod utility shall exit with one of the following values:
  28406.  
  28407.      0    The utility executed successfully and all requested changes were
  28408.           made.
  28409.  
  28410.     >0    An error occurred.
  28411.  
  28412.  
  28413.  4.7.9  Consequences of Errors
  28414.  
  28415.  If, when invoked with the -R option, chmod attempts but fails to change
  28416.  the mode of a particular file in a specified file hierarchy, it shall
  28417.  continue to process the remaining files in the hierarchy, affecting the
  28418.  final exit status.  If chmod cannot read or search a directory within a
  28419.  hierarchy, it shall continue to process the other parts of the hierarchy
  28420.  that are accessible.
  28421.  
  28422.  BEGIN_RATIONALE
  28423.  
  28424.  
  28425.  4.7.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  28426.  
  28427.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  28428.  
  28429.  The functionality of chmod is described substantially through references
  28430.  to concepts defined in POSIX.1 {8}.  In this way, there is less
  28431.  duplication of effort required for describing the interactions of
  28432.  permissions, etc.  However, the behavior of this utility is not described
  28433.  in terms of the _c_h_m_o_d() function from POSIX.1 {8}, because that
  28434.  specification requires certain side effects upon alternate file access
  28435.  
  28436.  
  28437.                Copyright c 1991 IEEE.  All rights reserved.
  28438.       This is an unapproved IEEE Standards Draft, subject to change.
  28439.  
  28440.  
  28441.  
  28442.  
  28443.  
  28444.  4.7 chmod - Change file modes                                         401
  28445.  
  28446.  
  28447.  
  28448.  
  28449.  
  28450.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  28451.  
  28452.  control mechanisms that might not be appropriate, depending on the
  28453.  implementation.
  28454.  
  28455.  Some historical implementations of the chmod utility change the mode of a
  28456.  directory before the files in the directory when performing a recursive
  28457.  (-R option) change; others change the directory mode after the files in
  28458.  the directory.  If an application tries to remove read or search
  28459.  permission for a file hierarchy, the removal attempt will fail if the
  28460.  directory is changed first; on the other hand, trying to re-enable
  28461.  permissions to a restricted hierarchy will fail if directories are
  28462.  changed last.  Since neither method is clearly better and users do not
  28463.  frequently try to make a hierarchy inaccessible to themselves, the
  28464.  standard does not specify what happens in this case.
  28465.  
  28466.  Note that although the association shown in the table between bits in the
  28467.  octal number and the indicated file mode bits must be supported, this
  28468.  does not require that a conforming implementation has to actually use
  28469.  those octal values to implement the macros shown.
  28470.  
  28471.  Historical System V implementations of chmod never use the process's
  28472.  _u_m_a_s_k when changing modes.  Version 7 and historical BSD systems do use
  28473.  the mask when who is not specified, as described in this standard.
  28474.  Applications should note the difference between:
  28475.  
  28476.        chmod a-w file
  28477.  
  28478.  which removes all write permissions, and:
  28479.  
  28480.        chmod -- -w file
  28481.  
  28482.  which removes write permissions that would be allowed if file was created
  28483.  with the same _u_m_a_s_k.  Note that _m_o_d_e operands -r, -w, -s, -x, or -X, or
  28484.  anything beginning with a hyphen, must be preceded by -- to keep it from
  28485.  being interpreted as an option.
  28486.  
  28487.  It is difficult to express the grammar used by chmod in English, but the
  28488.  following examples have been accepted by historical System V and BSD
  28489.  systems and are, therefore, required to behave this way by POSIX.2 even
  28490.  though some of them could be expressed more succinctly:
  28491.  
  28492.  
  28493.  
  28494.  
  28495.  
  28496.  
  28497.  
  28498.  
  28499.  
  28500.  
  28501.  
  28502.  
  28503.                Copyright c 1991 IEEE.  All rights reserved.
  28504.       This is an unapproved IEEE Standards Draft, subject to change.
  28505.  
  28506.  
  28507.  
  28508.  
  28509.  
  28510.  402                                     4 Execution Environment Utilities
  28511.  
  28512.  
  28513.  
  28514.  
  28515.  
  28516.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  28517.  
  28518.              Mode                     Results
  28519.              _____   __________________________________________
  28520.              a+=     Equivalent to a+,a=; clears all file mode
  28521.                      bits.
  28522.              go+-w   Equivalent to go+,go-w; clears group and
  28523.                      other write bits.
  28524.              g=o-w   Equivalent to g=o,g-w; sets group bit to
  28525.                      match other bits and then clears group
  28526.                      write bit.
  28527.              g-r+w   Equivalent to g-r,g+w; clears group read
  28528.                      bit and sets group write bit.
  28529.              =g      Sets owner bits to match group bits and
  28530.                      sets other bits to match group bits.
  28531.  
  28532.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  28533.  
  28534.  Implementations that support mandatory file and record locking as
  28535.  specified by the /_u_s_r/_g_r_o_u_p _S_t_a_n_d_a_r_d {B29} historically used the
  28536.  combination of set-group-ID bit set and group execute bit clear to
  28537.  indicate mandatory locking.  This condition is usually set or cleared
  28538.  with the symbolic mode perm symbol l instead of the perm symbols s and x
  28539.  so that mandatory locking mode is not changed without explicit indication
  28540.  that that was what the user intended.  Therefore, the details on how the
  28541.  implementation treats these conditions must be defined in the
  28542.  documentation.  This standard does not require mandatory locking (nor
  28543.  does POSIX.1 {8}), but does allow it as an extension.  However, POSIX.2
  28544.  does require that the ls and chmod utilities work consistently in this
  28545.  area.  If ls -l file says the set-group-ID bit is set, chmod g-s file
  28546.  must clear it (assuming appropriate privileges exist to change modes).
  28547.  
  28548.  The System V and BSD versions use different exit status codes.  Some
  28549.  implementations used the exit status as a count of the number of errors
  28550.  that occurred; this practice is unworkable since it can overflow the
  28551.  range of valid exit status values.  This problem is avoided here by
  28552.  specifying only 0 and >0 as exit values.
  28553.  
  28554.  A ``sticky'' file mode bit, indicating that the text portion of an
  28555.  executable object program file should be saved after the program is gone,
  28556.  has meaning in some implementations, but was omitted here because its
  28557.  purpose is implementation dependent and because it was omitted from
  28558.  POSIX.1 {8}.  On 4.3BSD-based implementations, the sticky bit is used in
  28559.  conjunction with directory permissions to keep anyone from deleting a
  28560.  file that they do not own from the directory.  The perm symbol t is used
  28561.  to represent the sticky bit in many existing implementations and should
  28562.  not be used for other conflicting extensions.
  28563.  
  28564.  POSIX.1 {8} indicates that implementation-defined restrictions may cause
  28565.  the S_ISUID and S_ISGID bits to be ignored.  POSIX.2 allows the chmod
  28566.  utility to choose to modify these bits before calling POSIX.1 {8} _c_h_m_o_d()
  28567.  (or some function providing equivalent capabilities) for nonregular
  28568.  
  28569.                Copyright c 1991 IEEE.  All rights reserved.
  28570.       This is an unapproved IEEE Standards Draft, subject to change.
  28571.  
  28572.  
  28573.  
  28574.  
  28575.  
  28576.  4.7 chmod - Change file modes                                         403
  28577.  
  28578.  
  28579.  
  28580.  
  28581.  
  28582.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  28583.  
  28584.  files.  Among other things, this allows implementations that use the
  28585.  set-user-ID and set-group-ID bits on directories to enable extended
  28586.  features to handle these extensions in an intelligent manner.  Portable
  28587.  applications should never assume that they know how these bits will be
  28588.  interpreted, except on regular files.
  28589.  
  28590.  The grammar in Draft 9 did not allow several symbolic mode operands that
  28591.  are correctly processed by historical implementations.  (It only allowed
  28592.  two clauses and one op per clause.)  The grammar presented in Draft 10
  28593.  matches historical implementations.
  28594.  
  28595.  The X perm symbol was added, as provided in BSD-based systems, because it
  28596.  provides commonly desired functionality when doing recursive (-R option)
  28597.  modifications.  Similar functionality is not provided by the find
  28598.  utility.  Historical BSD versions of chmod, however, only supported X
  28599.  with op +; it has been extended here because it is also useful with op =.
  28600.  (It has also been added for op - even though it duplicates x, in this
  28601.  case, because it is intuitive and easier to explain.)
  28602.  
  28603.  The grammar was extended with the permcopy nonterminal to allow
  28604.  existing-practice forms of symbolic modes like o=u-g (i.e., set the
  28605.  ``other'' permissions to the permissions of ``owner'' minus the
  28606.  permissions of ``group''.)
  28607.  
  28608.  END_RATIONALE
  28609.  
  28610.  
  28611.  
  28612.  
  28613.  
  28614.  
  28615.  
  28616.  
  28617.  
  28618.  
  28619.  
  28620.  
  28621.  
  28622.  
  28623.  
  28624.  
  28625.  
  28626.  
  28627.  
  28628.  
  28629.  
  28630.  
  28631.  
  28632.  
  28633.  
  28634.  
  28635.                Copyright c 1991 IEEE.  All rights reserved.
  28636.       This is an unapproved IEEE Standards Draft, subject to change.
  28637.  
  28638.  
  28639.  
  28640.  
  28641.  
  28642.  404                                     4 Execution Environment Utilities
  28643.  
  28644.  
  28645.  
  28646.  
  28647.  
  28648.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  28649.  
  28650.  4.8  chown - Change file ownership
  28651.  
  28652.  
  28653.  4.8.1  Synopsis
  28654.  
  28655.  
  28656.  chown  [-R]   _o_w_n_e_r[:_g_r_o_u_p] _f_i_l_e ...
  28657.  
  28658.  
  28659.  4.8.2  Description
  28660.  
  28661.  The chown utility shall set the user ID of the file named by each _f_i_l_e
  28662.  operand to the user ID specified by the _o_w_n_e_r operand.
  28663.  
  28664.  For each _f_i_l_e operand, it shall perform actions equivalent to the
  28665.  POSIX.1 {8} _c_h_o_w_n() function, called with the following arguments:
  28666.  
  28667.      (1)  The _f_i_l_e operand shall be used as the _p_a_t_h argument.
  28668.  
  28669.      (2)  The user ID indicated by the _o_w_n_e_r portion of the first operand
  28670.           shall be used as the _o_w_n_e_r argument.
  28671.  
  28672.      (3)  If the _g_r_o_u_p portion of the first operand is given, the group ID
  28673.           indicated by it shall be used as the _g_r_o_u_p argument; otherwise,
  28674.           the group ID of the file shall be used as the _g_r_o_u_p argument.
  28675.  
  28676.  
  28677.  4.8.3  Options
  28678.  
  28679.  The chown utility shall conform to the utility argument syntax guidelines
  28680.  described in 2.10.2.
  28681.  
  28682.  The following option shall be supported by the implementation:
  28683.  
  28684.     -R          Recursively change file user IDs, and if the _g_r_o_u_p operand
  28685.                 is specified, group IDs.  For each _f_i_l_e operand that names
  28686.                 a directory, chown changes the user and group ID of the
  28687.                 directory and all files in the file hierarchy below it.
  28688.  
  28689.  
  28690.  4.8.4  Operands
  28691.  
  28692.  The following operands shall be supported by the implementation:
  28693.  
  28694.     _o_w_n_e_r[:_g_r_o_u_p]
  28695.                 A user ID and optional group ID to be assigned to file.
  28696.                 The _o_w_n_e_r portion of this operand shall be a user name
  28697.                 from the user database or a numeric user ID.  Either
  28698.                 specifies a user ID to be given to each file named by one
  28699.                 of the _f_i_l_e operands.  If a numeric _o_w_n_e_r operand exists
  28700.  
  28701.                Copyright c 1991 IEEE.  All rights reserved.
  28702.       This is an unapproved IEEE Standards Draft, subject to change.
  28703.  
  28704.  
  28705.  
  28706.  
  28707.  
  28708.  4.8 chown - Change file ownership                                     405
  28709.  
  28710.  
  28711.  
  28712.  
  28713.  
  28714.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  28715.  
  28716.                 in the user database as a user name, the user ID number
  28717.                 associated with that user name is used as the user ID.
  28718.                 Similarly, if the _g_r_o_u_p portion of this operand is
  28719.                 present, it shall be a group name from the group database
  28720.                 or a numeric group ID.  Either specifies a group ID to be
  28721.                 given to each file.  If a numeric group operand exists in
  28722.                 the group database as a group name, the group ID number
  28723.                 associated with that group name shall be used as the group
  28724.                 ID.
  28725.  
  28726.     _f_i_l_e        A pathname of a file whose user ID is to be modified.
  28727.  
  28728.  
  28729.  4.8.5  External Influences
  28730.  
  28731.  
  28732.  4.8.5.1  Standard Input
  28733.  
  28734.  None.
  28735.  
  28736.  4.8.5.2  Input Files
  28737.  
  28738.  None.
  28739.  
  28740.  
  28741.  4.8.5.3  Environment Variables
  28742.  
  28743.  The following environment variables shall affect the execution of chown:
  28744.  
  28745.     LANG               This variable shall determine the locale to use for
  28746.                        the locale categories when both LC_ALL and the
  28747.                        corresponding environment variable (beginning with
  28748.                        LC_) do not specify a locale.  See 2.6.
  28749.  
  28750.     LC_ALL             This variable shall determine the locale to be used
  28751.                        to override any values for locale categories
  28752.                        specified by the settings of LANG or any
  28753.                        environment variables beginning with LC_.
  28754.  
  28755.     LC_CTYPE           This variable shall determine the locale for the
  28756.                        interpretation of sequences of bytes of text data
  28757.                        as characters (e.g., single- versus multibyte
  28758.                        characters in arguments).
  28759.  
  28760.     LC_MESSAGES        This variable shall determine the language in which
  28761.                        messages should be written.
  28762.  
  28763.  
  28764.  
  28765.  
  28766.  
  28767.                Copyright c 1991 IEEE.  All rights reserved.
  28768.       This is an unapproved IEEE Standards Draft, subject to change.
  28769.  
  28770.  
  28771.  
  28772.  
  28773.  
  28774.  406                                     4 Execution Environment Utilities
  28775.  
  28776.  
  28777.  
  28778.  
  28779.  
  28780.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  28781.  
  28782.  4.8.5.4  Asynchronous Events
  28783.  
  28784.  Default.
  28785.  
  28786.  
  28787.  4.8.6  External Effects
  28788.  
  28789.  
  28790.  4.8.6.1  Standard Output
  28791.  
  28792.  None.
  28793.  
  28794.  4.8.6.2  Standard Error
  28795.  
  28796.  Used only for diagnostic messages.
  28797.  
  28798.  
  28799.  4.8.6.3  Output Files
  28800.  
  28801.  None.
  28802.  
  28803.  
  28804.  4.8.7  Extended Description
  28805.  
  28806.  None.
  28807.  
  28808.  
  28809.  4.8.8  Exit Status
  28810.  
  28811.  The chown utility shall exit with one of the following values:
  28812.  
  28813.      0    The utility executed successfully and all requested changes were
  28814.           made.
  28815.  
  28816.     >0    An error occurred.
  28817.  
  28818.  
  28819.  4.8.9  Consequences of Errors
  28820.  
  28821.  If, when invoked with the -R option, chown attempts but fails to change
  28822.  the user ID and/or, if the _g_r_o_u_p operand is specified, group ID, of a
  28823.  particular file in a specified file hierarchy, it shall continue to
  28824.  process the remaining files in the hierarchy.
  28825.  
  28826.  If chown cannot read or search a directory within a hierarchy, it shall
  28827.  continue to process the other parts of the hierarchy that are accessible.
  28828.  
  28829.  BEGIN_RATIONALE
  28830.  
  28831.  
  28832.  
  28833.                Copyright c 1991 IEEE.  All rights reserved.
  28834.       This is an unapproved IEEE Standards Draft, subject to change.
  28835.  
  28836.  
  28837.  
  28838.  
  28839.  
  28840.  4.8 chown - Change file ownership                                     407
  28841.  
  28842.  
  28843.  
  28844.  
  28845.  
  28846.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  28847.  
  28848.  4.8.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  28849.  
  28850.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  28851.  
  28852.  The System V and BSD versions use different exit status codes.  Some
  28853.  implementations used the exit status as a count of the number of errors
  28854.  that occurred; this practice is unworkable since it can overflow the
  28855.  range of valid exit status values.  These are masked by specifying only 0
  28856.  and >0 as exit values.
  28857.  
  28858.  The functionality of chown is described substantially through references
  28859.  to functions in POSIX.1 {8}.  In this way, there is no duplication of
  28860.  effort required for describing the interactions of permissions, multiple
  28861.  groups, etc.
  28862.  
  28863.  For implementations on which symbolic links are supported, actual use of
  28864.  the _c_h_o_w_n() function to implement this utility might not be the
  28865.  appropriate, depending on the implementation.
  28866.  
  28867.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  28868.  
  28869.  The 4.3BSD method of specifying both owner and group was included in this
  28870.  standard because:
  28871.  
  28872.      (1)  There are cases where the desired end condition could not be
  28873.           achieved using the chgrp and chown (that only changed the user
  28874.           ID) utilities.  [If the current owner is not a member of the
  28875.           desired group and the desired owner is not a member of the
  28876.           current group, the _c_h_o_w_n() function could fail unless both owner
  28877.           and group are changed at the same time.]
  28878.  
  28879.      (2)  Even if they could be changed independently, in cases where both
  28880.           are being changed, there is a 100 percent performance penalty
  28881.           caused by being forced to invoke both utilities.
  28882.  
  28883.  The BSD syntax _u_s_e_r[._g_r_o_u_p] was changed to _u_s_e_r[:_g_r_o_u_p] in POSIX.2
  28884.  because the period is a valid character in login names (as specified by
  28885.  POSIX.1 {8}, login names consist of characters in the portable filename
  28886.  character set).  The colon character was chosen as the replacement for
  28887.  the period character because it would never be allowed as a character in
  28888.  a user name or group name on traditional implementations.
  28889.  
  28890.  The -R option is considered by some observers as an undesirable departure
  28891.  from the traditional UNIX system tools approach; since a tool, find,
  28892.  already exists to recurse over directories, there was felt to be no good
  28893.  reason to require other tools to have to duplicate that functionality.
  28894.  However, the -R option was deemed an important user convenience, is far
  28895.  more efficient than forking a separate process for each element of the
  28896.  directory hierarchy, and is in widespread historical use.
  28897.  
  28898.  
  28899.                Copyright c 1991 IEEE.  All rights reserved.
  28900.       This is an unapproved IEEE Standards Draft, subject to change.
  28901.  
  28902.  
  28903.  
  28904.  
  28905.  
  28906.  408                                     4 Execution Environment Utilities
  28907.  
  28908.  
  28909.  
  28910.  
  28911.  
  28912.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  28913.  
  28914.  END_RATIONALE
  28915.  
  28916.  
  28917.  
  28918.  4.9  cksum - Write file checksums and sizes                                2
  28919.  
  28920.  
  28921.  4.9.1  Synopsis
  28922.  
  28923.  cksum  [_f_i_l_e ...]
  28924.  
  28925.  
  28926.  4.9.2  Description
  28927.  
  28928.  The cksum utility shall calculate and write to standard output a cyclic    2
  28929.  redundancy check (CRC) for each input file, and also write to standard     2
  28930.  output the number of octets in each file.  The CRC used is based on the    2
  28931.  polynomial used for CRC error checking in the networking standard ISO
  28932.  8802-3 {B7}.
  28933.  
  28934.  The CRC checksum shall be obtained in the following way:
  28935.  
  28936.  The encoding is defined by the generating polynomial:
  28937.  
  28938.     _G(_x) = _x32 + _x26 + _x23 + _x22 + _x16 + _x12 + _x11 + _x10 + _x8 + _x7 + _x5 +
  28939.  _x4 + _x2 + _x + 1
  28940.  
  28941.  Mathematically, the CRC value corresponding to a given file shall be
  28942.  defined by the following procedure:
  28943.  
  28944.      (1)  The _n bits to be evaluated are considered to be the coefficients  2
  28945.           of a mod 2 polynomial _M(_x) of degree _n-1. These _n bits are the    2
  28946.           bits from the file, with the most significant bit being the most  2
  28947.           significant bit of the first octet of the file and the last bit   2
  28948.           being the least significant bit of the last octet, padded with    2
  28949.           zero bits (if necessary) to achieve an integral number of         2
  28950.           octets, followed by one or more octets representing the length    2
  28951.           of the file as a binary value, least significant octet first.     2
  28952.           The smallest number of octets capable of representing this        2
  28953.           integer shall be used.                                            2
  28954.  
  28955.      (2)  _M(_x) is multiplied by _x32 (i.e., shifted left 32 bits) and
  28956.           divided by _G(_x) using mod 2 division, producing a remainder _R(_x)
  28957.           of degree _< 31.                                                   2
  28958.  
  28959.      (3)  The coefficients of _R(_x) are considered to be a 32-bit sequence.
  28960.  
  28961.      (4)  The bit sequence is complemented and the result is the CRC.       2
  28962.  
  28963.  
  28964.  
  28965.                Copyright c 1991 IEEE.  All rights reserved.
  28966.       This is an unapproved IEEE Standards Draft, subject to change.
  28967.  
  28968.  
  28969.  
  28970.  
  28971.  
  28972.  4.9 cksum - Write file checksums and sizes                            409
  28973.  
  28974.  
  28975.  
  28976.  
  28977.  
  28978.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  28979.  
  28980.  4.9.3  Options
  28981.  
  28982.  None.
  28983.  
  28984.  
  28985.  4.9.4  Operands
  28986.  
  28987.  The following operand shall be supported by the implementation:
  28988.  
  28989.     _f_i_l_e        A pathname of a file to be checked.  If no _f_i_l_e operands
  28990.                 are specified, the standard input is used.
  28991.  
  28992.  
  28993.  4.9.5  External Influences
  28994.  
  28995.  
  28996.  4.9.5.1  Standard Input
  28997.  
  28998.  The standard input is used only if no _f_i_l_e operands are specified.  See
  28999.  Input Files.
  29000.  
  29001.  4.9.5.2  Input Files
  29002.  
  29003.  The input files can be any file type.
  29004.  
  29005.  
  29006.  4.9.5.3  Environment Variables
  29007.  
  29008.  The following environment variables shall affect the execution of cksum:
  29009.  
  29010.     LANG               This variable shall determine the locale to use for
  29011.                        the locale categories when both LC_ALL and the
  29012.                        corresponding environment variable (beginning with
  29013.                        LC_) do not specify a locale.  See 2.6.
  29014.  
  29015.     LC_ALL             This variable shall determine the locale to be used
  29016.                        to override any values for locale categories
  29017.                        specified by the settings of LANG or any
  29018.                        environment variables beginning with LC_.
  29019.  
  29020.     LC_CTYPE           This variable shall determine the locale for the
  29021.                        interpretation of sequences of bytes of text data
  29022.                        as characters (e.g., single- versus multibyte
  29023.                        characters in arguments).
  29024.  
  29025.     LC_MESSAGES        This variable shall determine the language in which
  29026.                        messages should be written.
  29027.  
  29028.  
  29029.  
  29030.  
  29031.                Copyright c 1991 IEEE.  All rights reserved.
  29032.       This is an unapproved IEEE Standards Draft, subject to change.
  29033.  
  29034.  
  29035.  
  29036.  
  29037.  
  29038.  410                                     4 Execution Environment Utilities
  29039.  
  29040.  
  29041.  
  29042.  
  29043.  
  29044.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  29045.  
  29046.  4.9.5.4  Asynchronous Events
  29047.  
  29048.  Default.
  29049.  
  29050.  
  29051.  4.9.6  External Effects
  29052.  
  29053.  
  29054.  4.9.6.1  Standard Output
  29055.  
  29056.  For each file processed successfully, the cksum utility shall write in     2
  29057.  the following format:
  29058.  
  29059.        "%u %d %s\n", <_c_h_e_c_k_s_u_m>, <# _o_f _o_c_t_e_t_s>, <_p_a_t_h_n_a_m_e>                  2
  29060.  
  29061.  If no _f_i_l_e operand was specified, the pathname and its leading space
  29062.  shall be omitted.
  29063.  
  29064.  4.9.6.2  Standard Error
  29065.  
  29066.  Used only for diagnostic messages.
  29067.  
  29068.  
  29069.  4.9.6.3  Output Files
  29070.  
  29071.  None.
  29072.  
  29073.  
  29074.  4.9.7  Extended Description
  29075.  
  29076.  None.
  29077.  
  29078.  
  29079.  4.9.8  Exit Status
  29080.  
  29081.  The cksum utility shall exit with one of the following values:
  29082.  
  29083.      0    All files were processed successfully.
  29084.  
  29085.     >0    An error occurred.
  29086.  
  29087.  
  29088.  4.9.9  Consequences of Errors
  29089.  
  29090.  Default.
  29091.  
  29092.  BEGIN_RATIONALE
  29093.  
  29094.  
  29095.  
  29096.  
  29097.                Copyright c 1991 IEEE.  All rights reserved.
  29098.       This is an unapproved IEEE Standards Draft, subject to change.
  29099.  
  29100.  
  29101.  
  29102.  
  29103.  
  29104.  4.9 cksum - Write file checksums and sizes                            411
  29105.  
  29106.  
  29107.  
  29108.  
  29109.  
  29110.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  29111.  
  29112.  4.9.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  29113.  
  29114.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  29115.  
  29116.  The cksum utility is typically used to quickly compare a suspect file
  29117.  against a trusted version of the same.  However, no claims are made by
  29118.  POSIX.2 that this comparison is cryptographically secure; the historical
  29119.  sum utility from which cksum was inspired has traditionally been used
  29120.  mainly to ensure that files transmitted over noisy media arrive intact.
  29121.  The chances of a damaged file producing the same CRC as the original are
  29122.  astronomically small; deliberate deception is difficult, but probably not
  29123.  impossible.
  29124.  
  29125.  Although input files to cksum can be any type, the results need not be
  29126.  what would be expected on character special device files or on file types
  29127.  not described by POSIX.1 {8}.  Since POSIX.2 does not specify the block
  29128.  size used when doing input, checksums of character special files need not
  29129.  process all of the data in those files.
  29130.  
  29131.  The algorithm is expressed in terms of a bitstream divided into octets.    2
  29132.  If a file is transmitted between two systems and undergoes any data        2
  29133.  transformation (such as moving 8-bit characters into 9-bit bytes or        2
  29134.  changing ``little Endian'' byte ordering to ``big Endian''), identical     2
  29135.  CRC values cannot be expected.  Implementations performing such            2
  29136.  transformations may extend cksum to handle such situations.                2
  29137.  
  29138.  The following C-language program can be used as a model to describe the
  29139.  algorithm.  It assumes that a char is one octet.  It also assumes that     2
  29140.  the entire file is available for one pass through the function.  This was  2
  29141.  done for simplicity in demonstrating the algorithm, rather than as an      2
  29142.  implementation model.                                                      2
  29143.  
  29144.  static unsigned long crctab[] = {                                          2
  29145.  0x0,                                                                       2
  29146.  0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
  29147.  0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e,
  29148.  0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
  29149.  0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d,
  29150.  0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0,
  29151.  0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63,
  29152.  0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
  29153.  0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa,
  29154.  0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75,
  29155.  0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180,
  29156.  0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
  29157.  0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87,
  29158.  0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
  29159.  0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5,
  29160.  0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
  29161.  
  29162.  
  29163.                Copyright c 1991 IEEE.  All rights reserved.
  29164.       This is an unapproved IEEE Standards Draft, subject to change.
  29165.  
  29166.  
  29167.  
  29168.  
  29169.  
  29170.  412                                     4 Execution Environment Utilities
  29171.  
  29172.  
  29173.  
  29174.  
  29175.  
  29176.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  29177.  
  29178.  0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4,
  29179.  0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b,
  29180.  0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea,
  29181.  0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
  29182.  0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541,
  29183.  0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc,
  29184.  0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f,
  29185.  0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
  29186.  0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e,
  29187.  0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
  29188.  0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c,
  29189.  0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
  29190.  0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b,
  29191.  0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2,
  29192.  0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671,
  29193.  0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
  29194.  0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8,
  29195.  0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767,
  29196.  0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6,
  29197.  0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
  29198.  0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795,
  29199.  0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
  29200.  0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b,
  29201.  0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
  29202.  0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82,
  29203.  0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d,
  29204.  0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8,
  29205.  0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
  29206.  0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff,
  29207.  0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee,
  29208.  0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d,
  29209.  0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
  29210.  0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c,
  29211.  0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
  29212.  0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02,
  29213.  0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
  29214.  };
  29215.  
  29216.  unsigned long memcrc(const unsigned char *b, size_t n)                     2
  29217.  {                                                                          1
  29218.  /*      Input arguments:                                                   1
  29219.   *      const char*     b == byte sequence to checksum                     1
  29220.   *      size_t          n == length of sequence                            1
  29221.   */                                                                        1
  29222.  
  29223.          register unsigned int   i, c, s = 0;                               2
  29224.  
  29225.          for (i = n; i > 0; --i) {                                          2
  29226.                  c = (unsigned int)(*b++);                                  2
  29227.  
  29228.  
  29229.                Copyright c 1991 IEEE.  All rights reserved.
  29230.       This is an unapproved IEEE Standards Draft, subject to change.
  29231.  
  29232.  
  29233.  
  29234.  
  29235.  
  29236.  4.9 cksum - Write file checksums and sizes                            413
  29237.  
  29238.  
  29239.  
  29240.  
  29241.  
  29242.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  29243.  
  29244.                  s = (s << 8) ^ crctab[(s >> 24) ^ c];                      2
  29245.          }                                                                  2
  29246.  
  29247.          /* extend with the length of the string */                         2
  29248.          while (n != 0) {                                                   2
  29249.                  c = n & 0377;                                              2
  29250.                  n >>= 8;                                                   2
  29251.                  s = (s << 8) ^ crctab[(s >> 24) ^ c];                      2
  29252.          }                                                                  2
  29253.  
  29254.          return  s;                                                         2
  29255.  }              ~
  29256.  
  29257.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  29258.  
  29259.  The historical practice of writing the number of ``blocks'' has been
  29260.  removed in favor of writing the number of octets since the latter is not   2
  29261.  only more useful, but historical implementations have not been consistent
  29262.  in defining what a ``block'' meant.  Octets are used instead of bytes
  29263.  because bytes can differ in size between systems.
  29264.  
  29265.  The algorithm used was selected to increase the robustness of the
  29266.  utility's operation.  Neither the System V nor BSD sum algorithm was
  29267.  selected.  Since each of these was different and each was the default
  29268.  behavior on those systems, no realistic compromise was available if
  29269.  either were selected--some set of historical applications would break.
  29270.  Therefore, the name was changed to cksum.  Although the historical sum
  29271.  commands will probably continue to be provided for many years to come,
  29272.  programs designed for portability across systems should use the new name.
  29273.  
  29274.  The algorithm selected is based on that used by the Ethernet standard for
  29275.  the Frame Check Sequence Field.  The algorithm used does not match the
  29276.  technical definition of a _c_h_e_c_k_s_u_m; the term is used for historical
  29277.  reasons.  The length of the file is included in the CRC calculation        2
  29278.  because this parallels Ethernet's inclusion of a length field in its CRC,  2
  29279.  but also because it guards against inadvertent collisions between files    2
  29280.  that begin with different series of zero octets.  The chance that two      2
  29281.  different files will produce identical CRCs is much greater when their     2
  29282.  lengths are not considered.  Keeping the length and the checksum of the    2
  29283.  file itself separate would yield a slightly more robust algorithm, but     2
  29284.  historical usage has always been that a single number (the checksum as     2
  29285.  printed) represents the signature of the file.  It was decided that        2
  29286.  historical usage was the more important consideration.                     2
  29287.  
  29288.  Earlier drafts contained modifications to the Ethernet algorithm that      2
  29289.  involved extracting table values whenever an intermediate result became    2
  29290.  zero.  This was demonstrated to be less robust than the current method     2
  29291.  and mathematically difficult to describe or justify.                       2
  29292.  
  29293.  
  29294.  
  29295.                Copyright c 1991 IEEE.  All rights reserved.
  29296.       This is an unapproved IEEE Standards Draft, subject to change.
  29297.  
  29298.  
  29299.  
  29300.  
  29301.  
  29302.  414                                     4 Execution Environment Utilities
  29303.  
  29304.  
  29305.  
  29306.  
  29307.  
  29308.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  29309.  
  29310.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _f_o_l_l_o_w_i_n_g _b_i_b_l_i_o_g_r_a_p_h_i_c _r_e_f_e_r_e_n_c_e_s _w_i_l_l _b_e _c_l_e_a_n_e_d _u_p
  29311.  _b_e_f_o_r_e _t_h_e _s_t_a_n_d_a_r_d _i_s _c_o_m_p_l_e_t_e_d.
  29312.  
  29313.  The calculation used is identical to that given in pseudo-code on page
  29314.  1011 of _C_o_m_m_u_n_i_c_a_t_i_o_n_s _o_f _t_h_e _A_C_M, August, 1988 in the article
  29315.  ``Computation of Cyclic Redundancy Checks Via Table Lookup'' by Dilip V.
  29316.  Sarwate.  The pseudo-code rendition is:
  29317.  
  29318.        X <- 0;  Y <- 0;
  29319.        for i <- m -1 step -1 until 0 do
  29320.                begin
  29321.                T <- X(1) ^ A[i];                                            2
  29322.                X(1) <- X(0); X(0) <- Y(1); Y(1) <- Y(0); Y(0) <- 0;
  29323.                comment: f[T] and f'[T] denote the T-th words in the
  29324.                        table f and f' ;
  29325.                X <- X ^ f[T]; Y <- Y ^ f'[T];
  29326.                end
  29327.  
  29328.  The pseudo-code is reproduced exactly as given; however, note that in
  29329.  cksum'_s case, A[i] represents a byte of the file, the words X and Y are a  2
  29330.  treated as a single 32-bit value, and the tables f and f' are a single
  29331.  table containing 32-bit values.
  29332.  
  29333.  The article also discusses generating the table(s).
  29334.  
  29335.  Other sources consulted about CRC's:
  29336.  
  29337.        ``A Tutorial on CRC Computations,'' Ramabadran and Gaitonde, _I_E_E_E
  29338.        _M_i_c_r_o, p. 62, August 1988;
  29339.  
  29340.        _C_o_m_p_u_t_e_r _N_e_t_w_o_r_k_s, Andrew Tanenbaum, Prentice-Hall, Inc.
  29341.  
  29342.  END_RATIONALE
  29343.  
  29344.  
  29345.  
  29346.  
  29347.  
  29348.  
  29349.  
  29350.  
  29351.  
  29352.  
  29353.  
  29354.  
  29355.  
  29356.  
  29357.  
  29358.  
  29359.  
  29360.  
  29361.                Copyright c 1991 IEEE.  All rights reserved.
  29362.       This is an unapproved IEEE Standards Draft, subject to change.
  29363.  
  29364.  
  29365.  
  29366.  
  29367.  
  29368.  4.9 cksum - Write file checksums and sizes                            415
  29369.  
  29370.  
  29371.  
  29372.  
  29373.  
  29374.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  29375.  
  29376.  4.10  cmp - Compare two files
  29377.  
  29378.  
  29379.  4.10.1  Synopsis
  29380.  
  29381.  
  29382.  cmp  [ -l | -s ] _f_i_l_e_1 _f_i_l_e_2
  29383.  
  29384.  
  29385.  4.10.2  Description
  29386.  
  29387.  The cmp utility shall compare two files.  The cmp utility shall write no
  29388.  output if the files are the same.  Under default options, if they differ,
  29389.  it shall write to standard output the byte and line number at which the
  29390.  first difference occurred.  Bytes and lines shall be numbered beginning
  29391.  with 1.
  29392.  
  29393.  
  29394.  4.10.3  Options
  29395.  
  29396.  The cmp utility shall conform to the utility argument syntax guidelines
  29397.  described in 2.10.2.
  29398.  
  29399.  The following options shall be supported by the implementation:
  29400.  
  29401.     -l          (Lowercase ell.)  Write the byte number (decimal) and the
  29402.                 differing bytes (octal) for each difference.
  29403.  
  29404.     -s          Write nothing for differing files; return exit status
  29405.                 only.
  29406.  
  29407.  
  29408.  4.10.4  Operands
  29409.  
  29410.  The following operands shall be supported by the implementation:
  29411.  
  29412.     _f_i_l_e_1       A pathname of the first file to be compared.  If _f_i_l_e_1 is
  29413.                 -, the standard input shall be used.
  29414.  
  29415.     _f_i_l_e_2       A pathname of the second file to be compared.  If _f_i_l_e_2 is
  29416.                 -, the standard input shall be used.
  29417.  
  29418.  If both _f_i_l_e_1 and _f_i_l_e_2 refer to standard input or refer to the same FIFO
  29419.  special, block special, or character special file, the results are
  29420.  undefined.
  29421.  
  29422.  
  29423.  
  29424.  
  29425.  
  29426.  
  29427.                Copyright c 1991 IEEE.  All rights reserved.
  29428.       This is an unapproved IEEE Standards Draft, subject to change.
  29429.  
  29430.  
  29431.  
  29432.  
  29433.  
  29434.  416                                     4 Execution Environment Utilities
  29435.  
  29436.  
  29437.  
  29438.  
  29439.  
  29440.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  29441.  
  29442.  4.10.5  External Influences
  29443.  
  29444.  
  29445.  4.10.5.1  Standard Input
  29446.  
  29447.  The standard input shall be used only if the _f_i_l_e_1 or _f_i_l_e_2 operand
  29448.  refers to standard input.  See Input Files.
  29449.  
  29450.  4.10.5.2  Input Files
  29451.  
  29452.  The input files can be any file type.
  29453.  
  29454.  
  29455.  4.10.5.3  Environment Variables
  29456.  
  29457.  The following environment variables shall affect the execution of cmp:
  29458.  
  29459.     LANG               This variable shall determine the locale to use for
  29460.                        the locale categories when both LC_ALL and the
  29461.                        corresponding environment variable (beginning with
  29462.                        LC_) do not specify a locale.  See 2.6.
  29463.  
  29464.     LC_ALL             This variable shall determine the locale to be used
  29465.                        to override any values for locale categories
  29466.                        specified by the settings of LANG or any
  29467.                        environment variables beginning with LC_.
  29468.  
  29469.     LC_CTYPE           This variable shall determine the locale for the
  29470.                        interpretation of sequences of bytes of text data
  29471.                        as characters (e.g., single- versus multibyte
  29472.                        characters in arguments).
  29473.  
  29474.     LC_MESSAGES        This variable shall determine the language in which
  29475.                        messages should be written.
  29476.  
  29477.  4.10.5.4  Asynchronous Events
  29478.  
  29479.  Default.
  29480.  
  29481.  
  29482.  4.10.6  External Effects
  29483.  
  29484.  
  29485.  4.10.6.1  Standard Output
  29486.  
  29487.  In the POSIX Locale, results of the comparison shall be written to
  29488.  standard output.  When no options are used, the format shall be:
  29489.  
  29490.  
  29491.  
  29492.  
  29493.                Copyright c 1991 IEEE.  All rights reserved.
  29494.       This is an unapproved IEEE Standards Draft, subject to change.
  29495.  
  29496.  
  29497.  
  29498.  
  29499.  
  29500.  4.10 cmp - Compare two files                                          417
  29501.  
  29502.  
  29503.  
  29504.  
  29505.  
  29506.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  29507.  
  29508.        "%s %s differ: char %d, line %d\n", _f_i_l_e_1, _f_i_l_e_2, <_b_y_t_e _n_u_m_b_e_r>,
  29509.        <_l_i_n_e _n_u_m_b_e_r>
  29510.  
  29511.  When the -l option is used, the format is:
  29512.  
  29513.        "%d %o %o\n", <_b_y_t_e _n_u_m_b_e_r>, <_d_i_f_f_e_r_i_n_g _b_y_t_e>, <_d_i_f_f_e_r_i_n_g _b_y_t_e>
  29514.  
  29515.  for each byte that differs.  The first <_d_i_f_f_e_r_i_n_g _b_y_t_e> number is from
  29516.  _f_i_l_e_1 while the second is from _f_i_l_e_2. In both cases, <_b_y_t_e _n_u_m_b_e_r> shall   2
  29517.  be relative to the beginning of the file, beginning with 1.                2
  29518.  
  29519.  The <_a_d_d_i_t_i_o_n_a_l _i_n_f_o> field shall either be null or a string that starts   1
  29520.  with a <blank> and contains no <newline> characters.                       1
  29521.  
  29522.  No output shall be written to standard output when the -s option is used.
  29523.  
  29524.  
  29525.  4.10.6.2  Standard Error
  29526.  
  29527.  Used only for diagnostic messages.  If _f_i_l_e_1 and _f_i_l_e_2 are identical for   2
  29528.  the entire length of the shorter file, in the POSIX Locale the following   2
  29529.  diagnostic message shall be written, unless the -s option is specified.    2
  29530.  
  29531.        "cmp: EOF on %s%s\n", <_n_a_m_e _o_f _s_h_o_r_t_e_r _f_i_l_e>, <_a_d_d_i_t_i_o_n_a_l _i_n_f_o>      1
  29532.  
  29533.  4.10.6.3  Output Files
  29534.  
  29535.  None.
  29536.  
  29537.  
  29538.  4.10.7  Extended Description
  29539.  
  29540.  None.
  29541.  
  29542.  
  29543.  4.10.8  Exit Status
  29544.  
  29545.  The cmp utility shall exit with one of the following values:
  29546.  
  29547.      0    The files are identical.
  29548.  
  29549.      1    The files are different; this includes the case where one file
  29550.           is identical to the first part of the other.
  29551.  
  29552.     >1    An error occurred.
  29553.  
  29554.  
  29555.  
  29556.  
  29557.  
  29558.  
  29559.                Copyright c 1991 IEEE.  All rights reserved.
  29560.       This is an unapproved IEEE Standards Draft, subject to change.
  29561.  
  29562.  
  29563.  
  29564.  
  29565.  
  29566.  418                                     4 Execution Environment Utilities
  29567.  
  29568.  
  29569.  
  29570.  
  29571.  
  29572.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  29573.  
  29574.  4.10.9  Consequences of Errors
  29575.  
  29576.  Default.
  29577.  
  29578.  BEGIN_RATIONALE
  29579.  
  29580.  
  29581.  4.10.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  29582.  
  29583.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  29584.  
  29585.  The global language in Section 2 indicates that using two mutually-
  29586.  exclusive options together produces unspecified results.  Some System V
  29587.  implementations consider the option usage:
  29588.  
  29589.        cmp -l -s ...
  29590.  
  29591.  to be an error.  They also treat:
  29592.  
  29593.        cmp -s -l ...
  29594.  
  29595.  as if no options were specified.  Both of these behaviors are considered
  29596.  bugs, but are allowed.
  29597.  
  29598.  Although input files to cmp can be any type, the results might not be
  29599.  what would be expected on character special device files or on file types
  29600.  not described by POSIX.1 {8}.  Since POSIX.2 does not specify the block
  29601.  size used when doing input, comparisons of character special files need
  29602.  not compare all of the data in those files.
  29603.  
  29604.  The word char in the standard output format comes from historical usage,   1
  29605.  even though it is actually a byte number.  When cmp is supported in other  1
  29606.  locales, implementations are encouraged to use the word byte or its        1
  29607.  equivalent in another language.  Users should not interpret this           1
  29608.  difference to indicate that the functionality of the utility changed       1
  29609.  between locales.                                                           1
  29610.  
  29611.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  29612.  
  29613.  Some systems report on the number of lines in the identical-but-shorter    1
  29614.  file case.  This is allowed by the inclusion of the <_a_d_d_i_t_i_o_n_a_l _i_n_f_o>      1
  29615.  fields in the output format.  The restriction on having a leading <blank>  1
  29616.  and no <newline>s is to make parsing for the file name easier.  It is      1
  29617.  recognized that some file names containing white-space characters will     1
  29618.  make parsing difficult anyway, but the restriction does aid programs used  1
  29619.  on systems where the names are predominantly well behaved.                 1
  29620.  
  29621.  END_RATIONALE                                                              1
  29622.  
  29623.  
  29624.  
  29625.                Copyright c 1991 IEEE.  All rights reserved.
  29626.       This is an unapproved IEEE Standards Draft, subject to change.
  29627.  
  29628.  
  29629.  
  29630.  
  29631.  
  29632.  4.10 cmp - Compare two files                                          419
  29633.  
  29634.  
  29635.  
  29636.  
  29637.  
  29638.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  29639.  
  29640.  4.11  comm - Select or reject lines common to two files
  29641.  
  29642.  
  29643.  4.11.1  Synopsis
  29644.  
  29645.  
  29646.  comm  [-123] _f_i_l_e_1 _f_i_l_e_2
  29647.  
  29648.  
  29649.  4.11.2  Description
  29650.  
  29651.  The comm utility shall read _f_i_l_e_1 and _f_i_l_e_2, which should be ordered in
  29652.  the current collating sequence, and produce three text columns as output:
  29653.  lines only in _f_i_l_e_1; lines only in _f_i_l_e_2; and lines in both files.
  29654.  
  29655.  If the lines in both files are not ordered according to the collating
  29656.  sequence of the current locale, the results are unspecified.
  29657.  
  29658.  
  29659.  4.11.3  Options
  29660.  
  29661.  The comm utility shall conform to the utility argument syntax guidelines
  29662.  described in 2.10.2.
  29663.  
  29664.  The following options shall be supported by the implementation:
  29665.  
  29666.     -1          Suppress the output column of lines unique to _f_i_l_e_1.        1
  29667.  
  29668.     -2          Suppress the output column of lines unique to _f_i_l_e_2.        1
  29669.  
  29670.     -3          Suppress the output column of lines duplicated in _f_i_l_e_1     1
  29671.                 and _f_i_l_e_2.                                                  1
  29672.  
  29673.  
  29674.  4.11.4  Operands
  29675.  
  29676.  The following operands shall be supported by the implementation:
  29677.  
  29678.     _f_i_l_e_1       A pathname of the first file to be compared.  If _f_i_l_e_1 is
  29679.                 -, the standard input is used.
  29680.  
  29681.     _f_i_l_e_2       A pathname of the second file to be compared.  If _f_i_l_e_2 is
  29682.                 -, the standard input is used.
  29683.  
  29684.  If both _f_i_l_e_1 and _f_i_l_e_2 refer to standard input or to the same FIFO
  29685.  special, block special, or character special file, the results are
  29686.  undefined.
  29687.  
  29688.  
  29689.  
  29690.  
  29691.                Copyright c 1991 IEEE.  All rights reserved.
  29692.       This is an unapproved IEEE Standards Draft, subject to change.
  29693.  
  29694.  
  29695.  
  29696.  
  29697.  
  29698.  420                                     4 Execution Environment Utilities
  29699.  
  29700.  
  29701.  
  29702.  
  29703.  
  29704.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  29705.  
  29706.  4.11.5  External Influences
  29707.  
  29708.  
  29709.  4.11.5.1  Standard Input
  29710.  
  29711.  The standard input shall be used only if one of the _f_i_l_e_1 or _f_i_l_e_2
  29712.  operands refers to standard input.  See Input Files.
  29713.  
  29714.  4.11.5.2  Input Files
  29715.  
  29716.  The input files shall be text files.
  29717.  
  29718.  
  29719.  4.11.5.3  Environment Variables
  29720.  
  29721.  The following environment variables shall affect the execution of comm:
  29722.  
  29723.     LANG               This variable shall determine the locale to use for
  29724.                        the locale categories when both LC_ALL and the
  29725.                        corresponding environment variable (beginning with
  29726.                        LC_) do not specify a locale.  See 2.6.
  29727.  
  29728.     LC_ALL             This variable shall determine the locale to be used
  29729.                        to override any values for locale categories
  29730.                        specified by the settings of LANG or any
  29731.                        environment variables beginning with LC_.
  29732.  
  29733.     LC_CTYPE           This variable shall determine the locale for the
  29734.                        interpretation of sequences of bytes of text data
  29735.                        as characters (e.g., single- versus multibyte
  29736.                        characters in arguments and input files).
  29737.  
  29738.     LC_COLLATE         This variable shall determine the locale for the
  29739.                        collating sequence comm expects to have been used
  29740.                        when the input files were sorted.
  29741.  
  29742.     LC_MESSAGES        This variable shall determine the language in which
  29743.                        messages should be written.
  29744.  
  29745.  4.11.5.4  Asynchronous Events
  29746.  
  29747.  Default.
  29748.  
  29749.  
  29750.  
  29751.  
  29752.  
  29753.  
  29754.  
  29755.  
  29756.  
  29757.                Copyright c 1991 IEEE.  All rights reserved.
  29758.       This is an unapproved IEEE Standards Draft, subject to change.
  29759.  
  29760.  
  29761.  
  29762.  
  29763.  
  29764.  4.11 comm - Select or reject lines common to two files                421
  29765.  
  29766.  
  29767.  
  29768.  
  29769.  
  29770.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  29771.  
  29772.  4.11.6  External Effects
  29773.  
  29774.  
  29775.  4.11.6.1  Standard Output
  29776.  
  29777.  The comm utility shall produce output depending on the options selected.
  29778.  If the -1, -2, and -3 options are all selected, comm shall write nothing
  29779.  to standard output.
  29780.  
  29781.  If the -1 option is not selected, lines contained only in _f_i_l_e_1 shall be
  29782.  written using the format:
  29783.  
  29784.        "%s\n", <_l_i_n_e _i_n _f_i_l_e_1>
  29785.  
  29786.  If the -2 option is not selected, lines contained only in _f_i_l_e_2 shall be
  29787.  written using the format:
  29788.  
  29789.        "%s%s\n", <_l_e_a_d>, <_l_i_n_e _i_n _f_i_l_e_2>
  29790.  
  29791.  where the string <_l_e_a_d> is:
  29792.  
  29793.     <tab>            if the -1 option is not selected, or
  29794.  
  29795.     null string      if the -1 option is selected.
  29796.  
  29797.  If the -3 option is not selected, lines contained in both files shall be
  29798.  written using the format:
  29799.  
  29800.        "%s%s\n", <_l_e_a_d>, <_l_i_n_e _i_n _b_o_t_h>
  29801.  
  29802.  where the string <_l_e_a_d> is:
  29803.  
  29804.     <tab><tab>       if neither the -1 nor the -2 option is selected, or
  29805.  
  29806.     <tab>            if exactly one of the -1 and -2 options is selected,
  29807.                      or
  29808.  
  29809.     null string      if both the -1 and -2 options are selected.
  29810.  
  29811.  If the input files were ordered according to the collating sequence of
  29812.  the current locale, the lines written shall be in the collating sequence
  29813.  of the original lines.
  29814.  
  29815.  4.11.6.2  Standard Error
  29816.  
  29817.  Used only for diagnostic messages.
  29818.  
  29819.  
  29820.  
  29821.  
  29822.  
  29823.                Copyright c 1991 IEEE.  All rights reserved.
  29824.       This is an unapproved IEEE Standards Draft, subject to change.
  29825.  
  29826.  
  29827.  
  29828.  
  29829.  
  29830.  422                                     4 Execution Environment Utilities
  29831.  
  29832.  
  29833.  
  29834.  
  29835.  
  29836.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  29837.  
  29838.  4.11.6.3  Output Files
  29839.  
  29840.  None.
  29841.  
  29842.  
  29843.  4.11.7  Extended Description
  29844.  
  29845.  None.
  29846.  
  29847.  
  29848.  4.11.8  Exit Status
  29849.  
  29850.  The comm utility shall exit with one of the following values:
  29851.  
  29852.      0    All input files were successfully output as specified.
  29853.  
  29854.     >0    An error occurred.
  29855.  
  29856.  
  29857.  4.11.9  Consequences of Errors
  29858.  
  29859.  Default.
  29860.  
  29861.  BEGIN_RATIONALE
  29862.  
  29863.  
  29864.  4.11.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  29865.  
  29866.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  29867.  
  29868.  If the input files are not properly presorted, the output of comm might
  29869.  not be useful.
  29870.  
  29871.  If a file named posix.2 contains a sorted list of the utilities in this
  29872.  standard, a file named xpg3 contains a sorted list of the utilities
  29873.  specified in X/Open Portability Guide Issue 3, and a file named svid89
  29874.  contains a sorted list of the utilities in the System V Interface
  29875.  Definition Third Edition:
  29876.  
  29877.        comm -23 posix.2 xpg3 | comm -23 - svid89
  29878.  
  29879.  would print a list of utilities in this standard not specified by either
  29880.  of the other documents,
  29881.  
  29882.        comm -12 posix.2 xpg3 | comm -12 - svid89
  29883.  
  29884.  would print a list of utilities specified by all three documents, and
  29885.  
  29886.  
  29887.  
  29888.  
  29889.                Copyright c 1991 IEEE.  All rights reserved.
  29890.       This is an unapproved IEEE Standards Draft, subject to change.
  29891.  
  29892.  
  29893.  
  29894.  
  29895.  
  29896.  4.11 comm - Select or reject lines common to two files                423
  29897.  
  29898.  
  29899.  
  29900.  
  29901.  
  29902.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  29903.  
  29904.        comm -12 xpg3 svid89 | comm -23 - posix.2
  29905.  
  29906.  would print a list of utilities specified by both XPG3 and _S_V_I_D, but not
  29907.  specified in this standard.
  29908.  
  29909.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  29910.  
  29911.  None.
  29912.  
  29913.  END_RATIONALE
  29914.  
  29915.  
  29916.  
  29917.  4.12  command - Execute a simple command
  29918.  
  29919.  
  29920.  4.12.1  Synopsis
  29921.  
  29922.  command  [-p] _c_o_m_m_a_n_d__n_a_m_e [_a_r_g_u_m_e_n_t ...]
  29923.  
  29924.  
  29925.  4.12.2  Description
  29926.  
  29927.  The command utility shall cause the shell to treat the arguments as a
  29928.  simple command, suppressing the shell function lookup that is described    1
  29929.  in 3.9.1.1 item (1)(b).                                                    1
  29930.  
  29931.  If the _c_o_m_m_a_n_d__n_a_m_e is the same as the name of one of the special built-
  29932.  in utilities, the special properties in the enumerated list at the
  29933.  beginning of 3.14 shall not occur.  In every other respect, if
  29934.  _c_o_m_m_a_n_d__n_a_m_e is not the name of a function, the effect of command shall
  29935.  be the same as omitting command.
  29936.  
  29937.  
  29938.  4.12.3  Options
  29939.  
  29940.  The command utility shall conform to the utility argument syntax
  29941.  guidelines described in 2.10.2.
  29942.  
  29943.  The following option shall be supported by the implementation:
  29944.  
  29945.     -p          Perform the command search using a default value for PATH
  29946.                 that is guaranteed to find all of the standard utilities.
  29947.  
  29948.  
  29949.  
  29950.  
  29951.  
  29952.  
  29953.  
  29954.  
  29955.                Copyright c 1991 IEEE.  All rights reserved.
  29956.       This is an unapproved IEEE Standards Draft, subject to change.
  29957.  
  29958.  
  29959.  
  29960.  
  29961.  
  29962.  424                                     4 Execution Environment Utilities
  29963.  
  29964.  
  29965.  
  29966.  
  29967.  
  29968.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  29969.  
  29970.  4.12.4  Operands
  29971.  
  29972.  The following operands shall be supported by the implementation:
  29973.  
  29974.     _a_r_g_u_m_e_n_t    One of the strings treated as an argument to _c_o_m_m_a_n_d__n_a_m_e.
  29975.  
  29976.     _c_o_m_m_a_n_d__n_a_m_e
  29977.                 The name of a utility or a special built-in utility.
  29978.  
  29979.  
  29980.  4.12.5  External Influences
  29981.  
  29982.  
  29983.  4.12.5.1  Standard Input
  29984.  
  29985.  None.
  29986.  
  29987.  4.12.5.2  Input Files
  29988.  
  29989.  None.
  29990.  
  29991.  
  29992.  4.12.5.3  Environment Variables
  29993.  
  29994.  The following environment variables shall affect the execution of
  29995.  command:
  29996.  
  29997.     LANG               This variable shall determine the locale to use for
  29998.                        the locale categories when both LC_ALL and the
  29999.                        corresponding environment variable (beginning with
  30000.                        LC_) do not specify a locale.  See 2.6.
  30001.  
  30002.     LC_ALL             This variable shall determine the locale to be used
  30003.                        to override any values for locale categories
  30004.                        specified by the settings of LANG or any
  30005.                        environment variables beginning with LC_.
  30006.  
  30007.     LC_CTYPE           This variable shall determine the locale for the
  30008.                        interpretation of sequences of bytes of text data
  30009.                        as characters (e.g., single- versus multibyte
  30010.                        characters).
  30011.  
  30012.     LC_MESSAGES        This variable shall determine the language in which
  30013.                        messages should be written.
  30014.  
  30015.     PATH               This variable shall determine the search path used
  30016.                        during the command search described in 3.9.1.1,
  30017.                        except as described under the -p option.
  30018.  
  30019.  
  30020.  
  30021.                Copyright c 1991 IEEE.  All rights reserved.
  30022.       This is an unapproved IEEE Standards Draft, subject to change.
  30023.  
  30024.  
  30025.  
  30026.  
  30027.  
  30028.  4.12 command - Execute a simple command                               425
  30029.  
  30030.  
  30031.  
  30032.  
  30033.  
  30034.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  30035.  
  30036.  4.12.5.4  Asynchronous Events
  30037.  
  30038.  Default.
  30039.  
  30040.  
  30041.  4.12.6  External Effects
  30042.  
  30043.  
  30044.  4.12.6.1  Standard Output
  30045.  
  30046.  None.
  30047.  
  30048.  4.12.6.2  Standard Error
  30049.  
  30050.  Used only for diagnostic messages.
  30051.  
  30052.  
  30053.  4.12.6.3  Output Files
  30054.  
  30055.  None.
  30056.  
  30057.  
  30058.  4.12.7  Extended Description
  30059.  
  30060.  None.
  30061.  
  30062.  
  30063.  4.12.8  Exit Status
  30064.  
  30065.  The command utility shall exit with one of the following values:
  30066.  
  30067.     126   The utility specified by _c_o_m_m_a_n_d__n_a_m_e was found but could not be  1
  30068.           invoked.                                                          1
  30069.  
  30070.     127   An error occurred in the command utility or the utility           1
  30071.           specified by _c_o_m_m_a_n_d__n_a_m_e could not be found.                     1
  30072.  
  30073.  Otherwise, the exit status of command shall be that of the simple command
  30074.  specified by the arguments to command.
  30075.  
  30076.  
  30077.  4.12.9  Consequences of Errors
  30078.  
  30079.  Default.
  30080.  
  30081.  BEGIN_RATIONALE
  30082.  
  30083.  
  30084.  
  30085.  
  30086.  
  30087.                Copyright c 1991 IEEE.  All rights reserved.
  30088.       This is an unapproved IEEE Standards Draft, subject to change.
  30089.  
  30090.  
  30091.  
  30092.  
  30093.  
  30094.  426                                     4 Execution Environment Utilities
  30095.  
  30096.  
  30097.  
  30098.  
  30099.  
  30100.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  30101.  
  30102.  4.12.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  30103.  
  30104.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  30105.  
  30106.  The order for command search in POSIX.2 allows functions to override
  30107.  regular built-ins and path searches.  This utility is necessary to allow
  30108.  functions that have the same name as a utility to call the utility
  30109.  (instead of a recursive call to the function).
  30110.  
  30111.  The system default path is available using getconf; however, since
  30112.  getconf may need to have the PATH set up before it can be called itself,
  30113.  the following can be used:
  30114.  
  30115.        command -p getconf _CS_PATH
  30116.  
  30117.  Since command appears in Table 2-2, it will always be found prior to the
  30118.  PATH search.
  30119.  
  30120.  There is nothing in the description of command that implies the command
  30121.  line is parsed any differently than for any other simple command.  For
  30122.  example,
  30123.  
  30124.        command a | b ; c
  30125.  
  30126.  is not parsed in any special way that causes | or ; to be treated other
  30127.  than a pipe operator or semicolon or that prevents function lookup on b
  30128.  or c.
  30129.  
  30130.  Examples:  Make a version of cd that always prints out the new working
  30131.  directory exactly once:
  30132.  
  30133.        cd() {
  30134.                command cd "$@" >/dev/null
  30135.                pwd
  30136.        }
  30137.  
  30138.  Start off a ``secure shell script'' in which the script avoids being
  30139.  spoofed by its parent:
  30140.  
  30141.  
  30142.  
  30143.  
  30144.  
  30145.  
  30146.  
  30147.  
  30148.  
  30149.  
  30150.  
  30151.  
  30152.  
  30153.                Copyright c 1991 IEEE.  All rights reserved.
  30154.       This is an unapproved IEEE Standards Draft, subject to change.
  30155.  
  30156.  
  30157.  
  30158.  
  30159.  
  30160.  4.12 command - Execute a simple command                               427
  30161.  
  30162.  
  30163.  
  30164.  
  30165.  
  30166.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  30167.  
  30168.        IFS='
  30169.        '
  30170.        #       The preceding value should be <space><tab><newline>.
  30171.        #       Set IFS to its default value.                                1
  30172.  
  30173.        \unset -f command
  30174.        #       Ensure command is not a user function.
  30175.        #       Note that unset is escaped to prevent an alias being used
  30176.        #       for unset on implementations that support aliases.
  30177.  
  30178.        PATH="$(\command -p getconf _CS_PATH):$PATH"
  30179.        #       Put on a reliable PATH prefix.
  30180.  
  30181.        #       Now, unset all utility names that will be used (or
  30182.        #       invoke them with \command each time).
  30183.        #       ...
  30184.  
  30185.  At this point, given correct permissions on the directories called by
  30186.  PATH, the script has the ability to ensure that any utility it calls is
  30187.  the intended one.  It is being very cautious because it assumes that
  30188.  implementation extensions may be present that would allow user aliases
  30189.  and/or functions to exist when it is invoked; neither capability is
  30190.  specified by POSIX.2, but neither is prohibited as an extension.  For
  30191.  example, the proposed UPE supplement to POSIX.2 introduces a ENV variable
  30192.  that precedes the invocation of the script with a user startup script.
  30193.  Such a script could have used the aliasing facility from the UPE or the
  30194.  functions in POSIX.2 to spoof the application.
  30195.  
  30196.  The command, env, nohup, and xargs utilities have been specified to use
  30197.  exit code 127 if an error occurs so that applications can distinguish      1
  30198.  ``failure to find a utility'' from ``invoked utility exited with an error  1
  30199.  indication.''  The value 127 was chosen because it is not commonly used    1
  30200.  for other meanings; most utilities use small values for ``normal error
  30201.  conditions'' and the values above 128 can be confused with termination
  30202.  due to receipt of a signal.  The value 126 was chosen in a similar manner  1
  30203.  to indicate that the utility could be found, but not invoked.  Some        1
  30204.  scripts produce meaningful error messages differentiating the 126 and 127  1
  30205.  cases.  The distinction between exit codes 126 and 127 is based on         2
  30206.  KornShell practice that uses 127 when all attempts to _e_x_e_c the utility     2
  30207.  fail with [ENOENT], and uses 126 when any attempt to _e_x_e_c the utility      2
  30208.  fails for any other reason.                                                2
  30209.  
  30210.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  30211.  
  30212.  The command utility is somewhat similar to the Eighth Edition builtin
  30213.  command, but since command also goes to the file system to search for
  30214.  utilities, the name builtin would not be intuitive.
  30215.  
  30216.  
  30217.  
  30218.  
  30219.                Copyright c 1991 IEEE.  All rights reserved.
  30220.       This is an unapproved IEEE Standards Draft, subject to change.
  30221.  
  30222.  
  30223.  
  30224.  
  30225.  
  30226.  428                                     4 Execution Environment Utilities
  30227.  
  30228.  
  30229.  
  30230.  
  30231.  
  30232.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  30233.  
  30234.  The command utility will most likely be provided as a regular built-in.
  30235.  In an earlier draft, it was a special built-in.  This was changed for the
  30236.  following reasons:
  30237.  
  30238.      - The removal of exportable functions made the special precedence of
  30239.        a special built-in unnecessary.
  30240.  
  30241.      - A special built-in has special properties (see the enumerated list
  30242.        at the beginning of 3.14) that were inappropriate for invoking
  30243.        other utilities.  For example, two commands such as
  30244.  
  30245.              date > _u_n_w_r_i_t_a_b_l_e-_f_i_l_e
  30246.  
  30247.              command date > _u_n_w_r_i_t_a_b_l_e-_f_i_l_e
  30248.  
  30249.        would have entirely different results; in a noninteractive script,
  30250.        the former would continue to execute the next command, the latter
  30251.        would abort.  Introducing this semantic difference along with
  30252.        suppressing functions was seen to be nonintuitive.
  30253.  
  30254.      - There are some advantages of suppressing the special
  30255.        characteristics of special built-ins on occasion.  For example:
  30256.  
  30257.              command exec > _u_n_w_r_i_t_a_b_l_e-_f_i_l_e
  30258.  
  30259.        will not cause a noninteractive script to abort, so that the output
  30260.        status can be checked by the script.
  30261.  
  30262.  An earlier draft presented a larger number of options.  Most were removed
  30263.  because they were not useful to real portable applications, given the new
  30264.  command search order.
  30265.  
  30266.  The -p option is present because it is useful to be able to ensure a safe
  30267.  path search that will find all the POSIX.2 standard utilities.  This
  30268.  search might not be identical to the one that occurs through one of the
  30269.  POSIX.1 {8} _e_x_e_c functions when PATH is unset, as explained in 2.6.1.  At
  30270.  the very least, this feature is required to allow the script to access
  30271.  the correct version of getconf so that the value of the default path can
  30272.  be accurately retrieved.
  30273.  
  30274.  END_RATIONALE
  30275.  
  30276.  
  30277.  
  30278.  
  30279.  
  30280.  
  30281.  
  30282.  
  30283.  
  30284.  
  30285.                Copyright c 1991 IEEE.  All rights reserved.
  30286.       This is an unapproved IEEE Standards Draft, subject to change.
  30287.  
  30288.  
  30289.  
  30290.  
  30291.  
  30292.  4.12 command - Execute a simple command                               429
  30293.  
  30294.  
  30295.  
  30296.  
  30297.  
  30298.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  30299.  
  30300.  4.13  cp - Copy files
  30301.  
  30302.  
  30303.  4.13.1  Synopsis
  30304.  
  30305.  
  30306.  cp  [-fip] _s_o_u_r_c_e__f_i_l_e _t_a_r_g_e_t__f_i_l_e                                         2
  30307.  cp  [-fip] _s_o_u_r_c_e__f_i_l_e ...  _t_a_r_g_e_t                                         2
  30308.  
  30309.  cp  -R [-fip] _s_o_u_r_c_e__f_i_l_e ...  _t_a_r_g_e_t                                      2
  30310.  cp  -r [-fip] _s_o_u_r_c_e__f_i_l_e ...  _t_a_r_g_e_t                                      2
  30311.  
  30312.  
  30313.  4.13.2  Description
  30314.  
  30315.  The first synopsis form is denoted by two operands, neither of which are
  30316.  existing files of type directory.  The cp utility shall copy the contents
  30317.  of _s_o_u_r_c_e__f_i_l_e to the destination path named by _t_a_r_g_e_t__f_i_l_e.
  30318.  
  30319.  The second synopsis form is denoted by two or more operands where the -R
  30320.  or -r options are not specified and the first synopsis form is not
  30321.  applicable.  It shall be an error if any _s_o_u_r_c_e__f_i_l_e is a file of type
  30322.  directory, if _t_a_r_g_e_t does not exist, or if _t_a_r_g_e_t is a file of a type
  30323.  defined by POSIX.1 {8}, but is not a file of type directory.  The cp
  30324.  utility shall copy the contents of each _s_o_u_r_c_e__f_i_l_e to the destination
  30325.  path named by the concatenation of _t_a_r_g_e_t, a slash character, and the
  30326.  last component of _s_o_u_r_c_e__f_i_l_e.
  30327.  
  30328.  The third and fourth synopsis forms are denoted by two or more operands
  30329.  where the -R or -r options are specified.  The cp utility shall copy each
  30330.  file in the file hierarchy rooted in each _s_o_u_r_c_e__f_i_l_e to a destination
  30331.  path named as follows.
  30332.  
  30333.  If _t_a_r_g_e_t exists and is a file of type directory, the name of the
  30334.  corresponding destination path for each file in the file hierarchy shall
  30335.  be the concatenation of _t_a_r_g_e_t, a slash character, and the pathname of
  30336.  the file relative to the directory containing _s_o_u_r_c_e__f_i_l_e.
  30337.  
  30338.  If _t_a_r_g_e_t does not exist, and two operands are specified, the name of the
  30339.  corresponding destination path for _s_o_u_r_c_e__f_i_l_e shall be _t_a_r_g_e_t; the name
  30340.  of the corresponding destination path for all other files in the file
  30341.  hierarchy shall be the concatenation of _t_a_r_g_e_t, a slash character, and
  30342.  the pathname of the file relative to _s_o_u_r_c_e__f_i_l_e.
  30343.  
  30344.  It shall be an error if _t_a_r_g_e_t does not exist and more than two operands
  30345.  are specified, or if _t_a_r_g_e_t exists and is a file of a type defined by
  30346.  POSIX.1 {8}, but is not a file of type directory.
  30347.  
  30348.  
  30349.  
  30350.  
  30351.                Copyright c 1991 IEEE.  All rights reserved.
  30352.       This is an unapproved IEEE Standards Draft, subject to change.
  30353.  
  30354.  
  30355.  
  30356.  
  30357.  
  30358.  430                                     4 Execution Environment Utilities
  30359.  
  30360.  
  30361.  
  30362.  
  30363.  
  30364.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  30365.  
  30366.  In the following description, _s_o_u_r_c_e__f_i_l_e refers to the file that is
  30367.  being copied, whether specified as an operand or a file in a file
  30368.  hierarchy rooted in a _s_o_u_r_c_e__f_i_l_e operand.  The term _d_e_s_t__f_i_l_e refers to
  30369.  the file named by the destination path.
  30370.  
  30371.  For each _s_o_u_r_c_e__f_i_l_e, the following steps shall be taken:
  30372.  
  30373.      (1)  If _s_o_u_r_c_e__f_i_l_e references the same file as _d_e_s_t__f_i_l_e, cp may
  30374.           write a diagnostic message to standard error; it shall do         1
  30375.           nothing more with _s_o_u_r_c_e__f_i_l_e and shall go on to any remaining    1
  30376.           files.                                                            1
  30377.  
  30378.      (2)  If _s_o_u_r_c_e__f_i_l_e is of type directory, the following steps shall
  30379.           be taken:
  30380.  
  30381.            (a)  If neither the -R or -r options were specified, cp shall
  30382.                 write a diagnostic message to standard error, do nothing
  30383.                 more with _s_o_u_r_c_e__f_i_l_e, and go on to any remaining files.
  30384.  
  30385.            (b)  If _s_o_u_r_c_e__f_i_l_e was not specified as an operand and
  30386.                 _s_o_u_r_c_e__f_i_l_e is dot or dot-dot, cp shall do nothing more
  30387.                 with _s_o_u_r_c_e__f_i_l_e and go on to any remaining files.
  30388.  
  30389.            (c)  If _d_e_s_t__f_i_l_e exists and it is a file type not specified by
  30390.                 POSIX.1 {8}, the behavior is implementation defined.
  30391.  
  30392.            (d)  If _d_e_s_t__f_i_l_e exists and it is not of type directory, cp
  30393.                 shall write a diagnostic message to standard error, do
  30394.                 nothing more with _s_o_u_r_c_e__f_i_l_e or any files below
  30395.                 _s_o_u_r_c_e__f_i_l_e in the file hierarchy, and go on to any
  30396.                 remaining files.
  30397.  
  30398.            (e)  If the directory _d_e_s_t__f_i_l_e does not exist, it shall be
  30399.                 created with file permission bits set to the same value as
  30400.                 those of _s_o_u_r_c_e__f_i_l_e, modified by the file creation mask
  30401.                 of the user if the -p option was not specified, and then
  30402.                 bitwise inclusively ORed with S_IRWXU.  If _d_e_s_t__f_i_l_e
  30403.                 cannot be created, cp shall write a diagnostic message to
  30404.                 standard error, do nothing more with _s_o_u_r_c_e__f_i_l_e, and go
  30405.                 on to any remaining files.  It is unspecified if cp shall
  30406.                 attempt to copy files in the file hierarchy rooted in
  30407.                 _s_o_u_r_c_e__f_i_l_e.
  30408.  
  30409.            (f)  The files in the directory _s_o_u_r_c_e__f_i_l_e shall be copied to
  30410.                 the directory _d_e_s_t__f_i_l_e, taking the four steps [(1)-(4)]
  30411.                 listed here with the files as _s_o_u_r_c_e__f_i_l_es.
  30412.  
  30413.            (g)  If _d_e_s_t__f_i_l_e was created, its file permission bits shall
  30414.                 be changed (if necessary) to be the same as those of
  30415.  
  30416.  
  30417.                Copyright c 1991 IEEE.  All rights reserved.
  30418.       This is an unapproved IEEE Standards Draft, subject to change.
  30419.  
  30420.  
  30421.  
  30422.  
  30423.  
  30424.  4.13 cp - Copy files                                                  431
  30425.  
  30426.  
  30427.  
  30428.  
  30429.  
  30430.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  30431.  
  30432.                 _s_o_u_r_c_e__f_i_l_e, modified by the file creation mask of the
  30433.                 user if the -p option was not specified.
  30434.  
  30435.            (h)  The cp utility shall do nothing more with _s_o_u_r_c_e__f_i_l_e and
  30436.                 go on to any remaining files.
  30437.  
  30438.      (3)  If _s_o_u_r_c_e__f_i_l_e is of type regular file, the following steps       1
  30439.           shall be taken:
  30440.  
  30441.            (a)  If _d_e_s_t__f_i_l_e exists, the following steps are taken:
  30442.  
  30443.                  [1]  If the -i option is in effect, the cp utility shall
  30444.                       write a prompt to the standard error and read a line
  30445.                       from the standard input.  If the response is not
  30446.                       affirmative, cp shall do nothing more with
  30447.                       _s_o_u_r_c_e__f_i_l_e and go on to any remaining files.
  30448.  
  30449.                  [2]  A file descriptor for _d_e_s_t__f_i_l_e shall be obtained by
  30450.                       performing actions equivalent to the POSIX.1 {8}
  30451.                       _o_p_e_n() function call using _d_e_s_t__f_i_l_e as the _p_a_t_h
  30452.                       argument, and the bitwise inclusive OR of O_WRONLY
  30453.                       and O_TRUNC as the _o_f_l_a_g argument.
  30454.  
  30455.                  [3]  If the attempt to obtain a file descriptor fails and  2
  30456.                       the -f option is in effect, cp shall attempt to       2
  30457.                       remove the file by performing actions equivalent to   2
  30458.                       the POSIX.1 {8} _u_n_l_i_n_k() function called using        2
  30459.                       _d_e_s_t__f_i_l_e as the _p_a_t_h argument.  If this attempt      2
  30460.                       succeeds, cp shall continue with step (3b).           2
  30461.  
  30462.            (b)  If _d_e_s_t__f_i_l_e does not exist, a file descriptor shall be
  30463.                 obtained by performing actions equivalent to the
  30464.                 POSIX.1 {8} _o_p_e_n() function called using _d_e_s_t__f_i_l_e as the
  30465.                 _p_a_t_h argument, and the bitwise inclusive OR of O_WRONLY
  30466.                 and O_CREAT as the _o_f_l_a_g argument.  The file permission
  30467.                 bits of _s_o_u_r_c_e__f_i_l_e shall be the _m_o_d_e argument.
  30468.  
  30469.            (c)  If the attempt to obtain a file descriptor fails, cp shall
  30470.                 write a diagnostic message to standard error, do nothing
  30471.                 more with _s_o_u_r_c_e__f_i_l_e, and go on to any remaining files.
  30472.  
  30473.            (d)  The contents of _s_o_u_r_c_e__f_i_l_e shall be written to the file
  30474.                 descriptor.  Any write errors shall cause cp to write a
  30475.                 diagnostic message to standard error and continue to step
  30476.                 (3)(e).
  30477.  
  30478.            (e)  The file descriptor shall be closed.
  30479.  
  30480.  
  30481.  
  30482.  
  30483.                Copyright c 1991 IEEE.  All rights reserved.
  30484.       This is an unapproved IEEE Standards Draft, subject to change.
  30485.  
  30486.  
  30487.  
  30488.  
  30489.  
  30490.  432                                     4 Execution Environment Utilities
  30491.  
  30492.  
  30493.  
  30494.  
  30495.  
  30496.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  30497.  
  30498.            (f)  The cp utility shall do nothing more with _s_o_u_r_c_e__f_i_l_e. If   2
  30499.                 a write error occurred in step (3d), it is unspecified if   2
  30500.                 cp continues with any remaining files.  If no write error   2
  30501.                 occurred in step (3d), cp shall go on to any remaining      2
  30502.                 files.                                                      2
  30503.  
  30504.      (4)  Otherwise, the following steps shall be taken:
  30505.  
  30506.            (a)  If the -r option was specified, the behavior is             1
  30507.                 implementation defined.                                     1
  30508.  
  30509.            (b)  If the -R option was specified, the following steps shall   1
  30510.                 be taken:                                                   1
  30511.  
  30512.                  [1]  The _d_e_s_t__f_i_l_e shall be created with the same file     1
  30513.                       type as _s_o_u_r_c_e__f_i_l_e.                                  1
  30514.  
  30515.                  [2]  If _s_o_u_r_c_e__f_i_l_e is a file of type FIFO, the file       1
  30516.                       permission bits shall be the same as those of
  30517.                       _s_o_u_r_c_e__f_i_l_e, modified by the file creation mask of
  30518.                       the user if the -p option was not specified.
  30519.                       Otherwise, the permissions, owner ID, and group ID
  30520.                       of _d_e_s_t__f_i_l_e are implementation defined.
  30521.  
  30522.                       If this creation fails for any reason, cp shall
  30523.                       write a diagnostic message to standard error, do
  30524.                       nothing more with _s_o_u_r_c_e__f_i_l_e, and go on to any
  30525.                       remaining files.
  30526.  
  30527.  If the implementation provides additional or alternate access control
  30528.  mechanisms (see 2.2.2.55), their effect on copies of files is
  30529.  implementation-defined.
  30530.  
  30531.  
  30532.  4.13.3  Options
  30533.  
  30534.  The cp utility shall conform to the utility argument syntax guidelines
  30535.  described in 2.10.2.
  30536.  
  30537.  The following options shall be supported by the implementation:
  30538.  
  30539.     -f          If a file descriptor for a destination file cannot be       2
  30540.                 obtained, as described in step (3a)[2], attempt to unlink   2
  30541.                 the destination file and proceed.                           2
  30542.  
  30543.     -i          Write a prompt to standard error before copying to any
  30544.                 existing destination file.  If the response from the
  30545.                 standard input is affirmative, the copy shall be
  30546.                 attempted, otherwise not.
  30547.  
  30548.  
  30549.                Copyright c 1991 IEEE.  All rights reserved.
  30550.       This is an unapproved IEEE Standards Draft, subject to change.
  30551.  
  30552.  
  30553.  
  30554.  
  30555.  
  30556.  4.13 cp - Copy files                                                  433
  30557.  
  30558.  
  30559.  
  30560.  
  30561.  
  30562.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  30563.  
  30564.     -p          Duplicate the following characteristics of each source
  30565.                 file in the corresponding destination file:
  30566.  
  30567.                  (1)  The time of last data modification and time of last
  30568.                       access.  If this duplication fails for any reason,
  30569.                       cp shall write a diagnostic message to standard
  30570.                       error.
  30571.  
  30572.                  (2)  The user ID and group ID.  If this duplication fails
  30573.                       for any reason, it is unspecified whether cp writes
  30574.                       a diagnostic message to standard error.
  30575.  
  30576.                  (3)  The file permission bits and the S_ISUID and S_ISGID
  30577.                       bits.  Other, implementation-defined, bits may be
  30578.                       duplicated as well.  If this duplication fails for
  30579.                       any reason, cp shall write a diagnostic message to
  30580.                       standard error.
  30581.  
  30582.                 If the user ID or the group ID cannot be duplicated, the
  30583.                 file permission bits S_ISUID and S_ISGID shall be cleared.
  30584.                 If these bits are present in the source file but are not
  30585.                 duplicated in the destination file, it is unspecified
  30586.                 whether cp writes a diagnostic message to standard error.
  30587.  
  30588.                 The order in which the preceding characteristics are
  30589.                 duplicated is unspecified.  The _d_e_s_t__f_i_l_e shall not be
  30590.                 deleted if these characteristics cannot be preserved.
  30591.  
  30592.     -R          Copy file hierarchies.
  30593.  
  30594.     -r          Copy file hierarchies.  The treatment of special files is   1
  30595.                 implementation defined.                                     1
  30596.  
  30597.  
  30598.  4.13.4  Operands
  30599.  
  30600.  The following operands shall be supported by the implementation:
  30601.  
  30602.     _s_o_u_r_c_e__f_i_l_e A pathname of a file to be copied.
  30603.  
  30604.     _t_a_r_g_e_t__f_i_l_e A pathname of an existing or nonexisting file, used for
  30605.                 the output when a single file is copied.
  30606.  
  30607.     _t_a_r_g_e_t      A pathname of a directory to contain the copied file(s).
  30608.  
  30609.  
  30610.  
  30611.  
  30612.  
  30613.  
  30614.  
  30615.                Copyright c 1991 IEEE.  All rights reserved.
  30616.       This is an unapproved IEEE Standards Draft, subject to change.
  30617.  
  30618.  
  30619.  
  30620.  
  30621.  
  30622.  434                                     4 Execution Environment Utilities
  30623.  
  30624.  
  30625.  
  30626.  
  30627.  
  30628.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  30629.  
  30630.  4.13.5  External Influences
  30631.  
  30632.  
  30633.  4.13.5.1  Standard Input
  30634.  
  30635.  Used to read an input line in response to each prompt specified in
  30636.  Standard Error.  Otherwise, the standard input shall not be used.
  30637.  
  30638.  4.13.5.2  Input Files
  30639.  
  30640.  The input files specified as operands may be of any file type.
  30641.  
  30642.  
  30643.  4.13.5.3  Environment Variables
  30644.  
  30645.  The following environment variables shall affect the execution of cp:
  30646.  
  30647.     LANG               This variable shall determine the locale to use for
  30648.                        the locale categories when both LC_ALL and the
  30649.                        corresponding environment variable (beginning with
  30650.                        LC_) do not specify a locale.  See 2.6.
  30651.  
  30652.     LC_ALL             This variable shall determine the locale to be used
  30653.                        to override any values for locale categories
  30654.                        specified by the settings of LANG or any
  30655.                        environment variables beginning with LC_.
  30656.  
  30657.     LC_COLLATE         This variable shall determine the locale for the
  30658.                        behavior of ranges, equivalence classes, and
  30659.                        multicharacter collating elements used in the
  30660.                        extended regular expression defined for the yesexpr
  30661.                        locale keyword in the LC_MESSAGES category.
  30662.  
  30663.     LC_CTYPE           This variable shall determine the locale for the
  30664.                        interpretation of sequences of bytes of text data
  30665.                        as characters (e.g., single- versus multibyte
  30666.                        characters in arguments) and the behavior of
  30667.                        character classes used in the extended regular
  30668.                        expression defined for the yesexpr locale keyword
  30669.                        in the LC_MESSAGES category.
  30670.  
  30671.     LC_MESSAGES        This variable shall determine the processing of
  30672.                        affirmative responses and the language in which
  30673.                        messages should be written.
  30674.  
  30675.  
  30676.  
  30677.  
  30678.  
  30679.  
  30680.  
  30681.                Copyright c 1991 IEEE.  All rights reserved.
  30682.       This is an unapproved IEEE Standards Draft, subject to change.
  30683.  
  30684.  
  30685.  
  30686.  
  30687.  
  30688.  4.13 cp - Copy files                                                  435
  30689.  
  30690.  
  30691.  
  30692.  
  30693.  
  30694.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  30695.  
  30696.  4.13.5.4  Asynchronous Events
  30697.  
  30698.  Default.
  30699.  
  30700.  
  30701.  4.13.6  External Effects
  30702.  
  30703.  
  30704.  4.13.6.1  Standard Output
  30705.  
  30706.  None.
  30707.  
  30708.  4.13.6.2  Standard Error
  30709.  
  30710.  A prompt shall be written to standard error under the conditions
  30711.  specified in 4.13.2.  The prompt shall contain the destination pathname,
  30712.  but its format is otherwise unspecified.  Otherwise, the standard error
  30713.  shall be used only for diagnostic messages.
  30714.  
  30715.  
  30716.  4.13.6.3  Output Files
  30717.  
  30718.  The output files may be of any type.
  30719.  
  30720.  
  30721.  4.13.7  Extended Description
  30722.  
  30723.  None.
  30724.  
  30725.  
  30726.  4.13.8  Exit Status
  30727.  
  30728.  The cp utility shall exit with one of the following values:
  30729.  
  30730.      0    No error occurred.
  30731.  
  30732.     >0    An error occurred.
  30733.  
  30734.  
  30735.  4.13.9  Consequences of Errors
  30736.  
  30737.  If cp is prematurely terminated by a signal or error, files or file
  30738.  hierarchies may be only partially copied and files and directories may
  30739.  have incorrect permissions or access and modification times.
  30740.  
  30741.  BEGIN_RATIONALE
  30742.  
  30743.  
  30744.  
  30745.  
  30746.  
  30747.                Copyright c 1991 IEEE.  All rights reserved.
  30748.       This is an unapproved IEEE Standards Draft, subject to change.
  30749.  
  30750.  
  30751.  
  30752.  
  30753.  
  30754.  436                                     4 Execution Environment Utilities
  30755.  
  30756.  
  30757.  
  30758.  
  30759.  
  30760.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  30761.  
  30762.  4.13.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  30763.  
  30764.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  30765.  
  30766.  None.
  30767.  
  30768.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  30769.  
  30770.                                                                             2
  30771.  
  30772.  The -i option exists on BSD systems, giving applications and users a way
  30773.  to avoid accidentally removing files when copying.  Although the 4.3BSD
  30774.  version does not prompt if the standard input is not a terminal, the
  30775.  working group decided that use of -i is a request for interaction, so
  30776.  when the destination path exists, the utility takes instructions from
  30777.  whatever responds on standard input.
  30778.  
  30779.  The exact format of the interactive prompts is unspecified.  Only the
  30780.  general nature of the contents of prompts are specified, because
  30781.  implementations may desire more descriptive prompts than those used on
  30782.  historical implementations.  Therefore, an application using the -i
  30783.  option relies on the system to provide the most suitable dialogue
  30784.  directly with the user, based on the behavior specified.
  30785.  
  30786.  The -p option is historical practice on BSD systems, duplicating the time
  30787.  of last data modification and time of last access.  POSIX.2 extends it to
  30788.  preserve the user and group IDs, as well as the file permissions.  This
  30789.  requirement has obvious problems in that the directories are almost
  30790.  certainly modified after being copied.  This specification requires that
  30791.  the modification times be preserved even so.  The statement that the
  30792.  order in which the characteristics are duplicated is unspecified is to
  30793.  permit implementations to provide the maximum amount of security for the
  30794.  user.  Implementations should take into account the obvious security
  30795.  issues involved in setting the owner, group, and mode in the wrong order
  30796.  or creating files with an owner, group, or mode different from the final
  30797.  value.
  30798.  
  30799.  It is unspecified whether cp writes diagnostic messages when the user and
  30800.  group IDs cannot be set due to the widespread practice of users using -p
  30801.  to duplicate some portion of the file characteristics, indifferent to the
  30802.  duplication of others.  Historic implementations only write diagnostic
  30803.  messages on errors other than [EPERM].
  30804.  
  30805.  The -r option is historical practice on BSD and BSD-derived systems,
  30806.  copying file hierarchies as opposed to single files.  This functionality
  30807.  is used heavily in existing applications and its loss would significantly
  30808.  decrease consensus.  The -R option was added as a close synonym to the -r
  30809.  option, selected for consistency with all other options in the standard
  30810.  that do recursive directory descent.
  30811.  
  30812.  
  30813.                Copyright c 1991 IEEE.  All rights reserved.
  30814.       This is an unapproved IEEE Standards Draft, subject to change.
  30815.  
  30816.  
  30817.  
  30818.  
  30819.  
  30820.  4.13 cp - Copy files                                                  437
  30821.  
  30822.  
  30823.  
  30824.  
  30825.  
  30826.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  30827.  
  30828.  The difference between -R and -r is in the treatment by cp of file types
  30829.  other than regular and directory.  The original -r flag, for historic
  30830.  reasons, does not handle special files any differently than regular
  30831.  files, but always reads the file and copies its contents.  This has
  30832.  obvious problems in the presence of special file types, for example
  30833.  character devices, FIFOs, and sockets.  The current cp utility
  30834.  specification is intended to require that the -R option recreate the file
  30835.  hierarchy and that the -r option support historical practice.  It is
  30836.  anticipated that a future version of this standard will deprecate the -r
  30837.  option, and for that reason, there has been no attempt to fix its
  30838.  behavior with respect to FIFOs or other file types where copying the file
  30839.  is clearly wrong.  However, some systems support -r with the same          1
  30840.  abilities as the -R defined in POSIX.2.  To accommodate them as well as    1
  30841.  systems that do not, the differences between -r and -R are implementation  1
  30842.  defined.  Implementations may make them identical.                         1
  30843.  
  30844.  When a failure occurs during the copying of a file hierarchy, cp is
  30845.  required to attempt to copy files that are on the same level in the
  30846.  hierarchy or above the file where the failure occurred.  It is
  30847.  unspecified if cp shall attempt to copy files below the file where the
  30848.  failure occurred (which cannot succeed in any case).
  30849.  
  30850.  Permissions, owners, and groups of created special file types have been
  30851.  deliberately left as implementation defined.  This is to allow systems to
  30852.  satisfy special requirements (for example, allowing users to create
  30853.  character special devices, but requiring them to be owned by a certain
  30854.  group).  In general, it is strongly suggested that the permissions,
  30855.  owner, and group be the same as if the user had run the traditional
  30856.  mknod, ln, or other utility to create the file.  It is also probable that
  30857.  additional privileges will be required to create block, character, or
  30858.  other, implementation-specific, special file types.
  30859.  
  30860.  Additionally, the -p option explicitly requires that all set-user-ID and   1
  30861.  set-group-ID permissions be discarded if any of the owner or group IDs
  30862.  cannot be set.  This is to keep users from unintentionally giving away
  30863.  special privilege when copying programs.
  30864.  
  30865.  When creating regular files, historical versions of cp use the mode of
  30866.  the source file as modified by the file mode creation mask.  Other
  30867.  choices would have been to use the mode of the source file unmodified by
  30868.  the creation mask, or to use the same mode as would be given to a new
  30869.  file created by the user, plus the execution bits of the source file, and
  30870.  then modified by the file mode creation mask.  In the absence of any
  30871.  strong reason to change historic practice, it was in large part retained.
  30872.  
  30873.  The one difference is that the set-user-ID and set-group-ID bits are
  30874.  explicitly cleared when files are created.  This is to prevent users from
  30875.  creating programs that are set-user-ID/set-group-ID to them when copying
  30876.  files or to make set-user-ID/set-group-ID files accessible to new groups
  30877.  
  30878.  
  30879.                Copyright c 1991 IEEE.  All rights reserved.
  30880.       This is an unapproved IEEE Standards Draft, subject to change.
  30881.  
  30882.  
  30883.  
  30884.  
  30885.  
  30886.  438                                     4 Execution Environment Utilities
  30887.  
  30888.  
  30889.  
  30890.  
  30891.  
  30892.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  30893.  
  30894.  of users.  For example, if a file is set-user-ID and the copy has a
  30895.  different group ID than the source, a new group of users have execute
  30896.  permission to a set-user-ID program than did previously.  In particular,
  30897.  this is a problem for super-users copying users' trees.  A finer
  30898.  granularity of protection could be specified, in that the set-user-
  30899.  ID/set-group-ID bits could be retained under certain conditions even if
  30900.  the owner or group could not be set, based on a determination that no
  30901.  additional privileges were provided to any users.  This was not seen as
  30902.  sufficiently useful for the added complexity.
  30903.  
  30904.  When creating directories, historical versions of cp use the mode of the
  30905.  source directory, plus read, write, and search bits for the owner, as
  30906.  modified by the file mode creation mask.  This is done so that cp can
  30907.  copy trees where the user has read permission, but the owner does not.  A
  30908.  side effect is that if the file creation mask denies the owner
  30909.  permissions, cp will fail.  Also, once the copy is done, historical
  30910.  versions of cp set the permissions on the created directory to be the
  30911.  same as the source directory, unmodified by the file creation mask.
  30912.  
  30913.  This behavior has been modified so that cp will always be able to create
  30914.  the contents of the directory, regardless of the file creation mask.
  30915.  After the copy is done, the permissions are set to be the same as the
  30916.  source directory, as modified by the file creation mask.  This latter
  30917.  change from historical behavior is to prevent users from accidentally
  30918.  creating directories with permissions beyond those they would normally
  30919.  set and for consistency with the behavior of cp in creating files.
  30920.  
  30921.  It is not a requirement that cp detect attempts to copy a file to itself;
  30922.  however, implementations are strongly encouraged to do so.  Historical
  30923.  implementations have detected the attempt in most cases, which is
  30924.  probably all that is needed.
  30925.  
  30926.  There are two methods of copying subtrees in this standard.  The other
  30927.  method is described as part of the pax utility (see 4.48).  Both methods
  30928.  are historical practice.  The cp utility provides a simpler, more
  30929.  intuitive interface, while pax offers a finer granularity of control.
  30930.  Each provides additional functionality to the other; in particular, pax
  30931.  maintains the hard-link structure of the hierarchy, while cp does not.
  30932.  It is the intention of the working group that the results be similar
  30933.  (using appropriate option combinations in both utilities).  The results
  30934.  are not required to be identical; there seemed insufficient gain to
  30935.  applications to balance the difficulty of implementations having to
  30936.  guarantee that the results would be exactly identical.
  30937.  
  30938.  The wording allowing cp to copy a directory to implementation-defined
  30939.  file types not specified by POSIX.1 {8} is provided so that
  30940.  implementations supporting symbolic links are not required to prohibit
  30941.  copying directories to symbolic links.  Other extensions to POSIX.1 {8}
  30942.  file types may need to use this loophole as well.
  30943.  
  30944.  
  30945.                Copyright c 1991 IEEE.  All rights reserved.
  30946.       This is an unapproved IEEE Standards Draft, subject to change.
  30947.  
  30948.  
  30949.  
  30950.  
  30951.  
  30952.  4.13 cp - Copy files                                                  439
  30953.  
  30954.  
  30955.  
  30956.  
  30957.  
  30958.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  30959.  
  30960.  END_RATIONALE
  30961.  
  30962.  
  30963.  
  30964.  4.14  cut - Cut out selected fields of each line of a file
  30965.  
  30966.  
  30967.  4.14.1  Synopsis
  30968.  
  30969.  cut  -b _l_i_s_t [-n] [_f_i_l_e ...]
  30970.  
  30971.  cut  -c _l_i_s_t [_f_i_l_e ...]
  30972.  cut  -f _l_i_s_t [-d _d_e_l_i_m] [-s] [_f_i_l_e ...]
  30973.  
  30974.  
  30975.  4.14.2  Description
  30976.  
  30977.  The cut utility shall cut out bytes (-b option), characters (-c option),
  30978.  or character-delimited fields (-f option) from each line in one or more
  30979.  files, concatenate them, and write them to standard output.
  30980.  
  30981.  
  30982.  4.14.3  Options
  30983.  
  30984.  The cut utility shall conform to the utility argument syntax guidelines
  30985.  described in 2.10.2.
  30986.  
  30987.  The option-argument _l_i_s_t (see options -b, -c, and -f below) shall be a     2
  30988.  comma-separated list or <blank>-separated list of positive numbers and     2
  30989.  ranges.  Ranges can be in three forms.  The first is two positive numbers
  30990.  separated by a hyphen (_l_o_w-_h_i_g_h), which represents all fields from the
  30991.  first number to the second number.  The second is a positive number
  30992.  preceded by a hyphen (-_h_i_g_h), which represents all fields from field
  30993.  number 1 to that number.  The third is a positive number followed by a
  30994.  hyphen (_l_o_w-), which represents that number to the last field, inclusive.
  30995.  The elements in list can be repeated, can overlap, and can be specified
  30996.  in any order.
  30997.  
  30998.  The following options shall be supported by the implementation:
  30999.  
  31000.     -b _l_i_s_t     Cut based on a _l_i_s_t of bytes.  Each selected byte shall be
  31001.                 output unless the -n option is also specified.  It shall
  31002.                 not be an error to select bytes not present in the input
  31003.                 line.
  31004.  
  31005.     -c _l_i_s_t     Cut based on a _l_i_s_t of characters.  Each selected
  31006.                 character shall be output.  It shall not be an error to
  31007.                 select characters not present in the input line.
  31008.  
  31009.  
  31010.  
  31011.                Copyright c 1991 IEEE.  All rights reserved.
  31012.       This is an unapproved IEEE Standards Draft, subject to change.
  31013.  
  31014.  
  31015.  
  31016.  
  31017.  
  31018.  440                                     4 Execution Environment Utilities
  31019.  
  31020.  
  31021.  
  31022.  
  31023.  
  31024.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  31025.  
  31026.     -d _d_e_l_i_m    Set the field delimiter to the character _d_e_l_i_m. The
  31027.                 default is the <tab> character.
  31028.  
  31029.     -f _l_i_s_t     Cut based on a _l_i_s_t of fields, assumed to be separated in
  31030.                 the file by a delimiter character (see -d).  Each selected
  31031.                 field shall be output.  Output fields shall be separated
  31032.                 by a single occurrence of the field delimiter character.
  31033.                 Lines with no field delimiters shall be passed through
  31034.                 intact, unless -s is specified.  It shall not be an error
  31035.                 to select fields not present in the input line.
  31036.  
  31037.     -n          Do not split characters.  When specified with the -b
  31038.                 option, each element in _l_i_s_t of the form _l_o_w-_h_i_g_h
  31039.                 (hyphen-separated numbers) shall be modified as follows:
  31040.  
  31041.                       If the byte selected by _l_o_w is not the first byte of
  31042.                       a character, _l_o_w shall be decremented to select the
  31043.                       first byte of the character originally selected by
  31044.                       _l_o_w. If the byte selected by _h_i_g_h is not the last
  31045.                       byte of a character, _h_i_g_h shall be decremented to
  31046.                       select the last byte of the character prior to the
  31047.                       character originally selected by _h_i_g_h, or zero if
  31048.                       there is no prior character.  If the resulting range
  31049.                       element has _h_i_g_h equal to zero or _l_o_w greater than
  31050.                       _h_i_g_h, the list element shall be dropped from _l_i_s_t
  31051.                       for that input line without causing an error.
  31052.  
  31053.                 Each element in list of the form _l_o_w- shall be treated as
  31054.                 above with _h_i_g_h set to the the number of bytes in the
  31055.                 current line, not including the terminating <newline>
  31056.                 character.  Each element in list of the form -_h_i_g_h shall
  31057.                 be treated as above with _l_o_w set to 1.  Each element in
  31058.                 list of the form _n_u_m (a single number) shall be treated as
  31059.                 above with _l_o_w set to _n_u_m and _h_i_g_h set to _n_u_m.
  31060.  
  31061.     -s          Suppress lines with no delimiter characters, when used
  31062.                 with the -f option.  Unless specified, lines with no
  31063.                 delimiters shall be passed through untouched.
  31064.  
  31065.  
  31066.  4.14.4  Operands
  31067.  
  31068.  The following operands shall be supported by the implementation:
  31069.  
  31070.     _f_i_l_e        A pathname of an input file.  If no _f_i_l_e operands are
  31071.                 specified, or if a _f_i_l_e operand is -, the standard input
  31072.                 shall be used.
  31073.  
  31074.  
  31075.  
  31076.  
  31077.                Copyright c 1991 IEEE.  All rights reserved.
  31078.       This is an unapproved IEEE Standards Draft, subject to change.
  31079.  
  31080.  
  31081.  
  31082.  
  31083.  
  31084.  4.14 cut - Cut out selected fields of each line of a file             441
  31085.  
  31086.  
  31087.  
  31088.  
  31089.  
  31090.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  31091.  
  31092.  4.14.5  External Influences
  31093.  
  31094.  
  31095.  4.14.5.1  Standard Input
  31096.  
  31097.  The standard input shall be used only if no _f_i_l_e operands are specified,
  31098.  or if a _f_i_l_e operand is -.  See Input Files.
  31099.  
  31100.  4.14.5.2  Input Files
  31101.  
  31102.  The input files shall be text files, except that line lengths shall be
  31103.  unlimited.
  31104.  
  31105.  
  31106.  4.14.5.3  Environment Variables
  31107.  
  31108.  The following environment variables shall affect the execution of cut:
  31109.  
  31110.     LANG               This variable shall determine the locale to use for
  31111.                        the locale categories when both LC_ALL and the
  31112.                        corresponding environment variable (beginning with
  31113.                        LC_) do not specify a locale.  See 2.6.
  31114.  
  31115.     LC_ALL             This variable shall determine the locale to be used
  31116.                        to override any values for locale categories
  31117.                        specified by the settings of LANG or any
  31118.                        environment variables beginning with LC_.
  31119.  
  31120.     LC_CTYPE           This variable shall determine the locale for the
  31121.                        interpretation of sequences of bytes of text data
  31122.                        as characters (e.g., single- versus multibyte
  31123.                        characters in arguments and input files).
  31124.  
  31125.     LC_MESSAGES        This variable shall determine the language in which
  31126.                        messages should be written.
  31127.  
  31128.  4.14.5.4  Asynchronous Events
  31129.  
  31130.  Default.
  31131.  
  31132.  
  31133.  4.14.6  External Effects
  31134.  
  31135.  
  31136.  
  31137.  
  31138.  
  31139.  
  31140.  
  31141.  
  31142.  
  31143.                Copyright c 1991 IEEE.  All rights reserved.
  31144.       This is an unapproved IEEE Standards Draft, subject to change.
  31145.  
  31146.  
  31147.  
  31148.  
  31149.  
  31150.  442                                     4 Execution Environment Utilities
  31151.  
  31152.  
  31153.  
  31154.  
  31155.  
  31156.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  31157.  
  31158.  4.14.6.1  Standard Output
  31159.  
  31160.  The cut utility output shall be a concatenation of the selected bytes,
  31161.  characters, or fields (one of the following):
  31162.  
  31163.        "%s\n", <_c_o_n_c_a_t_e_n_a_t_i_o_n _o_f _b_y_t_e_s>
  31164.  
  31165.        "%s\n", <_c_o_n_c_a_t_e_n_a_t_i_o_n _o_f _c_h_a_r_a_c_t_e_r_s>
  31166.  
  31167.        "%s\n", <_c_o_n_c_a_t_e_n_a_t_i_o_n _o_f _f_i_e_l_d_s _a_n_d _f_i_e_l_d _d_e_l_i_m_i_t_e_r_s>
  31168.  
  31169.  
  31170.  4.14.6.2  Standard Error
  31171.  
  31172.  Used only for diagnostic messages.
  31173.  
  31174.  4.14.6.3  Output Files
  31175.  
  31176.  None.
  31177.  
  31178.  
  31179.  4.14.7  Extended Description
  31180.  
  31181.  None.
  31182.  
  31183.  
  31184.  4.14.8  Exit Status
  31185.  
  31186.  The cut utility shall exit with one of the following values:
  31187.  
  31188.      0    All input files were output successfully.
  31189.  
  31190.     >0    An error occurred.
  31191.  
  31192.  
  31193.  4.14.9  Consequences of Errors
  31194.  
  31195.  Default.
  31196.  
  31197.  BEGIN_RATIONALE
  31198.  
  31199.  
  31200.  4.14.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  31201.  
  31202.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  31203.  
  31204.  Examples of the option qualifier list:
  31205.  
  31206.  
  31207.  
  31208.  
  31209.                Copyright c 1991 IEEE.  All rights reserved.
  31210.       This is an unapproved IEEE Standards Draft, subject to change.
  31211.  
  31212.  
  31213.  
  31214.  
  31215.  
  31216.  4.14 cut - Cut out selected fields of each line of a file             443
  31217.  
  31218.  
  31219.  
  31220.  
  31221.  
  31222.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  31223.  
  31224.     1,4,7       Select the first, fourth, and seventh bytes, characters,
  31225.                 or fields and field delimiters.
  31226.  
  31227.     1-3,8       Equivalent to 1,2,3,8.
  31228.  
  31229.     -5,10       Equivalent to 1,2,3,4,5,10.
  31230.  
  31231.     3-          Equivalent to third through last.
  31232.  
  31233.  The _l_o_w-_h_i_g_h forms are not always equivalent when used with -b and -n and  1
  31234.  multibyte characters.  See the description of -n.                          1
  31235.  
  31236.  The following command:
  31237.  
  31238.        cut -d : -f 1,6 /etc/passwd
  31239.  
  31240.  reads the System V password file (user database) and produces lines of
  31241.  the form:
  31242.  
  31243.        <_u_s_e_r _I_D>:<_h_o_m_e _d_i_r_e_c_t_o_r_y>
  31244.  
  31245.  Most utilities in this standard work on text files.  The cut utility can
  31246.  be used to turn files with arbitrary line lengths into a set of text
  31247.  files containing the same data.  The paste utility can be used to create
  31248.  (or recreate) files with arbitrary line lengths.  For example, if file
  31249.  contains long lines:
  31250.  
  31251.        cut -b 1-500 -n file > file1
  31252.        cut -b 501- -n file > file2
  31253.  
  31254.  creates file1 (a text file) with lines no longer than 500 bytes (plus the
  31255.  <newline> character and file2 that contains the remainder of the data
  31256.  from file.  (Note that file2 will not be a text file if there are lines
  31257.  in file that are longer than 500 + {LINE_MAX} bytes.)  The original file
  31258.  can be recreated from file1 and file2 using the command:
  31259.  
  31260.        paste -d "\0" file1 file2 > file
  31261.  
  31262.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  31263.  
  31264.  Some historical implementations do not count <backspace> characters in
  31265.  determining character counts with the -c option.  This may be useful for
  31266.  using cut for processing nroff output.  It was deliberately decided not
  31267.  to have the -c option treat either <backspace> or <tab> characters in any
  31268.  special fashion.  The fold utility does treat these characters specially.  1
  31269.  
  31270.  Unlike other utilities, some historical implementations of cut exit after
  31271.  not finding an input file, rather than continuing to process the
  31272.  remaining _f_i_l_e operands.  This behavior is prohibited by this standard,
  31273.  
  31274.  
  31275.                Copyright c 1991 IEEE.  All rights reserved.
  31276.       This is an unapproved IEEE Standards Draft, subject to change.
  31277.  
  31278.  
  31279.  
  31280.  
  31281.  
  31282.  444                                     4 Execution Environment Utilities
  31283.  
  31284.  
  31285.  
  31286.  
  31287.  
  31288.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  31289.  
  31290.  where only the exit status is affected by this problem.
  31291.  
  31292.  The behavior of cut when provided with either mutually exclusive options
  31293.  or options that do not make sense together has been deliberately left
  31294.  unspecified in favor of global wording in Section 2.
  31295.  
  31296.  The traditional cut utility has worked in an environment where bytes and
  31297.  characters were equivalent (modulo <backspace> and <tab> processing in
  31298.  some implementations).  In the extended world of multibyte characters,
  31299.  the new -b option has been added.  The -n option (used with -b) allows it
  31300.  to be used to act on bytes rounded to character boundaries.  The
  31301.  algorithm specified for -n guarantees that
  31302.  
  31303.        cut -b 1-500 -n file > file1
  31304.        cut -b 501- -n file > file2
  31305.  
  31306.  will end up with all the characters in file appearing exactly once in
  31307.  file1 or file2.  (There is, however, a <newline> character in both file1
  31308.  and file2 for each <newline> character in file.)
  31309.  
  31310.  END_RATIONALE
  31311.  
  31312.  
  31313.  
  31314.  4.15  date - Write the date and time
  31315.  
  31316.  
  31317.  4.15.1  Synopsis
  31318.  
  31319.  date  [-u] [+_f_o_r_m_a_t]
  31320.  
  31321.  
  31322.  4.15.2  Description
  31323.  
  31324.  The date utility shall write the date and time to standard output.  By
  31325.  default, the current date and time shall be written.  If an operand
  31326.  beginning with + is specified, the output format of date shall be
  31327.  controlled by the field descriptors and other text in the operand.
  31328.  
  31329.  
  31330.  4.15.3  Options
  31331.  
  31332.  The date utility shall conform to the utility argument syntax guidelines
  31333.  described in 2.10.2.
  31334.  
  31335.  The following option shall be supported by the implementation:
  31336.  
  31337.  
  31338.  
  31339.  
  31340.  
  31341.                Copyright c 1991 IEEE.  All rights reserved.
  31342.       This is an unapproved IEEE Standards Draft, subject to change.
  31343.  
  31344.  
  31345.  
  31346.  
  31347.  
  31348.  4.15 date - Write the date and time                                   445
  31349.  
  31350.  
  31351.  
  31352.  
  31353.  
  31354.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  31355.  
  31356.     -u          Perform operations as if the TZ environment variable was
  31357.                 set to the string UTC0, or its equivalent historical value  2
  31358.                 of GMT0.  Otherwise, date shall use the time zone           2
  31359.                 indicated by the TZ environment variable or the system
  31360.                 default if that variable is not set.
  31361.  
  31362.  
  31363.  4.15.4  Operands
  31364.  
  31365.  When the format is specified, each field descriptor shall be replaced in
  31366.  the standard output by its corresponding value.  All other characters
  31367.  shall be copied to the output without change.  The output shall be always
  31368.  terminated with a <newline> character.
  31369.  
  31370.  Field Descriptors
  31371.  
  31372.     %a          Locale's abbreviated weekday name.
  31373.     %A          Locale's full weekday name.
  31374.     %b          Locale's abbreviated month name.
  31375.     %B          Locale's full month name.
  31376.     %c          Locale's appropriate date and time representation.
  31377.     %C          Century (a year divided by 100 and truncated to an
  31378.                 integer) as a decimal number (00-99).
  31379.     %d          Day of the month as a decimal number (01-31).
  31380.     %D          Date in the format _m_m/_d_d/_y_y.
  31381.     %e          Day of the month as a decimal number (1-31 in a two-digit
  31382.                 field with leading <space> fill).
  31383.     %h          A synonym for %b.
  31384.     %H          Hour (24-hour clock) as a decimal number (00-23).
  31385.     %I          Hour (12-hour clock) as a decimal number (01-12).
  31386.     %j          Day of the year as a decimal number (001-366).
  31387.     %m          Month as a decimal number (01-12).
  31388.     %M          Minute as a decimal number (00-59).
  31389.     %n          A <newline> character.
  31390.     %p          Locale's equivalent of either AM or PM.
  31391.     %r          12-Hour clock time (01-12) using the _A_M/_P_M notation; in
  31392.                 the POSIX Locale, this shall be equivalent to
  31393.                 "%I:%M:%S %p".
  31394.     %S          Seconds as a decimal number (00-61).
  31395.     %t          A <tab> character.
  31396.     %T          24-Hour clock time (00-23) in the format _H_H:_M_M:_S_S.
  31397.     %U          Week number of the year (Sunday as the first day of the
  31398.                 week) as a decimal number (00-53).
  31399.     %w          Weekday as a decimal number [0 (Sunday)-6].
  31400.     %W          Week number of the year (Monday as the first day of the
  31401.                 week) as a decimal number (00-53).
  31402.     %x          Locale's appropriate date representation.
  31403.     %X          Locale's appropriate time representation.
  31404.  
  31405.  
  31406.  
  31407.                Copyright c 1991 IEEE.  All rights reserved.
  31408.       This is an unapproved IEEE Standards Draft, subject to change.
  31409.  
  31410.  
  31411.  
  31412.  
  31413.  
  31414.  446                                     4 Execution Environment Utilities
  31415.  
  31416.  
  31417.  
  31418.  
  31419.  
  31420.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  31421.  
  31422.     %y          Year (offset from %C) as a decimal number (00-99).
  31423.     %Y          Year with century as a decimal number.
  31424.     %Z          Time-zone name, or no characters if no time zone is
  31425.                 determinable.
  31426.     %%          A <percent-sign> character.
  31427.  
  31428.  See the LC_TIME description in 2.5.2.5 for the field descriptor values in
  31429.  the POSIX Locale.
  31430.  
  31431.  _M_o_d_i_f_i_e_d__F_i_e_l_d__D_e_s_c_r_i_p_t_o_r_s
  31432.  
  31433.  Some field descriptors can be modified by the E and O modifier characters
  31434.  to indicate a different format or specification as specified in the
  31435.  LC_TIME locale description (see 2.5.2.5).  If the corresponding keyword
  31436.  (see era, era_year, era_d_fmt, and alt_digits in 2.5.2.5) is not
  31437.  specified or not supported for the current locale, the unmodified field
  31438.  descriptor value shall be used.
  31439.  
  31440.     %Ec         Locale's alternate appropriate date and time
  31441.                 representation.
  31442.  
  31443.     %EC         The name of the base year (period) in the locale's
  31444.                 alternate representation.
  31445.  
  31446.     %Ex         Locale's alternate date representation.
  31447.  
  31448.     %Ey         Offset from %EC (year only) in the locale's alternate
  31449.                 representation.
  31450.  
  31451.     %EY         Full alternate year representation.
  31452.  
  31453.     %Od         Day of month using the locale's alternate numeric symbols.
  31454.  
  31455.     %Oe         Day of month using the locale's alternate numeric symbols.
  31456.  
  31457.     %OH         Hour (24-hour clock) using the locale's alternate numeric
  31458.                 symbols.
  31459.  
  31460.     %OI         Hour (12-hour clock) using the locale's alternate numeric
  31461.                 symbols.
  31462.  
  31463.     %Om         Month using the locale's alternate numeric symbols.
  31464.  
  31465.     %OM         Minutes using the locale's alternate numeric symbols.
  31466.  
  31467.     %OS         Seconds using the locale's alternate numeric symbols.
  31468.  
  31469.     %OU         Week number of the year (Sunday as the first day of the
  31470.                 week) using the locale's alternate numeric symbols.
  31471.  
  31472.  
  31473.                Copyright c 1991 IEEE.  All rights reserved.
  31474.       This is an unapproved IEEE Standards Draft, subject to change.
  31475.  
  31476.  
  31477.  
  31478.  
  31479.  
  31480.  4.15 date - Write the date and time                                   447
  31481.  
  31482.  
  31483.  
  31484.  
  31485.  
  31486.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  31487.  
  31488.     %Ow         Weekday as number in the locale's alternate representation
  31489.                 (Sunday = 0).
  31490.  
  31491.     %OW         Week number of the year (Monday as the first day of the
  31492.                 week) using the locale's alternate numeric symbols.
  31493.  
  31494.     %Oy         Year (offset from %C) in alternate representation.
  31495.  
  31496.  
  31497.  4.15.5  External Influences
  31498.  
  31499.  
  31500.  4.15.5.1  Standard Input
  31501.  
  31502.  None.
  31503.  
  31504.  4.15.5.2  Input Files
  31505.  
  31506.  None.
  31507.  
  31508.  
  31509.  4.15.5.3  Environment Variables
  31510.  
  31511.  The following environment variables shall affect the execution of date:
  31512.  
  31513.     LANG               This variable shall determine the locale to use for
  31514.                        the locale categories when both LC_ALL and the
  31515.                        corresponding environment variable (beginning with
  31516.                        LC_) do not specify a locale.  See 2.6.
  31517.  
  31518.     LC_ALL             This variable shall determine the locale to be used
  31519.                        to override any values for locale categories
  31520.                        specified by the settings of LANG or any
  31521.                        environment variables beginning with LC_.
  31522.  
  31523.     LC_CTYPE           This variable shall determine the locale for the
  31524.                        interpretation of sequences of bytes of text data
  31525.                        as characters (e.g., single- versus multibyte
  31526.                        characters in arguments).
  31527.  
  31528.     LC_MESSAGES        This variable shall determine the language in which
  31529.                        messages should be written.
  31530.  
  31531.     LC_TIME            This variable shall determine the format and
  31532.                        contents of date and time strings written by date.
  31533.  
  31534.     TZ                 This variable shall specify the time zone in which
  31535.                        the time and date are written, unless the -u option
  31536.                        is specified.  If the TZ variable is not set and
  31537.                        the -u is not specified, an unspecified system
  31538.  
  31539.                Copyright c 1991 IEEE.  All rights reserved.
  31540.       This is an unapproved IEEE Standards Draft, subject to change.
  31541.  
  31542.  
  31543.  
  31544.  
  31545.  
  31546.  448                                     4 Execution Environment Utilities
  31547.  
  31548.  
  31549.  
  31550.  
  31551.  
  31552.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  31553.  
  31554.                        default time zone is used.
  31555.  
  31556.  
  31557.  4.15.5.4  Asynchronous Events
  31558.  
  31559.  Default.
  31560.  
  31561.  
  31562.  4.15.6  External Effects
  31563.  
  31564.  4.15.6.1  Standard Output
  31565.  
  31566.  When no formatting operand is specified, the output in the POSIX Locale
  31567.  shall be equivalent to specifying
  31568.  
  31569.        date "+%a %b %e %H:%M:%S %Z %Y"
  31570.  
  31571.  
  31572.  4.15.6.2  Standard Error
  31573.  
  31574.  Used only for diagnostic messages.
  31575.  
  31576.  4.15.6.3  Output Files
  31577.  
  31578.  None.
  31579.  
  31580.  
  31581.  4.15.7  Extended Description
  31582.  
  31583.  None.
  31584.  
  31585.  
  31586.  4.15.8  Exit Status
  31587.  
  31588.  The date utility shall exit with one of the following values:
  31589.  
  31590.      0    The date was written successfully.
  31591.  
  31592.     >0    An error occurred.
  31593.  
  31594.  
  31595.  4.15.9  Consequences of Errors
  31596.  
  31597.  Default.
  31598.  
  31599.  BEGIN_RATIONALE
  31600.  
  31601.  
  31602.  
  31603.  
  31604.  
  31605.                Copyright c 1991 IEEE.  All rights reserved.
  31606.       This is an unapproved IEEE Standards Draft, subject to change.
  31607.  
  31608.  
  31609.  
  31610.  
  31611.  
  31612.  4.15 date - Write the date and time                                   449
  31613.  
  31614.  
  31615.  
  31616.  
  31617.  
  31618.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  31619.  
  31620.  4.15.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  31621.  
  31622.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  31623.  
  31624.  The option for setting the date and time was not included.  It is
  31625.  normally a system administration option, which is outside the scope of
  31626.  POSIX.2.
  31627.  
  31628.  The following are input/output examples of date used at arbitrary times
  31629.  in the POSIX Locale:
  31630.  
  31631.        $ date
  31632.        Tue Jun 26 09:58:10 PDT 1990
  31633.  
  31634.        $ date "+DATE: %m/%d/%y%nTIME: %H:%M:%S"
  31635.        DATE: 11/21/87
  31636.        TIME: 13:36:16
  31637.  
  31638.        $ date "+TIME: %r"
  31639.        TIME: 01:36:32 PM
  31640.  
  31641.  Field descriptors are of unspecified format when not in the POSIX Locale.
  31642.  Some of them can contain <newline>s in some locales, so it may be
  31643.  difficult to use the format shown in Standard Output for parsing the
  31644.  output of date in those locales.
  31645.  
  31646.  The range of values for %S extends from 0 to 61 seconds to accommodate
  31647.  the occasional leap second or double leap second.
  31648.  
  31649.  Although certain of the field descriptors in the POSIX Locale (such as
  31650.  the name of the month) are shown with initial capital letters, this need
  31651.  not be the case in other locales.  Programs using these fields may need
  31652.  to adjust the capitalization if the output is going to be used at the
  31653.  beginning of a sentence.
  31654.  
  31655.  The date string formatting capabilities are intended for use in Gregorian
  31656.  style calendars, possibly with a different starting year (or years).  The
  31657.  %x and %c field descriptors, however, are intended for ``local
  31658.  representation''; these may be based on a different, non-Gregorian
  31659.  calendar.
  31660.  
  31661.  The %C field descriptor was introduced to allow a fallback for the %EC
  31662.  (alternate year format base year); it can be viewed as the base of the
  31663.  current subdivision in the Gregorian calendar.  A century is not
  31664.  calculated as an ordinal number; this standard was approved in century
  31665.  19, not the twentieth (let's hope).  Both the %Ey and %y can then be
  31666.  viewed as the offset from %EC and %C, respectively.
  31667.  
  31668.  
  31669.  
  31670.  
  31671.                Copyright c 1991 IEEE.  All rights reserved.
  31672.       This is an unapproved IEEE Standards Draft, subject to change.
  31673.  
  31674.  
  31675.  
  31676.  
  31677.  
  31678.  450                                     4 Execution Environment Utilities
  31679.  
  31680.  
  31681.  
  31682.  
  31683.  
  31684.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  31685.  
  31686.  The E and O modifiers modify the traditional field descriptors, so that
  31687.  they can always be used, even if the implementation (or the current
  31688.  locale) does not support the modifier.
  31689.  
  31690.  The E modifier supports alternate date formats, such as the Japanese
  31691.  Emperor's Era, as long as these are based on the Gregorian calendar
  31692.  system.  Extending the E modifiers to other date elements may provide an
  31693.  implementation-specific extension capable of supporting other calendar
  31694.  systems, especially in combination with the O modifier.
  31695.  
  31696.  The O modifier supports time and date formats using the locale's
  31697.  alternate numerical symbols, such as Kanji or Hindi digits, or ordinal
  31698.  number representation.
  31699.  
  31700.  Non-European locales, whether they use Latin digits in computational       2
  31701.  items or not, often have local forms of the digits for use in date         2
  31702.  formats.  This is not totally unknown even in Europe; a variant of dates   2
  31703.  uses Roman numerals for the months:  the third day of September 1991       2
  31704.  would be written as 3.IX.1991.  In Japan, Kanji digits are regularly used  2
  31705.  for dates; in Arabic-speaking countries, Hindi digits are used.  The %d,   2
  31706.  %e, %H, %I, %m, %S, %U, %w, %W, and %y field descriptors always return     2
  31707.  the date/time field in Latin digits (i.e., 0 through 9).  The %O modifier  2
  31708.  was introduced to support the use for display purposes of non-Latin        2
  31709.  digits.  In the LC_TIME category in localedef, the optional alt_digits     2
  31710.  keyword is intended for this purpose.  As an example, assume the           2
  31711.  following (partial) localedef source:                                      2
  31712.  
  31713.        alt_digits  "";"I";"II";"III";"IV";"V";"VI";"VII";"VIII" \           2
  31714.                    "IX";"X";"XI";"XII"                                      2
  31715.        d_fmt       "%e.%Om.%Y"                                              2
  31716.  
  31717.  With the above date, the command                                           2
  31718.  
  31719.        date "+x"                                                            2
  31720.  
  31721.  would yield ``3.IX.1991.''  With the same d_fmt, but without the           2
  31722.  alt_digits, the command would yield ``3.9.1991.''                          2
  31723.  
  31724.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  31725.  
  31726.  Some of the new options for formatting are from the C Standard {7}.  The
  31727.  -u option was introduced to allow portable access to Coordinated
  31728.  Universal Time (UTC).  The string GMT0 is allowed as an equivalent TZ      1
  31729.  value to be compatible with all of the systems using the BSD               1
  31730.  implementation, where this option originated.
  31731.  
  31732.  The %e format field descriptor (adopted from System V) was added because
  31733.  the C Standard {7} descriptors did not provide any way to produce the
  31734.  historical default date output during the first nine days of any month.
  31735.  
  31736.  
  31737.                Copyright c 1991 IEEE.  All rights reserved.
  31738.       This is an unapproved IEEE Standards Draft, subject to change.
  31739.  
  31740.  
  31741.  
  31742.  
  31743.  
  31744.  4.15 date - Write the date and time                                   451
  31745.  
  31746.  
  31747.  
  31748.  
  31749.  
  31750.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  31751.  
  31752.  END_RATIONALE
  31753.  
  31754.  
  31755.  
  31756.  4.16  dd - Convert and copy a file
  31757.  
  31758.  
  31759.  4.16.1  Synopsis
  31760.  
  31761.  dd  [_o_p_e_r_a_n_d ...]
  31762.  
  31763.  
  31764.  4.16.2  Description
  31765.  
  31766.  The dd utility shall copy the specified input file to the specified
  31767.  output file with possible conversions using specific input and output
  31768.  block sizes.  It shall read the input one block at a time, using the
  31769.  specified input block size; it then shall process the block of data
  31770.  actually returned, which could be smaller than the requested block size.
  31771.  It shall apply any conversions that have been specified and write the
  31772.  resulting data to the output in blocks of the specified output block
  31773.  size.  If the bs=_e_x_p_r operand is specified and no conversions other than
  31774.  sync or noerror are requested, the data returned from each input block
  31775.  shall be written as a separate output block; if the read returns less
  31776.  than a full block and the sync conversion is not specified, the resulting
  31777.  output block shall be the same size as the input block.  If the bs=_e_x_p_r
  31778.  operand is not specified, or a conversion other than sync or noerror is
  31779.  requested, the input shall be processed and collected into full-sized
  31780.  output blocks until the end of the input is reached.
  31781.  
  31782.  The processing order shall be as follows:
  31783.  
  31784.      (1)  An input block is read.
  31785.  
  31786.      (2)  If the input block is shorter than the specified input block
  31787.           size and the sync conversion is specified, null bytes shall be    2
  31788.           appended to the input data up to the specified size.  The
  31789.           remaining conversions and output shall include the pad
  31790.           characters as if they had been read from the input.
  31791.  
  31792.      (3)  If the bs=_e_x_p_r operand is specified and no conversion other than
  31793.           sync or noerror is requested, the resulting data shall be
  31794.           written to the output as a single block, and the remaining steps
  31795.           are omitted.
  31796.  
  31797.      (4)  If the swab conversion is specified, each pair of input data
  31798.           bytes shall be swapped.  If there are an odd number of bytes in
  31799.           the input block, the results are unspecified.
  31800.  
  31801.  
  31802.  
  31803.                Copyright c 1991 IEEE.  All rights reserved.
  31804.       This is an unapproved IEEE Standards Draft, subject to change.
  31805.  
  31806.  
  31807.  
  31808.  
  31809.  
  31810.  452                                     4 Execution Environment Utilities
  31811.  
  31812.  
  31813.  
  31814.  
  31815.  
  31816.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  31817.  
  31818.      (5)  Any remaining conversions (block, unblock, lcase, and ucase)
  31819.           shall be performed.  These conversions shall operate on the
  31820.           input data independently of the input blocking; an input or
  31821.           output fixed-length record may span block boundaries.
  31822.  
  31823.      (6)  The data resulting from input or conversion or both shall be
  31824.           aggregated into output blocks of the specified size.  After the
  31825.           end of input is reached, any remaining output shall be written
  31826.           as a block without padding if conv=sync is not specified; thus
  31827.           the final output block may be shorter than the output block
  31828.           size.
  31829.  
  31830.  
  31831.  4.16.3  Options
  31832.  
  31833.  None.
  31834.  
  31835.  
  31836.  4.16.4  Operands
  31837.  
  31838.  All of the operands shall be processed before any input is read.  The
  31839.  following operands shall be supported by the implementation:
  31840.  
  31841.     if=_f_i_l_e          Specify the input pathname; the default is standard
  31842.                      input.
  31843.  
  31844.     of=_f_i_l_e          Specify the output pathname; the default is standard
  31845.                      output.  If the seek=_e_x_p_r conversion is not also
  31846.                      specified, the output file shall be truncated before
  31847.                      the copy begins, unless conv=notrunc is specified.
  31848.                      If seek=_e_x_p_r is specified, but conv=notrunc is not,
  31849.                      the effect of the copy shall be to preserve the
  31850.                      blocks in the output file over which dd seeks, but no
  31851.                      other portion of the output file shall be preserved.
  31852.                      (If the size of the seek plus the size of the input
  31853.                      file is less than the previous size of the output
  31854.                      file, the output file shall be shortened by the
  31855.                      copy.)
  31856.  
  31857.     ibs=_e_x_p_r         Specify the input block size, in bytes, by _e_x_p_r
  31858.                      (default is 512).
  31859.  
  31860.     obs=_e_x_p_r         Specify the output block size, in bytes, by _e_x_p_r
  31861.                      (default is 512).
  31862.  
  31863.     bs=_e_x_p_r          Set both input and output block sizes to _e_x_p_r bytes,
  31864.                      superseding ibs= and obs=.  If no conversion other
  31865.                      than sync, noerror, and notrunc is specified, each     2
  31866.                      input block shall be copied to the output as a single  2
  31867.  
  31868.  
  31869.                Copyright c 1991 IEEE.  All rights reserved.
  31870.       This is an unapproved IEEE Standards Draft, subject to change.
  31871.  
  31872.  
  31873.  
  31874.  
  31875.  
  31876.  4.16 dd - Convert and copy a file                                     453
  31877.  
  31878.  
  31879.  
  31880.  
  31881.  
  31882.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  31883.  
  31884.                      block without aggregating short blocks.
  31885.  
  31886.     cbs=_e_x_p_r         Specify the conversion block size for block and
  31887.                      unblock in bytes by _e_x_p_r (default is zero).  If cbs=   2
  31888.                      is omitted or given a value of zero, using block or    2
  31889.                      unblock produces unspecified results.                  2
  31890.  
  31891.     skip=_n           Skip _n input blocks (using the specified input block
  31892.                      size) before starting to copy.  On seekable files,
  31893.                      the implementation shall read the blocks or seek past
  31894.                      them; on nonseekable files, the blocks shall be read
  31895.                      and the data shall be discarded.
  31896.  
  31897.     seek=_n           Skip _n blocks (using the specified output block size)
  31898.                      from beginning of output file before copying.  On
  31899.                      nonseekable files, existing blocks shall be read and
  31900.                      space from the current end of file to the specified
  31901.                      offset, if any, filled with null bytes; on seekable    2
  31902.                      files, the implementation shall seek to the specified  2
  31903.                      offset or read the blocks as described for
  31904.                      nonseekable files.
  31905.  
  31906.     count=_n          Copy only _n input blocks.
  31907.  
  31908.     conv=_v_a_l_u_e[,_v_a_l_u_e ...]
  31909.                      Where _v_a_l_u_es are comma-separated symbols from the
  31910.                      following list.
  31911.  
  31912.         block        Treat the input as a sequence of <newline>-terminated  2
  31913.                      or end-of-file-terminated variable length records      2
  31914.                      independent of the input block boundaries.  Each
  31915.                      record shall be converted to a record with a fixed
  31916.                      length specified by the conversion block size.  Any    2
  31917.                      <newline> shall be removed from the input line;        2
  31918.                      <space>s shall be appended to lines that are shorter
  31919.                      than their conversion block size to fill the block.
  31920.                      Lines that are longer than the conversion block size
  31921.                      shall be truncated to the largest number of
  31922.                      characters that will fit into that size; the number
  31923.                      of truncated lines shall be reported (see Standard
  31924.                      Error below).
  31925.  
  31926.                      The block and unblock values are mutually exclusive.
  31927.  
  31928.         unblock      Convert fixed length records to variable length.
  31929.                      Read a number of bytes equal to the conversion block
  31930.                      size, delete all trailing <space>s, and append a       2
  31931.                      <newline>.                                             2
  31932.  
  31933.  
  31934.  
  31935.                Copyright c 1991 IEEE.  All rights reserved.
  31936.       This is an unapproved IEEE Standards Draft, subject to change.
  31937.  
  31938.  
  31939.  
  31940.  
  31941.  
  31942.  454                                     4 Execution Environment Utilities
  31943.  
  31944.  
  31945.  
  31946.  
  31947.  
  31948.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  31949.  
  31950.         lcase        Map uppercase characters specified by the LC_CTYPE
  31951.                      keyword tolower to the corresponding lowercase
  31952.                      character.  Characters for which no mapping is
  31953.                      specified shall not be modified by this conversion.
  31954.  
  31955.                      The lcase and ucase symbols are mutually exclusive.
  31956.  
  31957.         ucase        Map lowercase characters specified by the LC_CTYPE
  31958.                      keyword toupper to the corresponding uppercase
  31959.                      character.  Characters for which no mapping is
  31960.                      specified shall not be modified by this conversion.
  31961.  
  31962.         swab         Swap every pair of input bytes.
  31963.  
  31964.         noerror      Do not stop processing on an input error.  When an
  31965.                      input error occurs, a diagnostic message shall be
  31966.                      written on standard error, followed by the current
  31967.                      input and output block counts in the same format as
  31968.                      used at completion (see Standard Error).  If the sync
  31969.                      conversion is specified, the missing input shall be
  31970.                      replaced with null bytes and processed normally;
  31971.                      otherwise, the input block shall be omitted from the
  31972.                      output.
  31973.  
  31974.         notrunc      Do not truncate the output file.  Preserve blocks in
  31975.                      the output file not explicitly written by this
  31976.                      invocation of the dd utility.  (See also the
  31977.                      preceding of=_f_i_l_e operand.)
  31978.  
  31979.         sync         Pad every input block to the size of ibs= buffer,
  31980.                      appending null bytes.                                  2
  31981.  
  31982.  The behavior is unspecified if operands other than conv= are specified
  31983.  more than once.
  31984.  
  31985.  For the bs=, cbs=, ibs=, and obs= operands, the application shall supply
  31986.  an expression specifying a size in bytes.  The expression, _e_x_p_r, can be:
  31987.  
  31988.      (1)  a positive decimal number;
  31989.  
  31990.      (2)  a positive decimal number followed by k, specifying
  31991.           multiplication by 1024;
  31992.  
  31993.      (3)  a positive decimal number followed by b, specifying
  31994.           multiplication by 512; or
  31995.  
  31996.      (4)  two or more positive decimal numbers (with or without k or b)
  31997.           separated by x, specifying the product of the indicated values.
  31998.  
  31999.  
  32000.  
  32001.                Copyright c 1991 IEEE.  All rights reserved.
  32002.       This is an unapproved IEEE Standards Draft, subject to change.
  32003.  
  32004.  
  32005.  
  32006.  
  32007.  
  32008.  4.16 dd - Convert and copy a file                                     455
  32009.  
  32010.  
  32011.  
  32012.  
  32013.  
  32014.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  32015.  
  32016.  4.16.5  External Influences
  32017.  
  32018.  
  32019.  4.16.5.1  Standard Input
  32020.  
  32021.  If no if= operand is specified, the standard input shall be used.  See
  32022.  Input Files.
  32023.  
  32024.  4.16.5.2  Input Files
  32025.  
  32026.  The input file can be any file type.
  32027.  
  32028.  
  32029.  4.16.5.3  Environment Variables
  32030.  
  32031.  The following environment variables shall affect the execution of dd:
  32032.  
  32033.     LANG               This variable shall determine the locale to use for
  32034.                        the locale categories when both LC_ALL and the
  32035.                        corresponding environment variable (beginning with
  32036.                        LC_) do not specify a locale.  See 2.6.
  32037.  
  32038.     LC_ALL             This variable shall determine the locale to be used
  32039.                        to override any values for locale categories
  32040.                        specified by the settings of LANG or any
  32041.                        environment variables beginning with LC_.
  32042.  
  32043.     LC_CTYPE           This variable shall determine the locale for the
  32044.                        interpretation of sequences of bytes of text data
  32045.                        as characters (e.g., single- versus multibyte
  32046.                        characters in arguments and input files), the
  32047.                        classification of characters as upper- or
  32048.                        lowercase, and the mapping of characters from one
  32049.                        case to the other.
  32050.  
  32051.     LC_MESSAGES        This variable shall determine the language in which
  32052.                        messages should be written.
  32053.  
  32054.  4.16.5.4  Asynchronous Events
  32055.  
  32056.  For SIGINT, the dd utility shall write status information to standard
  32057.  error before exiting.  It shall take the standard action for all other
  32058.  signals; see 2.11.5.4.
  32059.  
  32060.  
  32061.  
  32062.  
  32063.  
  32064.  
  32065.  
  32066.  
  32067.                Copyright c 1991 IEEE.  All rights reserved.
  32068.       This is an unapproved IEEE Standards Draft, subject to change.
  32069.  
  32070.  
  32071.  
  32072.  
  32073.  
  32074.  456                                     4 Execution Environment Utilities
  32075.  
  32076.  
  32077.  
  32078.  
  32079.  
  32080.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  32081.  
  32082.  4.16.6  External Effects
  32083.  
  32084.  
  32085.  4.16.6.1  Standard Output
  32086.  
  32087.  If no of= operand is specified, the standard output shall be used.  The
  32088.  nature of the output depends on the operands selected.
  32089.  
  32090.  4.16.6.2  Standard Error
  32091.  
  32092.  On completion, dd shall write the number of input and output blocks to
  32093.  standard error.  In the POSIX Locale the following formats shall be used:
  32094.  
  32095.        "%u+%u records in\n", <_n_u_m_b_e_r _o_f _w_h_o_l_e _i_n_p_u_t _b_l_o_c_k_s>,
  32096.        <_n_u_m_b_e_r _o_f _p_a_r_t_i_a_l _i_n_p_u_t _b_l_o_c_k_s>
  32097.  
  32098.        "%u+%u records out\n", <_n_u_m_b_e_r _o_f _w_h_o_l_e _o_u_t_p_u_t _b_l_o_c_k_s>,
  32099.        <_n_u_m_b_e_r _o_f _p_a_r_t_i_a_l _o_u_t_p_u_t _b_l_o_c_k_s>
  32100.  
  32101.  A partial input block is one for which _r_e_a_d() returned less than the
  32102.  input block size.  A partial output block is one that was written with
  32103.  fewer bytes than specified by the output block size.
  32104.  
  32105.  In addition, when there is at least one truncated block, the number of
  32106.  truncated blocks shall be written to standard error.  In the POSIX
  32107.  Locale, the format shall be:
  32108.  
  32109.        "%u truncated %s\n", <_n_u_m_b_e_r _o_f _t_r_u_n_c_a_t_e_d _b_l_o_c_k_s>, "block" [if
  32110.        <_n_u_m_b_e_r _o_f _t_r_u_n_c_a_t_e_d _b_l_o_c_k_s> is one] "blocks" [otherwise]
  32111.  
  32112.  Diagnostic messages may also be written to standard error.
  32113.  
  32114.  
  32115.  4.16.6.3  Output Files
  32116.  
  32117.  If the of= operand is used, the output shall be the same as described in
  32118.  Standard Output.
  32119.  
  32120.  
  32121.  4.16.7  Extended Description
  32122.  
  32123.  None.
  32124.  
  32125.  
  32126.  
  32127.  
  32128.  
  32129.  
  32130.  
  32131.  
  32132.  
  32133.                Copyright c 1991 IEEE.  All rights reserved.
  32134.       This is an unapproved IEEE Standards Draft, subject to change.
  32135.  
  32136.  
  32137.  
  32138.  
  32139.  
  32140.  4.16 dd - Convert and copy a file                                     457
  32141.  
  32142.  
  32143.  
  32144.  
  32145.  
  32146.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  32147.  
  32148.  4.16.8  Exit Status
  32149.  
  32150.  The dd utility shall exit with one of the following values:
  32151.  
  32152.      0    The input file was copied successfully.
  32153.  
  32154.     >0    An error occurred.
  32155.  
  32156.  
  32157.  4.16.9  Consequences of Errors
  32158.  
  32159.  If an input error is detected and the noerror conversion has not been
  32160.  specified, any partial output block shall be written to the output file,
  32161.  a diagnostic message shall be written, and the copy operation shall be
  32162.  discontinued.  If some other error is detected, a diagnostic message
  32163.  shall be written and the copy operation shall be discontinued.
  32164.  
  32165.  BEGIN_RATIONALE
  32166.  
  32167.  
  32168.  4.16.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  32169.  
  32170.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  32171.  
  32172.  The input and output block size can be specified to take advantage of raw
  32173.  physical I/O.
  32174.  
  32175.  The following command:
  32176.  
  32177.        dd if=/dev/rmt0h  of=/dev/rmt1h
  32178.  
  32179.  copies from tape drive 0 to tape drive 1, using a common historical
  32180.  device naming convention.
  32181.  
  32182.  The following command:
  32183.  
  32184.        dd ibs=10  skip=1
  32185.  
  32186.  strips the first 10 bytes from standard input.
  32187.  
  32188.  A suggested implementation technique for conv=noerror,sync is to zero the
  32189.  input buffer before each read and to write the contents of the input
  32190.  buffer to the output even after an error.  In this manner, any data
  32191.  transferred to the input buffer before the error was detected will be
  32192.  preserved.  Another point is that a failed read on a regular file or a
  32193.  disk will generally not increment the file offset, and dd must then seek
  32194.  past the block on which the error occurred; otherwise, the input error
  32195.  will occur repetitively.  When the input is a magnetic tape, however, the
  32196.  tape will normally have passed the block containing the error when the
  32197.  
  32198.  
  32199.                Copyright c 1991 IEEE.  All rights reserved.
  32200.       This is an unapproved IEEE Standards Draft, subject to change.
  32201.  
  32202.  
  32203.  
  32204.  
  32205.  
  32206.  458                                     4 Execution Environment Utilities
  32207.  
  32208.  
  32209.  
  32210.  
  32211.  
  32212.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  32213.  
  32214.  error is reported, and thus no seek is necessary.
  32215.  
  32216.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  32217.  
  32218.  
  32219.                  Table 4-4  -  ASCII to EBCDIC Conversion
  32220.  __________________________________________________________________________________________________________________________________________________
  32221.  
  32222.                0      1      2      3      4      5      6      7
  32223.               ____   ____   ____   ____   ____   ____   ____   ____
  32224.        0000   0000   0001   0002   0003   0067   0055   0056   0057
  32225.        0010   0026   0005   0045   0013   0014   0015   0016   0017
  32226.        0020   0020   0021   0022   0023   0074   0075   0062   0046
  32227.        0030   0030   0031   0077   0047   0034   0035   0036   0037
  32228.        0040   0100   0132   0177   0173   0133   0154   0120   0175
  32229.        0050   0115   0135   0134   0116   0153   0140   0113   0141
  32230.        0060   0360   0361   0362   0363   0364   0365   0366   0367
  32231.        0070   0370   0371   0172   0136   0114   0176   0156   0157
  32232.        0100   0174   0301   0302   0303   0304   0305   0306   0307
  32233.        0110   0310   0311   0321   0322   0323   0324   0325   0326
  32234.        0120   0327   0330   0331   0342   0343   0344   0345   0346
  32235.        0130   0347   0350   0351   0255   0340   0275   0_2_3_2_   0155
  32236.        0140   0171   0201   0202   0203   0204   0205   0206   0207
  32237.        0150   0210   0211   0221   0222   0223   0224   0225   0226
  32238.        0160   0227   0230   0231   0242   0243   0244   0245   0246
  32239.        0170   0247   0250   0251   0300   0117   0320   0137   0007
  32240.                                                         ____
  32241.        0200   0040   0041   0042   0043   0044   0025   0006   0027
  32242.        0210   0050   0051   0052   0053   0054   0011   0012   0033
  32243.        0220   0060   0061   0032   0063   0064   0065   0066   0010
  32244.        0230   0070   0071   0072   0073   0004   0024   0076   0341
  32245.        0240   0101   0102   0103   0104   0105   0106   0107   0110
  32246.        0250   0111   0121   0122   0123   0124   0125   0126   0127
  32247.        0260   0130   0131   0142   0143   0144   0145   0146   0147
  32248.        0270   0150   0151   0160   0161   0162   0163   0164   0165
  32249.        0300   0166   0167   0170   0200   0212   0213   0214   0215
  32250.        0310   0216   0217   0220   0_1_5_2_   0233   0234   0235   0236
  32251.        0320   0237   0240   0252   0253   0254   0112   0256   0257
  32252.                                                  ____
  32253.        0330   0260   0261   0262   0263   0264   0265   0266   0267
  32254.        0340   0270   0271   0272   0273   0274   0_2_4_1_   0276   0277
  32255.        0350   0312   0313   0314   0315   0316   0317   0332   0333
  32256.        0360   0334   0335   0336   0337   0352   0353   0354   0355
  32257.        0370   0356   0357   0372   0373   0374   0375   0376   0377
  32258.  __________________________________________________________________________________________________________________________________________________
  32259.  
  32260.  
  32261.  The Options subclause is listed as ``None'' because there are no options
  32262.  recognized by historical dd utilities.  Certainly, many of the operands
  32263.  
  32264.  
  32265.                Copyright c 1991 IEEE.  All rights reserved.
  32266.       This is an unapproved IEEE Standards Draft, subject to change.
  32267.  
  32268.  
  32269.  
  32270.  
  32271.  
  32272.  4.16 dd - Convert and copy a file                                     459
  32273.  
  32274.  
  32275.  
  32276.  
  32277.  
  32278.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  32279.  
  32280.  
  32281.                Table 4-5  -  ASCII to IBM EBCDIC Conversion
  32282.  __________________________________________________________________________________________________________________________________________________
  32283.  
  32284.                0      1      2      3      4      5      6      7
  32285.               ____   ____   ____   ____   ____   ____   ____   ____
  32286.        0000   0000   0001   0002   0003   0067   0055   0056   0057
  32287.        0010   0026   0005   0045   0013   0014   0015   0016   0017
  32288.        0020   0020   0021   0022   0023   0074   0075   0062   0046
  32289.        0030   0030   0031   0077   0047   0034   0035   0036   0037
  32290.        0040   0100   0132   0177   0173   0133   0154   0120   0175
  32291.        0050   0115   0135   0134   0116   0153   0140   0113   0141
  32292.        0060   0360   0361   0362   0363   0364   0365   0366   0367
  32293.        0070   0370   0371   0172   0136   0114   0176   0156   0157
  32294.        0100   0174   0301   0302   0303   0304   0305   0306   0307
  32295.        0110   0310   0311   0321   0322   0323   0324   0325   0326
  32296.        0120   0327   0330   0331   0342   0343   0344   0345   0346
  32297.        0130   0347   0350   0351   0255   0340   0275   0_1_3_7_   0155
  32298.        0140   0171   0201   0202   0203   0204   0205   0206   0207
  32299.        0150   0210   0211   0221   0222   0223   0224   0225   0226
  32300.        0160   0227   0230   0231   0242   0243   0244   0245   0246
  32301.        0170   0247   0250   0251   0300   0117   0320   0241   0007
  32302.                                                         ____
  32303.        0200   0040   0041   0042   0043   0044   0025   0006   0027
  32304.        0210   0050   0051   0052   0053   0054   0011   0012   0033
  32305.        0220   0060   0061   0032   0063   0064   0065   0066   0010
  32306.        0230   0070   0071   0072   0073   0004   0024   0076   0341
  32307.        0240   0101   0102   0103   0104   0105   0106   0107   0110
  32308.        0250   0111   0121   0122   0123   0124   0125   0126   0127
  32309.        0260   0130   0131   0142   0143   0144   0145   0146   0147
  32310.        0270   0150   0151   0160   0161   0162   0163   0164   0165
  32311.        0300   0166   0167   0170   0200   0212   0213   0214   0215
  32312.        0310   0216   0217   0220   0_2_3_2_   0233   0234   0235   0236
  32313.        0320   0237   0240   0252   0253   0254   0255   0256   0257
  32314.                                                  ____
  32315.        0330   0260   0261   0262   0263   0264   0265   0266   0267
  32316.        0340   0270   0271   0272   0273   0274   0_2_7_5_   0276   0277
  32317.        0350   0312   0313   0314   0315   0316   0317   0332   0333
  32318.        0360   0334   0335   0336   0337   0352   0353   0354   0355
  32319.        0370   0356   0357   0372   0373   0374   0375   0376   0377
  32320.  __________________________________________________________________________________________________________________________________________________
  32321.  
  32322.  
  32323.  could have been designed to use the Utility Syntax Guidelines, which
  32324.  would have resulted in the classic hyphenated option letters.  In this
  32325.  version of this standard, dd retains its curious JCL-like syntax due to
  32326.  the large number of applications that depend on the historical
  32327.  implementation.  ``Fixing'' the interface would cause an excessive
  32328.  compatibility problem.  However, due to interest in the international
  32329.  
  32330.  
  32331.                Copyright c 1991 IEEE.  All rights reserved.
  32332.       This is an unapproved IEEE Standards Draft, subject to change.
  32333.  
  32334.  
  32335.  
  32336.  
  32337.  
  32338.  460                                     4 Execution Environment Utilities
  32339.  
  32340.  
  32341.  
  32342.  
  32343.  
  32344.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  32345.  
  32346.  community, the developers of the standard have agreed to provide an
  32347.  alternative syntax for the next version of this standard that conforms to
  32348.  the spirit of the Utility Syntax Guidelines.  This new syntax will be
  32349.  accompanied by the existing syntax, marked as obsolescent.  System
  32350.  implementors are encouraged to develop and promulgate a new syntax for
  32351.  dd, perhaps using a different utility name, that can be adopted for the
  32352.  next version of this standard.
  32353.  
  32354.  The default ibs= and obs= sizes are specified as 512 bytes because there
  32355.  are existing (largely portable) scripts that assume these values.  If
  32356.  they were left unspecified, very strange results could occur if an
  32357.  implementation chose an odd block size.
  32358.  
  32359.  Historical implementations of dd used _c_r_e_a_t() when processing of=file.
  32360.  This makes the seek= operand unusable except on special files.  More
  32361.  recent BSD-based implementations use _o_p_e_n() (without O_TRUNC) instead of
  32362.  _c_r_e_a_t(), but fail to delete output file contents after the data copied.
  32363.  Since balloting showed a desire to make this behavior available, the
  32364.  conv=notrunc feature was added.
  32365.  
  32366.  The w multiplier, (historically meaning _w_o_r_d), is used in System V to
  32367.  mean 2 and in 4.2BSD to mean 4.  Since _w_o_r_d is inherently nonportable,
  32368.  its use is not supported by POSIX.2.
  32369.  
  32370.  All references to US ASCII and to conversions to/from IBM and EBCDIC were
  32371.  removed in preparation for this document's acceptance by the
  32372.  international community.  Implementations are free to have such
  32373.  conversions as extensions, using the ascii, ibm, and ebcdic keywords.
  32374.  However, in the interest of promoting consistency of implementation, the
  32375.  original material from an early draft has been restored to the rationale
  32376.  as an example:
  32377.  
  32378.        In the two tables, the conversions from ASCII to either standard
  32379.        EBCDIC (Table 4-4) or the IBM version of EBCDIC (Table 4-5) are
  32380.        shown.  The differences between the two tables are underlined.  In   1
  32381.        both tables, the ASCII values are the row and column headers and     1
  32382.        the EBCDIC values are found at their intersections.  For example,    1
  32383.        ASCII 0012 (LF) is the second row, third column, yielding 0045 in    1
  32384.        EBCDIC.  The inverted tables (for EBCDIC to ASCII conversion) are    1
  32385.        not shown, but are in one-to-one correspondence with these tables.   1
  32386.        The tables are understood to match recent System V conversion        1
  32387.        algorithms and there have been reports that earlier System V         1
  32388.        versions and the BSD version do not always conform to these;         1
  32389.        however, representatives of the BSD development group have agreed    1
  32390.        that a future version of their system will use these tables for      1
  32391.        consistency with System V.                                           1
  32392.  
  32393.        The cbs operand is required if any of the ascii, ebcdic, or ibm      2
  32394.        operands are specified.  For the ascii operand, the input is         2
  32395.  
  32396.  
  32397.                Copyright c 1991 IEEE.  All rights reserved.
  32398.       This is an unapproved IEEE Standards Draft, subject to change.
  32399.  
  32400.  
  32401.  
  32402.  
  32403.  
  32404.  4.16 dd - Convert and copy a file                                     461
  32405.  
  32406.  
  32407.  
  32408.  
  32409.  
  32410.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  32411.  
  32412.        handled as described for the unblock operand except that characters  2
  32413.        are converted to ASCII before the trailing <spaces>s are deleted.    2
  32414.        For the ebcdic and ibm operands, the input is handled as described   2
  32415.        for the block operand except that the characters are converted to    2
  32416.        EBCDIC or IBM EBCDIC after the trailing <spaces>s are added.         2
  32417.  
  32418.  The block and unblock keywords are from historical BSD practice.           2
  32419.  
  32420.  Early drafts only allowed two numbers separated by x to be used in a
  32421.  product when specifying bs=, cbs=, ibs=, and obs= sizes.  This was
  32422.  changed to reflect the historical practice of allowing multiple numbers
  32423.  in the product as provided by Version 7 and all releases of System V and
  32424.  BSD.
  32425.  
  32426.  END_RATIONALE
  32427.  
  32428.  
  32429.  
  32430.  4.17  diff - Compare two files
  32431.  
  32432.  
  32433.  4.17.1  Synopsis
  32434.  
  32435.  diff  [ -c | -e | -C _n ] [-br] _f_i_l_e_1 _f_i_l_e_2
  32436.  
  32437.  
  32438.  4.17.2  Description
  32439.  
  32440.  The diff utility shall compare the contents of _f_i_l_e_1 and _f_i_l_e_2 and write
  32441.  to standard output a list of changes necessary to convert _f_i_l_e_1 into
  32442.  _f_i_l_e_2. This list should be minimal.  No output shall be produced if the
  32443.  files are identical.
  32444.  
  32445.  
  32446.  4.17.3  Options
  32447.  
  32448.  The diff utility shall conform to the utility argument syntax guidelines
  32449.  described in 2.10.2.
  32450.  
  32451.  The following options shall be supported by the implementation:
  32452.  
  32453.     -b          Cause trailing <blank>s to be ignored and other strings of
  32454.                 <blank>s to compare equal.
  32455.  
  32456.     -c          Produce output in a form that provides three lines of
  32457.                 context.
  32458.  
  32459.  
  32460.  
  32461.  
  32462.  
  32463.                Copyright c 1991 IEEE.  All rights reserved.
  32464.       This is an unapproved IEEE Standards Draft, subject to change.
  32465.  
  32466.  
  32467.  
  32468.  
  32469.  
  32470.  462                                     4 Execution Environment Utilities
  32471.  
  32472.  
  32473.  
  32474.  
  32475.  
  32476.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  32477.  
  32478.     -C _n        Produce output in a form that provides _n lines of context
  32479.                 (where _n shall be interpreted as a positive decimal
  32480.                 integer).
  32481.  
  32482.     -e          Produce output in a form suitable as input for the ed
  32483.                 utility (see 4.20), which can then be used to convert
  32484.                 _f_i_l_e_1 into _f_i_l_e_2.
  32485.  
  32486.     -r          Apply diff recursively to files and directories of the
  32487.                 same name when _f_i_l_e_1 and _f_i_l_e_2 are both directories.
  32488.  
  32489.  
  32490.  4.17.4  Operands
  32491.  
  32492.  The following operands shall be supported by the implementation:
  32493.  
  32494.     _f_i_l_e_1
  32495.     _f_i_l_e_2       A pathname of a file be compared.  If either the _f_i_l_e_1 or
  32496.                 _f_i_l_e_2 operand is -, the standard input shall be used in
  32497.                 its place.
  32498.  
  32499.  If both _f_i_l_e_1 and _f_i_l_e_2 are directories, diff shall not compare block
  32500.  special files, character special files, or FIFO special files to any
  32501.  files and shall not compare regular files to directories.  The system
  32502.  documentation shall specify the behavior of diff on implementation-
  32503.  specific file types not specified by POSIX.1 {8} when found in
  32504.  directories.  Further details are as specified in 4.17.6.1.1.
  32505.  
  32506.  If only one of _f_i_l_e_1 and _f_i_l_e_2 is a directory, diff shall be applied to
  32507.  the nondirectory file and the file contained in the directory file with a
  32508.  filename that is the same as the last component of the nondirectory file.
  32509.  
  32510.  
  32511.  4.17.5  External Influences
  32512.  
  32513.  
  32514.  4.17.5.1  Standard Input
  32515.  
  32516.  The standard input shall be used only if one of the _f_i_l_e_1 or _f_i_l_e_2
  32517.  operands references standard input.  See Input Files.
  32518.  
  32519.  4.17.5.2  Input Files
  32520.  
  32521.  The input files shall be text files.
  32522.  
  32523.  
  32524.  
  32525.  
  32526.  
  32527.  
  32528.  
  32529.                Copyright c 1991 IEEE.  All rights reserved.
  32530.       This is an unapproved IEEE Standards Draft, subject to change.
  32531.  
  32532.  
  32533.  
  32534.  
  32535.  
  32536.  4.17 diff - Compare two files                                         463
  32537.  
  32538.  
  32539.  
  32540.  
  32541.  
  32542.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  32543.  
  32544.  4.17.5.3  Environment Variables
  32545.  
  32546.  The following environment variables shall affect the execution of diff:
  32547.  
  32548.     LANG               This variable shall determine the locale to use for
  32549.                        the locale categories when both LC_ALL and the
  32550.                        corresponding environment variable (beginning with
  32551.                        LC_) do not specify a locale.  See 2.6.
  32552.  
  32553.     LC_ALL             This variable shall determine the locale to be used
  32554.                        to override any values for locale categories
  32555.                        specified by the settings of LANG or any
  32556.                        environment variables beginning with LC_.
  32557.  
  32558.     LC_CTYPE           This variable shall determine the locale for the
  32559.                        interpretation of sequences of bytes of text data
  32560.                        as characters (e.g., single- versus multibyte
  32561.                        characters in arguments and input files).
  32562.  
  32563.     LC_MESSAGES        This variable shall determine the language in which
  32564.                        messages should be written.
  32565.  
  32566.     LC_TIME            This variable shall determine the locale for
  32567.                        affecting the format of file time stamps written
  32568.                        with the -C and -c options.
  32569.  
  32570.     TZ                 This variable shall determine the locale for
  32571.                        affecting the time zone used for calculating file
  32572.                        time stamps written with the -C and -c options.
  32573.  
  32574.  
  32575.  4.17.5.4  Asynchronous Events
  32576.  
  32577.  Default.
  32578.  
  32579.  
  32580.  4.17.6  External Effects
  32581.  
  32582.  4.17.6.1  Standard Output
  32583.  
  32584.  4.17.6.1.1  diff Directory Comparison Format
  32585.  
  32586.  If both _f_i_l_e_1 and _f_i_l_e_2 are directories, the following output formats
  32587.  shall be used.
  32588.  
  32589.  In the POSIX Locale, each file that is present in only one directory
  32590.  shall be reported using the following format:
  32591.  
  32592.  
  32593.  
  32594.  
  32595.                Copyright c 1991 IEEE.  All rights reserved.
  32596.       This is an unapproved IEEE Standards Draft, subject to change.
  32597.  
  32598.  
  32599.  
  32600.  
  32601.  
  32602.  464                                     4 Execution Environment Utilities
  32603.  
  32604.  
  32605.  
  32606.  
  32607.  
  32608.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  32609.  
  32610.        "Only in %s: %s\n", <_d_i_r_e_c_t_o_r_y _p_a_t_h_n_a_m_e>, <_f_i_l_e_n_a_m_e>
  32611.  
  32612.  In the POSIX Locale, subdirectories that are common to the two
  32613.  directories may be reported with the following format:
  32614.  
  32615.        "Common subdirectories: %s and %s\n", <_d_i_r_e_c_t_o_r_y_1 _p_a_t_h_n_a_m_e>,
  32616.        <_d_i_r_e_c_t_o_r_y_2 _p_a_t_h_n_a_m_e>
  32617.  
  32618.  For each file common to the two directories if the two files are not to
  32619.  be compared, the following format shall be used in the POSIX Locale:
  32620.  
  32621.        "File %s is a %s while file %s is a %s\n", <_d_i_r_e_c_t_o_r_y_1 _p_a_t_h_n_a_m_e>,
  32622.        <_f_i_l_e _t_y_p_e _o_f _d_i_r_e_c_t_o_r_y_1 _p_a_t_h_n_a_m_e>, <_d_i_r_e_c_t_o_r_y_2 _p_a_t_h_n_a_m_e>,
  32623.        <_f_i_l_e _t_y_p_e _o_f _d_i_r_e_c_t_o_r_y_2 _p_a_t_h_n_a_m_e>
  32624.  
  32625.  For each file common to the two directories, if the files are to be
  32626.  compared and are identical, no output shall be written.  If the two files
  32627.  differ, the following format shall be written:                             2
  32628.  
  32629.        "diff %s %s %s\n", <_d_i_f_f__o_p_t_i_o_n_s>, <_f_i_l_e_n_a_m_e_1>, <_f_i_l_e_n_a_m_e_2>
  32630.  
  32631.  where <_d_i_f_f__o_p_t_i_o_n_s> are the options as specified on the command line.
  32632.  Depending on these options, one of the following output formats shall be
  32633.  used to write the differences.
  32634.  
  32635.  All directory pathnames listed in this subclause shall be relative to the
  32636.  original command line arguments.  All other names of files listed in this
  32637.  subclause shall be filenames (pathname components).
  32638.  
  32639.  4.17.6.1.2  diff Default Output Format
  32640.  
  32641.  The default (without -e, -c, or -C options) diff utility output contains
  32642.  lines of these forms:
  32643.  
  32644.        "%da%d\n", <_n_u_m_1>, <_n_u_m_2>
  32645.  
  32646.        "%da%d,%d\n", <_n_u_m_1>, <_n_u_m_2>, <_n_u_m_3>
  32647.  
  32648.        "%dd%d\n", <_n_u_m_1>, <_n_u_m_2>
  32649.  
  32650.        "%d,%dd%d\n", <_n_u_m_1>, <_n_u_m_2>, <_n_u_m_3>
  32651.  
  32652.        "%dc%d\n", <_n_u_m_1>, <_n_u_m_2>
  32653.  
  32654.        "%d,%dc%d\n", <_n_u_m_1>, <_n_u_m_2>, <_n_u_m_3>
  32655.  
  32656.        "%dc%d,%d\n", <_n_u_m_1>, <_n_u_m_2>, <_n_u_m_3>
  32657.  
  32658.  
  32659.  
  32660.  
  32661.                Copyright c 1991 IEEE.  All rights reserved.
  32662.       This is an unapproved IEEE Standards Draft, subject to change.
  32663.  
  32664.  
  32665.  
  32666.  
  32667.  
  32668.  4.17 diff - Compare two files                                         465
  32669.  
  32670.  
  32671.  
  32672.  
  32673.  
  32674.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  32675.  
  32676.        "%d,%dc%d,%d\n", <_n_u_m_1>, <_n_u_m_2>, <_n_u_m_3>, <_n_u_m_4>
  32677.  
  32678.  These lines resemble ed subcommands to convert _f_i_l_e_1 into _f_i_l_e_2. The line
  32679.  numbers before the action letters shall pertain to _f_i_l_e_1; those after
  32680.  shall pertain to _f_i_l_e_2. Thus, by exchanging 'a' for 'd' and reading the
  32681.  line in reverse order, one can also determine how to convert _f_i_l_e_2 into
  32682.  _f_i_l_e_1. As in ed, identical pairs (where _n_u_m_1 = _n_u_m_2) are abbreviated as a
  32683.  single number.
  32684.  
  32685.  Following each of these lines, diff shall write to standard output all
  32686.  lines affected in the first file using the format:
  32687.  
  32688.        "<W%s", <_l_i_n_e>
  32689.  
  32690.  and all lines affected in the second file using the format:
  32691.  
  32692.        ">W%s", <_l_i_n_e>
  32693.  
  32694.  If there are lines affected in both _f_i_l_e_1 and _f_i_l_e_2 (as with the c
  32695.  subcommand), the changes are separated with a line consisting of three
  32696.  hyphens:
  32697.  
  32698.        "---\n"
  32699.  
  32700.  4.17.6.1.3  diff -e Output Format
  32701.  
  32702.  With the -e option, a script shall be produced that shall, when provided
  32703.  as input to ed (see 4.20), along with an appended w (write) command,
  32704.  convert _f_i_l_e_1 into _f_i_l_e_2. Only the a (append), c (change), d (delete), i
  32705.  (insert), and s (substitute) commands of ed shall be used in this script.
  32706.  Text line(s), except those consisting of the single character period (.),
  32707.  shall be output as they appear in the file.
  32708.  
  32709.  4.17.6.1.4  diff -c or -C Output Format
  32710.  
  32711.  With the -c or -C option, the output format shall consist of affected
  32712.  lines along with surrounding lines of context.  The affected lines shall
  32713.  show which ones need to be deleted or changed in _f_i_l_e_1, and those added
  32714.  from _f_i_l_e_2. With the -c option, three lines of context, if available,
  32715.  shall be written before and after the affected lines.  With the -C
  32716.  option, the user can specify how many lines of context shall be written.
  32717.  The exact format follows.
  32718.  
  32719.  The name and last modification time of each file shall be output in the
  32720.  following format:
  32721.  
  32722.        "*** %s %s\n", _f_i_l_e_1, <_f_i_l_e_1 _t_i_m_e _s_t_a_m_p>
  32723.        "--- %s %s\n", _f_i_l_e_2, <_f_i_l_e_2 _t_i_m_e _s_t_a_m_p>
  32724.  
  32725.  
  32726.  
  32727.                Copyright c 1991 IEEE.  All rights reserved.
  32728.       This is an unapproved IEEE Standards Draft, subject to change.
  32729.  
  32730.  
  32731.  
  32732.  
  32733.  
  32734.  466                                     4 Execution Environment Utilities
  32735.  
  32736.  
  32737.  
  32738.  
  32739.  
  32740.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  32741.  
  32742.  and a string of 15 asterisks:
  32743.  
  32744.        "***************\n"
  32745.  
  32746.  Each <_f_i_l_e> field shall be the pathname of the corresponding file being
  32747.  compared.  The pathname written for standard input is unspecified.
  32748.  
  32749.  In the POSIX Locale, each <_t_i_m_e _s_t_a_m_p> field shall be equivalent to the
  32750.  output from the following command:
  32751.  
  32752.        date "+%a %b %e %T %Y"
  32753.  
  32754.  without the trailing <newline>, executed at the time of last modification
  32755.  of the corresponding file (or the current time, if the file is standard
  32756.  input).
  32757.  
  32758.  Then, the following output formats shall be applied for every set of
  32759.  changes.
  32760.  
  32761.  First, the range of lines in _f_i_l_e_1 shall be written in the following
  32762.  format:
  32763.  
  32764.        "*** %d,%d ****\n", <_b_e_g_i_n_n_i_n_g _l_i_n_e _n_u_m_b_e_r>, <_e_n_d_i_n_g _l_i_n_e _n_u_m_b_e_r>
  32765.  
  32766.  Next, the affected lines along with lines of context (unaffected lines)
  32767.  shall be written.  Unaffected lines shall be written in the following
  32768.  format:
  32769.  
  32770.        "WW%s", <_u_n_a_f_f_e_c_t_e_d__l_i_n_e>
  32771.  
  32772.  Deleted lines shall be written as:
  32773.  
  32774.        "-W%s", <_d_e_l_e_t_e_d__l_i_n_e>
  32775.  
  32776.  Changed lines shall be written as:
  32777.  
  32778.        "!W%s", <_c_h_a_n_g_e_d__l_i_n_e>
  32779.  
  32780.  Next, the range of lines in _f_i_l_e_2 shall be written in the following
  32781.  format:
  32782.  
  32783.        "--- %d,%d ----\n", <_b_e_g_i_n_n_i_n_g _l_i_n_e _n_u_m_b_e_r>, <_e_n_d_i_n_g _l_i_n_e _n_u_m_b_e_r>
  32784.  
  32785.  Then, lines of context and changed lines shall be written as described in
  32786.  the previous formats.  Lines added from _f_i_l_e_2 shall be written in the
  32787.  following format:
  32788.  
  32789.        "+W%s", <_a_d_d_e_d__l_i_n_e>
  32790.  
  32791.  
  32792.  
  32793.                Copyright c 1991 IEEE.  All rights reserved.
  32794.       This is an unapproved IEEE Standards Draft, subject to change.
  32795.  
  32796.  
  32797.  
  32798.  
  32799.  
  32800.  4.17 diff - Compare two files                                         467
  32801.  
  32802.  
  32803.  
  32804.  
  32805.  
  32806.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  32807.  
  32808.  4.17.6.2  Standard Error
  32809.  
  32810.  Used only for diagnostic messages.
  32811.  
  32812.  
  32813.  4.17.6.3  Output Files
  32814.  
  32815.  None.
  32816.  
  32817.  
  32818.  4.17.7  Extended Description
  32819.  
  32820.  None.
  32821.  
  32822.  
  32823.  4.17.8  Exit Status
  32824.  
  32825.  The diff utility shall exit with one of the following values:
  32826.  
  32827.      0    No differences were found.
  32828.  
  32829.      1    Differences were found.
  32830.  
  32831.     >1    An error occurred.
  32832.  
  32833.  
  32834.  4.17.9  Consequences of Errors
  32835.  
  32836.  Default.
  32837.  
  32838.  BEGIN_RATIONALE
  32839.  
  32840.  
  32841.  4.17.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  32842.  
  32843.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  32844.  
  32845.  If lines at the end of a file are changed and other lines are added, diff
  32846.  output may show this as a delete and add, as a change, or as a change and
  32847.  add; diff is not expected to know which happened and users should not
  32848.  care about the difference in output as long as it clearly shows the
  32849.  differences between the files.
  32850.  
  32851.  If dir1 is a directory containing a directory named x, dir2 is a
  32852.  directory containing a directory named x, dir1/x and dir2/x both contain
  32853.  files named date.out, and dir2/x contains a file named y, the command:
  32854.  
  32855.        diff -r dir1 dir2
  32856.  
  32857.  could produce output similar to:
  32858.  
  32859.                Copyright c 1991 IEEE.  All rights reserved.
  32860.       This is an unapproved IEEE Standards Draft, subject to change.
  32861.  
  32862.  
  32863.  
  32864.  
  32865.  
  32866.  468                                     4 Execution Environment Utilities
  32867.  
  32868.  
  32869.  
  32870.  
  32871.  
  32872.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  32873.  
  32874.        Common subdirectories: dir1/x and dir2/x
  32875.        Only in dir2/x: y
  32876.        diff -r dir1/x/date.out dir2/x/date.out
  32877.        1c1
  32878.        < Mon Jul  2 13:12:16 PDT 1990
  32879.        ---
  32880.        > Tue Jun 19 21:41:39 PDT 1990
  32881.  
  32882.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  32883.  
  32884.  The -h option was removed because it was insufficiently specified and it
  32885.  does not add to application portability.
  32886.  
  32887.  Current implementations employ algorithms that do not always produce a
  32888.  minimum list of differences; the current language about making every
  32889.  effort is the best the standard can do, as there is no metric that could
  32890.  be employed to judge the quality of implementations against any and all
  32891.  file contents.  The statement ``This list should be minimal'' clearly
  32892.  implies that implementations are not expected to provide the following
  32893.  output when comparing two 100-line files that differ in only one
  32894.  character on a single line:
  32895.  
  32896.        1,100c1,100
  32897.        all 100 lines from file1 preceded with "< "
  32898.        ---
  32899.        all 100 lines from file2 preceded with "> "
  32900.  
  32901.  The ``Only in'' messages required by this standard when the -r option is
  32902.  specified, is not used by most historical implementations if the -e
  32903.  option is also specified.  It is required here because it provides useful
  32904.  information that must be provided to update a target directory hierarchy
  32905.  to match a source hierarchy.  The ``Common subdirectories'' messages are
  32906.  written by System V and 4.3BSD when the -r option is specified.  They are
  32907.  allowed here, but are not required because they are reporting on
  32908.  something that is the same, not reporting a difference, and are not
  32909.  needed to update a target hierarchy.
  32910.  
  32911.  The -c option, which writes output in a format using lines of context,
  32912.  has been included.  The format is useful for a variety of reasons, among
  32913.  them being much improved readability, and the ability to understand
  32914.  difference changes when the target file has line numbers that differ from
  32915.  another similar, but slightly different, copy.  An important utility,
  32916.  patch, which has proved itself indispensable to the USENET community,
  32917.  often only works with difference listings using the context format.  The
  32918.  BSD version of -c takes an optional argument specifying the amount of
  32919.  context.  Rather than overloading -c and breaking the Utility Syntax
  32920.  Guidelines for diff, the working group decided to add a separate option
  32921.  for specifying a context diff with a specified amount of context (-C).
  32922.  Also, the format for context diffs was extended slightly in 4.3BSD to
  32923.  
  32924.  
  32925.                Copyright c 1991 IEEE.  All rights reserved.
  32926.       This is an unapproved IEEE Standards Draft, subject to change.
  32927.  
  32928.  
  32929.  
  32930.  
  32931.  
  32932.  4.17 diff - Compare two files                                         469
  32933.  
  32934.  
  32935.  
  32936.  
  32937.  
  32938.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  32939.  
  32940.  allow multiple changes that are within context lines from each other to
  32941.  be merged together.  The output format contains an additional four
  32942.  asterisks after the range of affected lines in the first filename.  This
  32943.  was to provide a flag for old programs (like old versions of patch) that
  32944.  only understand the old context format.  The version of context described
  32945.  here does not require that multiple changes within context lines be
  32946.  merged, but does not prohibit it either.  The extension is upward
  32947.  compatible, so any vendors that wish to retain the old version of diff
  32948.  can do so by just adding the extra four asterisks (that is, utilities
  32949.  that currently use diff and understand the new merged format will also
  32950.  understand the old unmerged format, but not vice-versa).
  32951.  
  32952.  The substitute command was added as an additional format for the -e
  32953.  option.  This was added to provide implementations a way to fix the
  32954.  classic ``dot alone on a line'' bug present in many versions of diff.
  32955.  Since many implementations have fixed this bug the working group decided
  32956.  not to standardize broken behavior, but rather, provide the necessary
  32957.  tool for fixing the bug.  One way to fix this bug is to output two
  32958.  periods whenever a lone period is needed, then terminate the append
  32959.  command with a period, and then use the substitute command to convert the
  32960.  two periods into one period.
  32961.  
  32962.  The -f flag was not included as it provides no additional functionality
  32963.  over the -e option.
  32964.  
  32965.  The BSD-derived -r option was added to provide a mechanism for using diff
  32966.  to compare two file system trees.  This behavior is useful, is standard
  32967.  practice on all BSD-derived systems, and is not easily reproducible with
  32968.  the find utility.
  32969.  
  32970.  The requirement that diff not compare files in some circumstances, even
  32971.  though they have the same name, was added in response to ballot
  32972.  objections and digging further into the actual output of historical
  32973.  implementations.  The message specified here is already in use when a
  32974.  directory is being compared to a nondirectory.  It is extended here to
  32975.  preclude the problems arising from running into FIFOs and other files
  32976.  that would cause diff to hang waiting for input with no indication to the
  32977.  user that diff was hung.  In most common usage, diff -r should indicate
  32978.  differences in the file hierarchies, not the difference of contents of
  32979.  devices pointed to by the hierarchies.
  32980.  
  32981.  Many early implementations of diff require seekable files.  Since
  32982.  POSIX.1 {8} supports named pipes, the working group decided that such a
  32983.  restriction was unreasonable.  Note also that the allowed file name -
  32984.  almost always refers to a pipe.
  32985.  
  32986.  No directory search order is being specified in 4.17.6.1.1.  The
  32987.  historical ordering is, in fact, not optimal, in that it prints out all
  32988.  of the differences at the current level, including the statements about
  32989.  
  32990.  
  32991.                Copyright c 1991 IEEE.  All rights reserved.
  32992.       This is an unapproved IEEE Standards Draft, subject to change.
  32993.  
  32994.  
  32995.  
  32996.  
  32997.  
  32998.  470                                     4 Execution Environment Utilities
  32999.  
  33000.  
  33001.  
  33002.  
  33003.  
  33004.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  33005.  
  33006.  all common subdirectories before recursing into those subdirectories.
  33007.  
  33008.  The message                                                                2
  33009.  
  33010.        "diff %s %s %s\n", <_d_i_f_f__o_p_t_i_o_n_s>, <_f_i_l_e_n_a_m_e_1>, <_f_i_l_e_n_a_m_e_2>          2
  33011.  
  33012.  does not vary by locale because it is the representation of a command,     2
  33013.  not an English sentence.                                                   2
  33014.  
  33015.  END_RATIONALE                                                              2
  33016.  
  33017.  
  33018.  
  33019.  4.18  dirname - Return directory portion of pathname
  33020.  
  33021.  
  33022.  4.18.1  Synopsis
  33023.  
  33024.  dirname  _s_t_r_i_n_g
  33025.  
  33026.  
  33027.  4.18.2  Description
  33028.  
  33029.  The _s_t_r_i_n_g operand shall be treated as a pathname, as defined in
  33030.  2.2.2.102.  The string _s_t_r_i_n_g shall be converted to the name of the
  33031.  directory containing the filename corresponding to the last pathname
  33032.  component in _s_t_r_i_n_g, performing actions equivalent to the following steps
  33033.  in order:
  33034.  
  33035.      (1)  If _s_t_r_i_n_g is //, skip steps (2) through (5).
  33036.  
  33037.      (2)  If _s_t_r_i_n_g consists entirely of slash characters, _s_t_r_i_n_g shall be
  33038.           set to a single slash character.  In this case, skip steps (3)
  33039.           through (8).
  33040.  
  33041.      (3)  If there are any trailing slash characters in _s_t_r_i_n_g, they shall
  33042.           be removed.
  33043.  
  33044.      (4)  If there are no slash characters remaining in _s_t_r_i_n_g, _s_t_r_i_n_g
  33045.           shall be set to a single period character.  In this case, skip
  33046.           steps (5) through (8).
  33047.  
  33048.      (5)  If there are any trailing nonslash characters in _s_t_r_i_n_g, they
  33049.           shall be removed.
  33050.  
  33051.      (6)  If the remaining _s_t_r_i_n_g is //, it is implementation defined
  33052.           whether steps (7) and (8) are skipped or processed.
  33053.  
  33054.  
  33055.  
  33056.  
  33057.                Copyright c 1991 IEEE.  All rights reserved.
  33058.       This is an unapproved IEEE Standards Draft, subject to change.
  33059.  
  33060.  
  33061.  
  33062.  
  33063.  
  33064.  4.18 dirname - Return directory portion of pathname                   471
  33065.  
  33066.  
  33067.  
  33068.  
  33069.  
  33070.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  33071.  
  33072.      (7)  If there are any trailing slash characters in _s_t_r_i_n_g, they shall
  33073.           be removed.
  33074.  
  33075.      (8)  If the remaining _s_t_r_i_n_g is empty, _s_t_r_i_n_g shall be set to a
  33076.           single slash character.
  33077.  
  33078.  The resulting string shall be written to standard output.
  33079.  
  33080.  
  33081.  4.18.3  Options
  33082.  
  33083.  None.
  33084.  
  33085.  
  33086.  4.18.4  Operands
  33087.  
  33088.  The following operand shall be supported by the implementation:
  33089.  
  33090.     _s_t_r_i_n_g      A string.
  33091.  
  33092.  
  33093.  4.18.5  External Influences
  33094.  
  33095.  
  33096.  4.18.5.1  Standard Input
  33097.  
  33098.  None.
  33099.  
  33100.  4.18.5.2  Input Files
  33101.  
  33102.  None.
  33103.  
  33104.  
  33105.  4.18.5.3  Environment Variables
  33106.  
  33107.  The following environment variables shall affect the execution of
  33108.  dirname:
  33109.  
  33110.     LANG               This variable shall determine the locale to use for
  33111.                        the locale categories when both LC_ALL and the
  33112.                        corresponding environment variable (beginning with
  33113.                        LC_) do not specify a locale.  See 2.6.
  33114.  
  33115.     LC_ALL             This variable shall determine the locale to be used
  33116.                        to override any values for locale categories
  33117.                        specified by the settings of LANG or any
  33118.                        environment variables beginning with LC_.
  33119.  
  33120.  
  33121.  
  33122.  
  33123.                Copyright c 1991 IEEE.  All rights reserved.
  33124.       This is an unapproved IEEE Standards Draft, subject to change.
  33125.  
  33126.  
  33127.  
  33128.  
  33129.  
  33130.  472                                     4 Execution Environment Utilities
  33131.  
  33132.  
  33133.  
  33134.  
  33135.  
  33136.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  33137.  
  33138.     LC_CTYPE           This variable shall determine the locale for the
  33139.                        interpretation of sequences of bytes of text data
  33140.                        as characters (e.g., single- versus multibyte
  33141.                        characters in arguments).
  33142.  
  33143.     LC_MESSAGES        This variable shall determine the language in which
  33144.                        messages should be written.
  33145.  
  33146.  
  33147.  4.18.5.4  Asynchronous Events
  33148.  
  33149.  Default.
  33150.  
  33151.  
  33152.  4.18.6  External Effects
  33153.  
  33154.  4.18.6.1  Standard Output
  33155.  
  33156.  The dirname utility shall write a line to the standard output in the
  33157.  following format:
  33158.  
  33159.        "%s\n", <_r_e_s_u_l_t_i_n_g _s_t_r_i_n_g>
  33160.  
  33161.  
  33162.  4.18.6.2  Standard Error
  33163.  
  33164.  Used only for diagnostic messages.
  33165.  
  33166.  4.18.6.3  Output Files
  33167.  
  33168.  None.
  33169.  
  33170.  
  33171.  4.18.7  Extended Description
  33172.  
  33173.  None.
  33174.  
  33175.  
  33176.  4.18.8  Exit Status
  33177.  
  33178.  The dirname utility shall exit with one of the following values:
  33179.  
  33180.      0    Successful completion.
  33181.  
  33182.     >0    An error occurred.
  33183.  
  33184.  
  33185.  
  33186.  
  33187.  
  33188.  
  33189.                Copyright c 1991 IEEE.  All rights reserved.
  33190.       This is an unapproved IEEE Standards Draft, subject to change.
  33191.  
  33192.  
  33193.  
  33194.  
  33195.  
  33196.  4.18 dirname - Return directory portion of pathname                   473
  33197.  
  33198.  
  33199.  
  33200.  
  33201.  
  33202.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  33203.  
  33204.  4.18.9  Consequences of Errors
  33205.  
  33206.  Default.
  33207.  
  33208.  BEGIN_RATIONALE
  33209.  
  33210.  
  33211.  4.18.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  33212.  
  33213.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  33214.  
  33215.  The dirname utility originated in System III.  It has evolved through the
  33216.  System V releases to a version that matches the requirements specified in
  33217.  this description in System V Release 3.
  33218.  
  33219.  4.3BSD and earlier versions did not include dirname.
  33220.  
  33221.  Table 4-6 indicates the results required for some invocations of dirname.
  33222.  
  33223.  
  33224.                       Table 4-6  -  dirname Examples
  33225.  __________________________________________________________________________________________________________________________________________________
  33226.                           Command          Results
  33227.                       ______________________________
  33228.  
  33229.                       dirname /          /
  33230.                       dirname //         / or //
  33231.                       dirname /a/b/      /a
  33232.                       dirname //a//b//   //a
  33233.                       dirname            _u_n_s_p_e_c_i_f_i_e_d
  33234.                       dirname a          . ($? = 0)
  33235.                       dirname ""         . ($? = 0)
  33236.                       dirname /a         /
  33237.                       dirname /a/b       /a
  33238.                       dirname a/b        a
  33239.  __________________________________________________________________________________________________________________________________________________
  33240.  
  33241.  
  33242.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  33243.  
  33244.  The behaviors of basename and dirname in this standard have been
  33245.  coordinated so that when _s_t_r_i_n_g is a valid pathname
  33246.  
  33247.        $(basename "string")
  33248.  
  33249.  would be a valid filename for the file in the directory
  33250.  
  33251.        $(dirname "string")
  33252.  
  33253.  
  33254.  
  33255.                Copyright c 1991 IEEE.  All rights reserved.
  33256.       This is an unapproved IEEE Standards Draft, subject to change.
  33257.  
  33258.  
  33259.  
  33260.  
  33261.  
  33262.  474                                     4 Execution Environment Utilities
  33263.  
  33264.  
  33265.  
  33266.  
  33267.  
  33268.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  33269.  
  33270.  This would not work for the versions of these utilities in earlier drafts
  33271.  due to the way processing of trailing slashes was specified.
  33272.  Consideration was given to leaving processing unspecified if there were
  33273.  trailing slashes, but this cannot be done; the POSIX.1 {8} definition of
  33274.  pathname allows trailing slashes.  The basename and dirname utilities
  33275.  have to specify consistent handling for all valid pathnames.
  33276.  
  33277.  Since the definition of _p_a_t_h_n_a_m_e in 2.2.2.102 specifies implementation-
  33278.  defined behavior for pathnames starting with two slash characters, Draft
  33279.  11 has been changed to specify similar implementation-defined behavior
  33280.  for the basename and dirname utilities.  On implementations where the
  33281.  pathname // is always treated the same as the pathname /, the
  33282.  functionality required by Draft 10 meets all of the Draft 11
  33283.  requirements.
  33284.  
  33285.  END_RATIONALE
  33286.  
  33287.  
  33288.  
  33289.  4.19  echo - Write arguments to standard output
  33290.  
  33291.  
  33292.  4.19.1  Synopsis
  33293.  
  33294.  echo  [_s_t_r_i_n_g ...]
  33295.  
  33296.  
  33297.  4.19.2  Description
  33298.  
  33299.  The echo utility shall write its arguments to standard output, followed
  33300.  by a <newline> character.  If there are no arguments, only the <newline>
  33301.  character shall be written.
  33302.  
  33303.  
  33304.  4.19.3  Options
  33305.  
  33306.  The echo utility shall not recognize the -- argument in the manner
  33307.  specified by utility syntax guideline 10 in 2.10.2; -- shall be
  33308.  recognized as a string operand.
  33309.  
  33310.  Implementations need not support any options.
  33311.  
  33312.  
  33313.  4.19.4  Operands
  33314.  
  33315.  The following operands shall be supported by the implementation:
  33316.  
  33317.  
  33318.  
  33319.  
  33320.  
  33321.                Copyright c 1991 IEEE.  All rights reserved.
  33322.       This is an unapproved IEEE Standards Draft, subject to change.
  33323.  
  33324.  
  33325.  
  33326.  
  33327.  
  33328.  4.19 echo - Write arguments to standard output                        475
  33329.  
  33330.  
  33331.  
  33332.  
  33333.  
  33334.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  33335.  
  33336.     _s_t_r_i_n_g      A string to be written to standard output.  If the first
  33337.                 operand is "-n" or if any of the operands contain a
  33338.                 backslash (\) character, the results are implementation
  33339.                 defined.
  33340.  
  33341.  
  33342.  4.19.5  External Influences
  33343.  
  33344.  
  33345.  4.19.5.1  Standard Input
  33346.  
  33347.  None.
  33348.  
  33349.  4.19.5.2  Input Files
  33350.  
  33351.  None.
  33352.  
  33353.  
  33354.  4.19.5.3  Environment Variables
  33355.  
  33356.  The following environment variables shall affect the execution of echo:
  33357.  
  33358.     LANG               This variable shall determine the locale to use for
  33359.                        the locale categories when both LC_ALL and the
  33360.                        corresponding environment variable (beginning with
  33361.                        LC_) do not specify a locale.  See 2.6.
  33362.  
  33363.     LC_ALL             This variable shall determine the locale to be used
  33364.                        to override any values for locale categories
  33365.                        specified by the settings of LANG or any
  33366.                        environment variables beginning with LC_.
  33367.  
  33368.     LC_MESSAGES        This variable shall determine the language in which
  33369.                        diagnostic messages should be written.
  33370.  
  33371.  4.19.5.4  Asynchronous Events
  33372.  
  33373.  Default.
  33374.  
  33375.  
  33376.  4.19.6  External Effects
  33377.  
  33378.  
  33379.  4.19.6.1  Standard Output
  33380.  
  33381.  The echo utility arguments shall be separated by single <space>s and a
  33382.  <newline> character shall follow the last argument.
  33383.  
  33384.  
  33385.  
  33386.  
  33387.                Copyright c 1991 IEEE.  All rights reserved.
  33388.       This is an unapproved IEEE Standards Draft, subject to change.
  33389.  
  33390.  
  33391.  
  33392.  
  33393.  
  33394.  476                                     4 Execution Environment Utilities
  33395.  
  33396.  
  33397.  
  33398.  
  33399.  
  33400.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  33401.  
  33402.  4.19.6.2  Standard Error
  33403.  
  33404.  Used only for diagnostic messages.
  33405.  
  33406.  
  33407.  4.19.6.3  Output Files
  33408.  
  33409.  None.
  33410.  
  33411.  
  33412.  4.19.7  Extended Description
  33413.  
  33414.  None.
  33415.  
  33416.  
  33417.  4.19.8  Exit Status
  33418.  
  33419.  The echo utility shall exit with one of the following values:
  33420.  
  33421.      0    Successful completion.
  33422.  
  33423.     >0    An error occurred.
  33424.  
  33425.  
  33426.  4.19.9  Consequences of Errors
  33427.  
  33428.  Default.
  33429.  
  33430.  BEGIN_RATIONALE
  33431.  
  33432.  
  33433.  4.19.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  33434.  
  33435.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  33436.  
  33437.  As specified by this standard, echo writes its arguments in the simplest
  33438.  of ways.  The two different historical versions of echo vary in fatal
  33439.  incompatible ways.
  33440.  
  33441.  The BSD echo checks the first argument for the string "-n", which causes
  33442.  it to suppress the <newline> character that would otherwise follow the
  33443.  final argument in the output.
  33444.  
  33445.  The System V echo does not support any options, but allows escape
  33446.  sequences within its operands:
  33447.  
  33448.     \a    Write an <alert> character.
  33449.  
  33450.  
  33451.  
  33452.  
  33453.                Copyright c 1991 IEEE.  All rights reserved.
  33454.       This is an unapproved IEEE Standards Draft, subject to change.
  33455.  
  33456.  
  33457.  
  33458.  
  33459.  
  33460.  4.19 echo - Write arguments to standard output                        477
  33461.  
  33462.  
  33463.  
  33464.  
  33465.  
  33466.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  33467.  
  33468.     \b    Write a <backspace> character.
  33469.  
  33470.     \c    Suppress the <newline> character that otherwise follows the
  33471.           final argument in the output.  All characters following the \c
  33472.           in the arguments are ignored.
  33473.  
  33474.     \f    Write a <form-feed> character.
  33475.  
  33476.     \n    Write a <newline> character.
  33477.  
  33478.     \r    Write a <carriage-return> character.
  33479.  
  33480.     \t    Write a <tab> character.
  33481.  
  33482.     \v    Write a <vertical-tab> character.
  33483.  
  33484.     \\    Write a backslash character.
  33485.  
  33486.     \0_n_u_m
  33487.           Write an 8-bit value that is the 1-, 2-, or 3-digit octal number
  33488.           _n_u_m.
  33489.  
  33490.  It is not possible to use echo portably across these two implementations
  33491.  unless both -n (as the first argument) and escape sequences are omitted.
  33492.  
  33493.  The printf utility (see 4.50) can be used to portably emulate any of the
  33494.  traditional behaviors of the echo utility as follows:
  33495.  
  33496.      - The System V echo is equivalent to:
  33497.  
  33498.              printf "%b\n" "$*"
  33499.  
  33500.      - The BSD echo is equivalent to:
  33501.  
  33502.              if [ "X$1" = "X-n" ]
  33503.              then
  33504.                      shift
  33505.                      printf "%s" "$*"
  33506.              else
  33507.                      printf "%s\n" "$*"
  33508.              fi
  33509.  
  33510.  The echo utility does not support utility syntax guideline 10 because
  33511.  existing applications depend on echo to echo _a_l_l of its arguments, except
  33512.  for the -n option in the BSD version.
  33513.  
  33514.  New applications are encouraged to use printf instead of echo.  The echo
  33515.  utility has not been made obsolescent because of its extremely widespread
  33516.  use in existing applications.
  33517.  
  33518.  
  33519.                Copyright c 1991 IEEE.  All rights reserved.
  33520.       This is an unapproved IEEE Standards Draft, subject to change.
  33521.  
  33522.  
  33523.  
  33524.  
  33525.  
  33526.  478                                     4 Execution Environment Utilities
  33527.  
  33528.  
  33529.  
  33530.  
  33531.  
  33532.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  33533.  
  33534.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  33535.  
  33536.  In Draft 8, an attempt was made to merge the extensions of BSD and
  33537.  System V, supporting both -n and escape sequences.  During initial ballot
  33538.  resolution, a -e option was proposed to enable the escape conventions.
  33539.  Both attempts failed, as there are historical scripts that would be
  33540.  broken by any attempt at reconciliation.  Therefore, in Draft 9 only the
  33541.  simplest version of echo is presented.  Implementation-defined extensions
  33542.  on BSD and System V will keep historical applications content.  Portable
  33543.  applications that wish to do prompting without <newline>s or that could
  33544.  possibly be expecting to echo a "-n", should use the new printf utility
  33545.  (see 4.50), derived from the Ninth Edition.
  33546.  
  33547.  The LC_CTYPE variable is not cited because echo, as specified here, does
  33548.  not need to understand the characters in its arguments.  The System V and
  33549.  BSD implementations might need to be sensitive to it because of their
  33550.  extensions.
  33551.  
  33552.  END_RATIONALE
  33553.  
  33554.  
  33555.  
  33556.  4.20  ed - Edit text
  33557.  
  33558.  
  33559.  4.20.1  Synopsis
  33560.  
  33561.  ed  [-p _s_t_r_i_n_g] [-s] [_f_i_l_e]
  33562.  
  33563.  _O_b_s_o_l_e_s_c_e_n_t _V_e_r_s_i_o_n:
  33564.  
  33565.  ed  [-p _s_t_r_i_n_g] [-] [_f_i_l_e]
  33566.  
  33567.  
  33568.  4.20.2  Description
  33569.  
  33570.  The ed utility is a line-oriented text editor that shall use two modes:
  33571.  _c_o_m_m_a_n_d _m_o_d_e and _i_n_p_u_t _m_o_d_e.  In command mode the input characters shall
  33572.  be interpreted as commands, and in input mode they shall be interpreted
  33573.  as text.  See 4.20.7.
  33574.  
  33575.  
  33576.  4.20.3  Options
  33577.  
  33578.  The ed utility shall conform to the utility argument syntax guidelines
  33579.  described in 2.10.2, except for its nonstandard usage of - in the
  33580.  obsolescent version.
  33581.  
  33582.  
  33583.  
  33584.  
  33585.                Copyright c 1991 IEEE.  All rights reserved.
  33586.       This is an unapproved IEEE Standards Draft, subject to change.
  33587.  
  33588.  
  33589.  
  33590.  
  33591.  
  33592.  4.20 ed - Edit text                                                   479
  33593.  
  33594.  
  33595.  
  33596.  
  33597.  
  33598.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  33599.  
  33600.  The following options shall be supported by the implementation:
  33601.  
  33602.     -p _s_t_r_i_n_g   Use _s_t_r_i_n_g as the prompt string when in command mode.  By
  33603.                 default, there shall be no prompt string.
  33604.  
  33605.     -s          Suppress the writing of byte counts by e, E, r, and w
  33606.                 commands and of the ! prompt after a !_c_o_m_m_a_n_d.
  33607.  
  33608.     -           (Obsolescent.)  Equivalent to the -s option.
  33609.  
  33610.  
  33611.  4.20.4  Operands
  33612.  
  33613.  The following operand shall be supported by the implementation:
  33614.  
  33615.     _f_i_l_e        If the _f_i_l_e argument is given, ed shall simulate an e
  33616.                 command on the file named by the pathname, _f_i_l_e, before
  33617.                 accepting commands from the standard input.
  33618.  
  33619.  
  33620.  4.20.5  External Influences
  33621.  
  33622.  
  33623.  4.20.5.1  Standard Input
  33624.  
  33625.  The standard input shall be a text file consisting of commands, as
  33626.  described in 4.20.7.
  33627.  
  33628.  4.20.5.2  Input Files
  33629.  
  33630.  The input files shall be text files.
  33631.  
  33632.  
  33633.  4.20.5.3  Environment Variables
  33634.  
  33635.  The following environment variables shall affect the execution of ed:
  33636.  
  33637.     HOME               This variable shall determine the pathname of the
  33638.                        user's home directory.
  33639.  
  33640.     LANG               This variable shall determine the locale to use for
  33641.                        the locale categories when both LC_ALL and the
  33642.                        corresponding environment variable (beginning with
  33643.                        LC_) do not specify a locale.  See 2.6.
  33644.  
  33645.     LC_ALL             This variable shall determine the locale to be used
  33646.                        to override any values for locale categories
  33647.                        specified by the settings of LANG or any
  33648.                        environment variables beginning with LC_.
  33649.  
  33650.  
  33651.                Copyright c 1991 IEEE.  All rights reserved.
  33652.       This is an unapproved IEEE Standards Draft, subject to change.
  33653.  
  33654.  
  33655.  
  33656.  
  33657.  
  33658.  480                                     4 Execution Environment Utilities
  33659.  
  33660.  
  33661.  
  33662.  
  33663.  
  33664.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  33665.  
  33666.     LC_COLLATE         This variable shall determine the locale for the
  33667.                        behavior of ranges, equivalence classes, and
  33668.                        multicharacter collating elements within regular
  33669.                        expressions.
  33670.  
  33671.     LC_CTYPE           This variable shall determine the locale for the
  33672.                        interpretation of sequences of bytes of text data
  33673.                        as characters (e.g., single- versus multibyte
  33674.                        characters in arguments and input files), the
  33675.                        behavior of character classes within regular
  33676.                        expressions.
  33677.  
  33678.     LC_MESSAGES        This variable shall determine the language in which
  33679.                        messages should be written.
  33680.  
  33681.  
  33682.  4.20.5.4  Asynchronous Events
  33683.  
  33684.  The ed utility shall take the standard action for all signals (see
  33685.  2.11.5.4), with the following exceptions:
  33686.  
  33687.     SIGINT      The ed utility shall interrupt its current activity, write
  33688.                 the string
  33689.  
  33690.                       "?\n"
  33691.  
  33692.                 to standard output, and return to command mode (see
  33693.                 4.20.7).
  33694.  
  33695.     SIGHUP      If the buffer is not empty and has changed since the last
  33696.                 write, the ed utility shall attempt to write a copy of the
  33697.                 buffer in a file.  First, the file named ed.hup in the
  33698.                 current directory shall be used; if that fails, the file
  33699.                 named ed.hup in the directory named by the HOME
  33700.                 environment variable shall be used.  In any case, the ed
  33701.                 utility shall exit without returning to command mode.
  33702.  
  33703.  
  33704.  4.20.6  External Effects
  33705.  
  33706.  4.20.6.1  Standard Output
  33707.  
  33708.  Various editing commands and the prompting feature (see -p) write to
  33709.  standard output, as described in 4.20.7.
  33710.  
  33711.  
  33712.  
  33713.  
  33714.  
  33715.  
  33716.  
  33717.                Copyright c 1991 IEEE.  All rights reserved.
  33718.       This is an unapproved IEEE Standards Draft, subject to change.
  33719.  
  33720.  
  33721.  
  33722.  
  33723.  
  33724.  4.20 ed - Edit text                                                   481
  33725.  
  33726.  
  33727.  
  33728.  
  33729.  
  33730.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  33731.  
  33732.  4.20.6.2  Standard Error
  33733.  
  33734.  Used only for diagnostic messages.
  33735.  
  33736.  
  33737.  4.20.6.3  Output Files
  33738.  
  33739.  The output files shall be text files whose formats are dependent on the
  33740.  editing commands given.
  33741.  
  33742.  
  33743.  4.20.7  Extended Description
  33744.  
  33745.  The ed utility shall operate on a copy of the file it is editing; changes
  33746.  made to the copy shall have no effect on the file until a w (write)
  33747.  command is given.  The copy of the text is called the _b_u_f_f_e_r in this
  33748.  clause, although no attempt is made to imply a specific implementation.
  33749.  
  33750.  Commands to ed have a simple and regular structure: zero, one, or two
  33751.  _a_d_d_r_e_s_s_e_s followed by a single-character _c_o_m_m_a_n_d, possibly followed by
  33752.  parameters to that command.  These addresses specify one or more lines in
  33753.  the buffer.  Every command that requires addresses has default addresses,
  33754.  so that the addresses very often can be omitted.  If the -p option is
  33755.  specified, the prompt string shall be written to standard output before
  33756.  each command is read.
  33757.  
  33758.  In general, only one command can appear on a line.  Certain commands
  33759.  allow text to be input.  This text is placed in the appropriate place in
  33760.  the buffer.  While ed is accepting text, it is said to be in _i_n_p_u_t _m_o_d_e.
  33761.  In this mode, no commands shall be recognized; all input is merely
  33762.  collected.  Input mode is terminated by entering a line consisting of two
  33763.  characters:  a period (.) followed by a <newline>.  This line is not
  33764.  considered part of the input text.
  33765.  
  33766.  _4._2_0._7._1  ed _R_e_g_u_l_a_r _E_x_p_r_e_s_s_i_o_n_s
  33767.  
  33768.  The ed utility shall support basic regular expressions, as described in
  33769.  2.8.3.  Since regular expressions in ed are always matched against single
  33770.  lines, never against any larger section of text, there is no way for a
  33771.  regular expression to match a <newline>.  A null RE shall be equivalent
  33772.  to the last RE encountered.
  33773.  
  33774.  Regular expressions are used in addresses to specify lines, and in some
  33775.  commands (for example, the s substitute command) to specify portions of a
  33776.  line to be substituted.
  33777.  
  33778.  
  33779.  
  33780.  
  33781.  
  33782.  
  33783.                Copyright c 1991 IEEE.  All rights reserved.
  33784.       This is an unapproved IEEE Standards Draft, subject to change.
  33785.  
  33786.  
  33787.  
  33788.  
  33789.  
  33790.  482                                     4 Execution Environment Utilities
  33791.  
  33792.  
  33793.  
  33794.  
  33795.  
  33796.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  33797.  
  33798.  _4._2_0._7._2  ed _A_d_d_r_e_s_s_e_s
  33799.  
  33800.  Addressing in ed relates to the _c_u_r_r_e_n_t _l_i_n_e.  Generally, the current
  33801.  line is the last line affected by a command.  The _c_u_r_r_e_n_t _l_i_n_e _n_u_m_b_e_r is
  33802.  the address (line number) of the current line.  The exact effect on the
  33803.  current line number is discussed under the description of each command.
  33804.  The f, h, H, k, P, w, =, and ! commands shall not modify the current line
  33805.  number.
  33806.  
  33807.  Addresses are constructed as follows:
  33808.  
  33809.      (1)  The character . (period) shall address the current line.
  33810.  
  33811.      (2)  The character $ shall address the last line of the buffer.
  33812.  
  33813.      (3)  A positive decimal number _n shall address the _n-th line of the
  33814.           buffer.  The first line in the buffer is line number 1.
  33815.  
  33816.      (4)  '_x shall address the line marked with the mark name character _x,
  33817.           which shall be a lowercase letter from the portable character
  33818.           set.  Lines can be marked with the k command described in
  33819.           4.20.7.3.13.
  33820.  
  33821.      (5)  An RE enclosed by slashes (/) shall address the first line found
  33822.           by searching forward from the line following the current line
  33823.           toward the end of the buffer and stopping at the first line
  33824.           containing a string matching the RE.  [As stated in 4.20.7.1, an
  33825.           address consisting of a null RE delimited by slashes (//) shall
  33826.           address the next line containing the last RE encountered.]  If
  33827.           necessary, the search shall wrap around to the beginning of the
  33828.           buffer and continue up to and including the current line, so
  33829.           that the entire buffer is searched.  Within the RE, the sequence
  33830.           \/ shall represent a literal slash instead of the RE delimiter.
  33831.  
  33832.      (6)  An RE enclosed in question-marks (?) shall address the first
  33833.           line found by searching backward from the line preceding the
  33834.           current line toward the beginning of the buffer and stopping at
  33835.           the first line containing a string matching the RE.  If
  33836.           necessary, the search wraps around to the end of the buffer and
  33837.           continues up to and including the current line.  Within the RE,
  33838.           the sequence \? shall represent a literal question-mark instead
  33839.           of the RE delimiter.
  33840.  
  33841.      (7)  An address followed by a plus sign (+) or a minus sign (-)
  33842.           followed by a decimal number specifies that address plus
  33843.           (respectively minus) the indicated number of lines.  The plus
  33844.           sign can be omitted.
  33845.  
  33846.  
  33847.  
  33848.  
  33849.                Copyright c 1991 IEEE.  All rights reserved.
  33850.       This is an unapproved IEEE Standards Draft, subject to change.
  33851.  
  33852.  
  33853.  
  33854.  
  33855.  
  33856.  4.20 ed - Edit text                                                   483
  33857.  
  33858.  
  33859.  
  33860.  
  33861.  
  33862.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  33863.  
  33864.      (8)  If an address begins with + or -, the addition or subtraction is
  33865.           taken with respect to the current line number; for example, -5
  33866.           is understood to mean .-5.
  33867.  
  33868.      (9)  If an address ends with + or -, then 1 shall be added to or
  33869.           subtracted from the address, respectively.  As a consequence of
  33870.           this rule and of rule (8) immediately above, the address - shall
  33871.           refer to the line preceding the current line.  Moreover,
  33872.           trailing + and - characters shall have a cumulative effect, so
  33873.           -- shall refer to the current line number less 2.
  33874.  
  33875.     (10)  A comma (,) shall stand for the address pair 1,$, while a
  33876.           semicolon (;) shall stand for the pair .,$.
  33877.  
  33878.  Commands require zero, one, or two addresses.  Commands that require no
  33879.  addresses shall regard the presence of an address as an error.  Commands
  33880.  that accept one or two addresses assume default addresses when no
  33881.  addresses are given, as described in 4.20.7.3.  If one address is given
  33882.  to a command that allows two addresses, the command shall operate as if
  33883.  it were specified as:
  33884.  
  33885.        _g_i_v_e_n__a_d_d_r_e_s_s;.  _c_o_m_m_a_n_d
  33886.  
  33887.  If more addresses are given than such a command requires, the results are
  33888.  undefined.
  33889.  
  33890.  Typically, addresses are separated from each other by a comma.  They can
  33891.  also be separated by a semicolon.  In the latter case, the current line
  33892.  number (.) shall be set to the first address, and only then shall the
  33893.  second address be calculated.  This feature can be used to determine the
  33894.  starting line for forward and backward searches [see rules (5) and (6)
  33895.  above].  The second address of any two-address sequence shall correspond
  33896.  to a line that does not precede, in the buffer, the line corresponding to
  33897.  the first address.
  33898.  
  33899.  
  33900.  _4._2_0._7._3  ed _C_o_m_m_a_n_d_s
  33901.  
  33902.  In the following list of ed commands, the default addresses are shown in
  33903.  parentheses.  The number of addresses shown in the default shall be the
  33904.  number expected by the command.  The parentheses are not part of the
  33905.  address; they show that the given addresses are the default.
  33906.  
  33907.  It is generally invalid for more than one command to appear on a line.
  33908.  However, any command (except e, E, f, q, Q, r, w, and !) can be suffixed
  33909.  by the letter l, n, or p; in which case, except for the l, n, and p
  33910.  commands, the command shall be executed and then the new current line      1
  33911.  shall be written as described below under the l, n, and p commands.  When  1
  33912.  an l, n, or p suffix is used with an l, n, or p command, the command
  33913.  shall write to standard output as described below, but it is unspecified
  33914.  
  33915.                Copyright c 1991 IEEE.  All rights reserved.
  33916.       This is an unapproved IEEE Standards Draft, subject to change.
  33917.  
  33918.  
  33919.  
  33920.  
  33921.  
  33922.  484                                     4 Execution Environment Utilities
  33923.  
  33924.  
  33925.  
  33926.  
  33927.  
  33928.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  33929.  
  33930.  whether the suffix writes the current line again in the requested format
  33931.  or whether the suffix has no effect.  For example, the pl command (base p
  33932.  command with an l suffix) shall either write just the current line or
  33933.  shall write it twice--once as specified for p and once as specified for
  33934.  l.  Also, the g, G, v, and V commands shall take a command as a
  33935.  parameter.
  33936.  
  33937.  Each address component can be preceded by zero or more <blank>_s.  The
  33938.  command letter can be preceded by zero or more <blank>_s.  If a suffix
  33939.  letter (l, n, or p) is given, it shall immediately follow the command.
  33940.  
  33941.  The e, E, f, r, and w commands shall take an optional _f_i_l_e parameter,
  33942.  separated from the command letter by one or more <blank>s.
  33943.  
  33944.  If changes have been made in the buffer since the last w command that
  33945.  wrote the entire buffer, ed shall warn the user if an attempt is made to
  33946.  destroy the editor buffer via the e or q commands.  The ed utility shall
  33947.  write the string:
  33948.  
  33949.        "?\n"
  33950.  
  33951.  (followed by an explanatory message if _h_e_l_p _m_o_d_e has been enabled via the
  33952.  H command) to standard output and shall continue in command mode with the
  33953.  current line number unchanged.  If the e or q command is repeated with no
  33954.  intervening command, it shall take effect.
  33955.  
  33956.  If an end-of-file is detected on standard input when a command is
  33957.  expected, the ed utility shall act as if a q command had been entered.
  33958.  
  33959.  If the closing delimiter of an RE or of a replacement string (e.g., /) in
  33960.  a g, G, s, v, or V command would be the last character before a
  33961.  <newline>, that delimiter can be omitted, in which case the addressed
  33962.  line shall be written.  For example, the following pairs of commands are
  33963.  equivalent:
  33964.  
  33965.           s/s1/s2     s/s1/s2/p
  33966.  
  33967.           g/s1        g/s1/p
  33968.  
  33969.           ?s1         ?s1?
  33970.  
  33971.  If an invalid command is entered, ed shall write the string:
  33972.  
  33973.        "?\n"
  33974.  
  33975.  (followed by an explanatory message if _h_e_l_p _m_o_d_e has been enabled via the
  33976.  H command) to standard output and shall continue in command mode with the
  33977.  current line number unchanged.
  33978.  
  33979.  
  33980.  
  33981.                Copyright c 1991 IEEE.  All rights reserved.
  33982.       This is an unapproved IEEE Standards Draft, subject to change.
  33983.  
  33984.  
  33985.  
  33986.  
  33987.  
  33988.  4.20 ed - Edit text                                                   485
  33989.  
  33990.  
  33991.  
  33992.  
  33993.  
  33994.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  33995.  
  33996.  4.20.7.3.1  Append Command
  33997.  
  33998.  _S_y_n_o_p_s_i_s:  (.)a
  33999.            <_t_e_x_t>
  34000.            .
  34001.  
  34002.  The _a_p_p_e_n_d command shall read the given text and append it after the
  34003.  addressed line; the current line number shall become the address of the
  34004.  last inserted line, or, if there were none, the addressed line.  Address
  34005.  0 shall be valid for this command:  it shall cause the ``appended'' text
  34006.  to be placed at the beginning of the buffer.
  34007.  
  34008.  4.20.7.3.2  Change Command
  34009.  
  34010.  _S_y_n_o_p_s_i_s:  (.,.)c                                                          1
  34011.            <_t_e_x_t>
  34012.            .
  34013.  
  34014.  The _c_h_a_n_g_e command shall delete the addressed lines, then accept input
  34015.  text that replaces these lines; the current line shall be set to the
  34016.  address of the last line input; or, if there were none, at the line after
  34017.  the last line deleted; if the lines deleted were originally at the end of
  34018.  the buffer, the current line number shall be set to the address of the
  34019.  new last line; if no lines remain in the buffer, the current line number
  34020.  shall be set to zero.
  34021.  
  34022.  4.20.7.3.3  Delete Command
  34023.  
  34024.  _S_y_n_o_p_s_i_s:  (.,.)d
  34025.  
  34026.  The _d_e_l_e_t_e command shall delete the addressed lines from the buffer.  The
  34027.  address of the line after the last line deleted shall become the current
  34028.  line number; if the lines deleted were originally at the end of the
  34029.  buffer, the current line number shall be set to the address of the new
  34030.  last line; if no lines remain in the buffer, the current line number
  34031.  shall be set to zero.
  34032.  
  34033.  4.20.7.3.4  Edit Command
  34034.  
  34035.  _S_y_n_o_p_s_i_s:  e [_f_i_l_e]
  34036.  
  34037.  The _e_d_i_t command shall delete the entire contents of the buffer and then
  34038.  read in the file named by the pathname _f_i_l_e. The current line number
  34039.  shall be set to the address of the last line of the buffer.  If no
  34040.  pathname is given, the currently remembered pathname, if any, shall be
  34041.  used (see the f command).  The number of bytes read shall be written to
  34042.  standard output, unless the -s option was specified, in the following
  34043.  format:
  34044.  
  34045.  
  34046.  
  34047.                Copyright c 1991 IEEE.  All rights reserved.
  34048.       This is an unapproved IEEE Standards Draft, subject to change.
  34049.  
  34050.  
  34051.  
  34052.  
  34053.  
  34054.  486                                     4 Execution Environment Utilities
  34055.  
  34056.  
  34057.  
  34058.  
  34059.  
  34060.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  34061.  
  34062.        "%d\n", <_n_u_m_b_e_r _o_f _b_y_t_e_s _r_e_a_d>
  34063.  
  34064.  The name _f_i_l_e shall be remembered for possible use as a default pathname
  34065.  in subsequent e, E, r, and w commands.  If _f_i_l_e is replaced by !, the
  34066.  rest of the line shall be taken to be a shell command line whose output
  34067.  is to be read.  Such a shell command line shall not be remembered as the
  34068.  current _f_i_l_e. All marks shall be discarded upon the completion of a
  34069.  successful e command.  If the buffer has changed since the last time the
  34070.  entire buffer was written, the user shall be warned, as described
  34071.  previously.
  34072.  
  34073.  4.20.7.3.5  Edit Without Checking Command
  34074.  
  34075.  _S_y_n_o_p_s_i_s:  E [_f_i_l_e]
  34076.  
  34077.  The _E_d_i_t command shall possess all properties and restrictions of the e
  34078.  command except that the editor shall not check to see if any changes have
  34079.  been made to the buffer since the last w command.
  34080.  
  34081.  4.20.7.3.6  File-Name Command
  34082.  
  34083.  _S_y_n_o_p_s_i_s:  f [_f_i_l_e]
  34084.  
  34085.  If _f_i_l_e is given, the file-name command shall change the currently
  34086.  remembered pathname to _f_i_l_e; whether the name is changed or not, it then
  34087.  shall write the (possibly new) currently remembered pathname to the
  34088.  standard output in the following format:
  34089.  
  34090.        "%s\n", <_p_a_t_h_n_a_m_e>
  34091.  
  34092.  The current line number shall be unchanged.
  34093.  
  34094.  4.20.7.3.7  Global Command
  34095.  
  34096.  _S_y_n_o_p_s_i_s:  (1,$)g/_R_E/_c_o_m_m_a_n_d _l_i_s_t
  34097.  
  34098.  In the _g_l_o_b_a_l command, the first step shall be to mark every line that
  34099.  matches the given _R_E. Then, for every such line, the given _c_o_m_m_a_n_d _l_i_s_t
  34100.  shall be executed with the current line number set to the address of that
  34101.  line.  When the g command completes, the current line number shall have
  34102.  the value assigned by the last command in the command list.  If there
  34103.  were no matching lines, the current line number shall not be changed.  A
  34104.  single command or the first of a list of commands shall appear on the
  34105.  same line as the global command.  All lines of a multiline list except
  34106.  the last line shall be ended with a backslash; the a, i, and c commands
  34107.  and associated input are permitted.  The . terminating input mode can be
  34108.  omitted if it would be the last line of the _c_o_m_m_a_n_d _l_i_s_t.  An empty
  34109.  _c_o_m_m_a_n_d _l_i_s_t shall be equivalent to the p command.  The use of the g, G,
  34110.  v, V, and ! commands in the _c_o_m_m_a_n_d _l_i_s_t produces undefined results.  Any
  34111.  
  34112.  
  34113.                Copyright c 1991 IEEE.  All rights reserved.
  34114.       This is an unapproved IEEE Standards Draft, subject to change.
  34115.  
  34116.  
  34117.  
  34118.  
  34119.  
  34120.  4.20 ed - Edit text                                                   487
  34121.  
  34122.  
  34123.  
  34124.  
  34125.  
  34126.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  34127.  
  34128.  character other than <space> or <newline> can be used instead of a slash
  34129.  to delimit the _R_E. Within the RE, the RE delimiter itself can be used as
  34130.  a literal character if it is preceded by a backslash.
  34131.  
  34132.  4.20.7.3.8  Interactive Global Command
  34133.  
  34134.  _S_y_n_o_p_s_i_s:  (1,$)G/_R_E/
  34135.  
  34136.  In the _i_n_t_e_r_a_c_t_i_v_e _g_l_o_b_a_l command, the first step shall be to mark every
  34137.  line that matches the given _R_E. Then, for every such line, that line
  34138.  shall be written, the current line number shall be set to the address of
  34139.  that line, and any one command (other than one of the a, c, i, g, G, v,
  34140.  and V commands) can be input and shall be executed.  A <newline> shall
  34141.  act as a null command (causing no action to be taken on the current
  34142.  line); an & shall cause the reexecution of the most recent nonnull
  34143.  command executed within the current invocation of G.  Note that the
  34144.  commands input as part of the execution of the G command can address and
  34145.  affect any lines in the buffer.  The final value of the current line
  34146.  number shall be the value set by the last command successfully executed.
  34147.  (Note that the last command successfully executed shall be the G command
  34148.  itself if a command fails or the null command is specified.)  If there
  34149.  were no matching lines, the current line number shall not be changed.
  34150.  The G command can be terminated by a SIGINT signal.  Any character other
  34151.  than <space> or <newline> can be used instead of a slash to delimit the
  34152.  _R_E and the replacement.  Within the RE, the RE delimiter itself can be
  34153.  used as a literal character if it is preceded by a backslash.
  34154.  
  34155.  4.20.7.3.9  Help Command
  34156.  
  34157.  _S_y_n_o_p_s_i_s:  h
  34158.  
  34159.  The _h_e_l_p command shall write a short message to standard output that
  34160.  explains the reason for the most recent ? notification.  The current line
  34161.  number shall be unchanged.
  34162.  
  34163.  4.20.7.3.10  Help-Mode Command
  34164.  
  34165.  _S_y_n_o_p_s_i_s:  H
  34166.  
  34167.  The _H_e_l_p command shall cause ed to enter a mode in which help messages
  34168.  (see the h command) shall be written to standard output for all
  34169.  subsequent ? notifications.  The H command alternately shall turn this
  34170.  mode on and off; it shall be initially off.  If the help-mode is being
  34171.  turned on, the H command also shall explain the previous ? notification,
  34172.  if there was one.  The current line number shall be unchanged.
  34173.  
  34174.  
  34175.  
  34176.  
  34177.  
  34178.  
  34179.                Copyright c 1991 IEEE.  All rights reserved.
  34180.       This is an unapproved IEEE Standards Draft, subject to change.
  34181.  
  34182.  
  34183.  
  34184.  
  34185.  
  34186.  488                                     4 Execution Environment Utilities
  34187.  
  34188.  
  34189.  
  34190.  
  34191.  
  34192.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  34193.  
  34194.  4.20.7.3.11  Insert Command
  34195.  
  34196.  _S_y_n_o_p_s_i_s:  (.)i
  34197.            <_t_e_x_t>
  34198.            .
  34199.  
  34200.  The _i_n_s_e_r_t command shall insert the given text before the addressed line;
  34201.  . shall be left at the last inserted line, or, if there was none, at the
  34202.  addressed line.  This command differs from the a command only in the
  34203.  placement of the input text.  Address 0 shall be invalid for this
  34204.  command.
  34205.  
  34206.  4.20.7.3.12  Join Command
  34207.  
  34208.  _S_y_n_o_p_s_i_s:  (.,.+1)j
  34209.  
  34210.  The _j_o_i_n command shall join contiguous lines by removing the appropriate
  34211.  <newline> characters.  If exactly one address is given, this command
  34212.  shall do nothing.  If lines are joined, the current line number shall be
  34213.  set to the address of the joined line; otherwise, the current line number
  34214.  shall be unchanged.
  34215.  
  34216.  4.20.7.3.13  Mark Command
  34217.  
  34218.  _S_y_n_o_p_s_i_s:  (.)k_x
  34219.  
  34220.  The _m_a_r_k command shall mark the addressed line with name _x, which shall
  34221.  be a lowercase letter from the portable character set.  The address '_x
  34222.  then shall refer to this line; the current line number shall be
  34223.  unchanged.
  34224.  
  34225.  4.20.7.3.14  List Command
  34226.  
  34227.  _S_y_n_o_p_s_i_s:  (.,.)l
  34228.  
  34229.  The _l_i_s_t command shall write to standard output the addressed lines in a   1
  34230.  visually unambiguous form.  The characters listed in Table 2-15 (see       1
  34231.  2.12) shall be written as the corresponding escape sequence.               1
  34232.  Nonprintable characters not in Table 2-15 shall be written as one three-   1
  34233.  digit octal number (with a preceding <backslash>) for each byte in the     1
  34234.  character (most significant byte first).  If the size of a byte on the     1
  34235.  system is greater than nine bits, the format used for nonprintable         1
  34236.  characters is implementation defined.                                      1
  34237.  
  34238.  Long lines shall be folded, with the point of folding indicated by         1
  34239.  writing <backslash><newline>; the length at which folding occurs is        1
  34240.  unspecified, but should be appropriate for the output device.  The end of  1
  34241.  each line shall be marked with a $.  An l command can be appended to any   1
  34242.  other command other than e, E, f, q, Q, r, w, or !.  The current line
  34243.  
  34244.  
  34245.                Copyright c 1991 IEEE.  All rights reserved.
  34246.       This is an unapproved IEEE Standards Draft, subject to change.
  34247.  
  34248.  
  34249.  
  34250.  
  34251.  
  34252.  4.20 ed - Edit text                                                   489
  34253.  
  34254.  
  34255.  
  34256.  
  34257.  
  34258.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  34259.  
  34260.  number shall be set to the address of the last line written.
  34261.  
  34262.  4.20.7.3.15  Move Command
  34263.  
  34264.  _S_y_n_o_p_s_i_s:  (.,.)m_a_d_d_r_e_s_s
  34265.  
  34266.  The _m_o_v_e command shall reposition the addressed line(s) after the line
  34267.  addressed by _a_d_d_r_e_s_s. Address 0 shall be valid for _a_d_d_r_e_s_s and cause the
  34268.  addressed line(s) to be moved to the beginning of the buffer.  It shall
  34269.  be an error if address _a_d_d_r_e_s_s falls within the range of moved lines.
  34270.  The current line number shall be set to the address of the last line
  34271.  moved.
  34272.  
  34273.  4.20.7.3.16  Number Command
  34274.  
  34275.  _S_y_n_o_p_s_i_s:  (.,.)n
  34276.  
  34277.  The _n_u_m_b_e_r command shall write to standard output the addressed lines,
  34278.  preceding each line by its line number and a <tab> character; the current
  34279.  line number shall be set to the address of the last line written.  The n
  34280.  command can be appended to any other command other than e, E, f, q, Q, r,
  34281.  w, or !.
  34282.  
  34283.  4.20.7.3.17  Print Command
  34284.  
  34285.  _S_y_n_o_p_s_i_s:  (.,.)p
  34286.  
  34287.  The _p_r_i_n_t command shall write to standard output the addressed lines; the
  34288.  current line number shall be set to the address of the last line written.
  34289.  The p command can be appended to any other command other than e, E, f, q,
  34290.  Q, r, w, or !.
  34291.  
  34292.  4.20.7.3.18  Prompt Command
  34293.  
  34294.  _S_y_n_o_p_s_i_s:  P
  34295.  
  34296.  The _P_r_o_m_p_t command shall cause ed to prompt with an asterisk (*) (or
  34297.  _s_t_r_i_n_g, if -p is specified) for all subsequent commands.  The P command
  34298.  alternately shall turn this mode on and off; it shall be initially on if
  34299.  the -p option is specified, otherwise off.  The current line number shall
  34300.  be unchanged.
  34301.  
  34302.  4.20.7.3.19  Quit Command
  34303.  
  34304.  _S_y_n_o_p_s_i_s:  q
  34305.  
  34306.  The _q_u_i_t command shall cause ed to exit.  If the buffer has changed since
  34307.  the last time the entire buffer was written, the user shall be warned, as
  34308.  described previously.
  34309.  
  34310.  
  34311.                Copyright c 1991 IEEE.  All rights reserved.
  34312.       This is an unapproved IEEE Standards Draft, subject to change.
  34313.  
  34314.  
  34315.  
  34316.  
  34317.  
  34318.  490                                     4 Execution Environment Utilities
  34319.  
  34320.  
  34321.  
  34322.  
  34323.  
  34324.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  34325.  
  34326.  4.20.7.3.20  Quit Without Checking Command
  34327.  
  34328.  _S_y_n_o_p_s_i_s:  Q
  34329.  
  34330.  The _Q_u_i_t command shall cause ed to exit without checking if changes have
  34331.  been made in the buffer since the last w command.
  34332.  
  34333.  4.20.7.3.21  Read Command
  34334.  
  34335.  _S_y_n_o_p_s_i_s:  ($)r [_f_i_l_e]
  34336.  
  34337.  The _r_e_a_d command shall read in the file named by the pathname _f_i_l_e and
  34338.  append it after the addressed line.  If no _f_i_l_e argument is given, the
  34339.  currently remembered pathname, if any, shall be used (see e and f
  34340.  commands).  The currently remembered pathname shall not be changed unless
  34341.  there is no remembered pathname.  Address 0 shall be valid for r and
  34342.  shall cause the file to be read at the beginning of the buffer.  If the
  34343.  read is successful, and -s was not specified, the number of bytes read
  34344.  shall be written to standard output in the following format:
  34345.  
  34346.        "%d\n", <_n_u_m_b_e_r _o_f _b_y_t_e_s _r_e_a_d>
  34347.  
  34348.  The current line number shall be set to the address of the last line read
  34349.  in.  If _f_i_l_e is replaced by !, the rest of the line shall be taken to be
  34350.  a shell command line whose output is to be read.  Such a shell command
  34351.  line shall not be remembered as the current pathname.
  34352.  
  34353.  4.20.7.3.22  Substitute Command
  34354.  
  34355.  _S_y_n_o_p_s_i_s:  (.,.)s/_R_E/_r_e_p_l_a_c_e_m_e_n_t/_f_l_a_g_s
  34356.  
  34357.  The _s_u_b_s_t_i_t_u_t_e command shall search each addressed line for an occurrence
  34358.  of the specified RE and replace either the first or all (nonoverlapped)
  34359.  matched strings with the _r_e_p_l_a_c_e_m_e_n_t; see the following description of
  34360.  the g suffix.  It is an error if the substitution fails on every
  34361.  addressed line.  Any character other than <space> or <newline> can be
  34362.  used instead of a slash to delimit the _R_E and the replacement.  Within
  34363.  the RE, the RE delimiter itself can be used as a literal character if it
  34364.  is preceded by a backslash.  The current line shall be set to the address
  34365.  of the last line on which a substitution occurred.
  34366.  
  34367.  An ampersand (&) appearing in the _r_e_p_l_a_c_e_m_e_n_t shall be replaced by the
  34368.  string matching the RE on the current line.  The special meaning of & in
  34369.  this context can be suppressed by preceding it by backslash.  As a more
  34370.  general feature, the characters \_n, where _n is a digit, shall be replaced
  34371.  by the text matched by the corresponding backreference expression (see
  34372.  2.8.3.3).  When the character % is the only character in the _r_e_p_l_a_c_e_m_e_n_t,
  34373.  the _r_e_p_l_a_c_e_m_e_n_t used in the most recent substitute command shall be used
  34374.  as the _r_e_p_l_a_c_e_m_e_n_t in the current substitute command; if there was no
  34375.  
  34376.  
  34377.                Copyright c 1991 IEEE.  All rights reserved.
  34378.       This is an unapproved IEEE Standards Draft, subject to change.
  34379.  
  34380.  
  34381.  
  34382.  
  34383.  
  34384.  4.20 ed - Edit text                                                   491
  34385.  
  34386.  
  34387.  
  34388.  
  34389.  
  34390.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  34391.  
  34392.  previous substitute command, the use of % in this manner shall be an
  34393.  error.  The % shall lose its special meaning when it is in a replacement
  34394.  string of more than one character or is preceded by a backslash.
  34395.  
  34396.  A line can be split by substituting a <newline> character into it.  The    1
  34397.  application shall escape the <newline> in the _r_e_p_l_a_c_e_m_e_n_t by preceding it  1
  34398.  by backslash.  Such substitution cannot be done as part of a g or v
  34399.  command list.  The current line number shall be set to the address of the
  34400.  last line on which a substitution is performed.  If no substitution is
  34401.  performed, the current line number shall be unchanged.  If a line is
  34402.  split, a substitution shall be considered to have been performed on each
  34403.  of the new lines for the purpose of determining the new current line
  34404.  number.  A substitution shall be considered to have been performed even
  34405.  if the replacement string is identical to the string that it replaces.
  34406.  
  34407.  The value of _f_l_a_g_s shall be zero or more of:
  34408.  
  34409.     _c_o_u_n_t    Substitute for the _c_o_u_n_tth occurrence only of the _R_E found on
  34410.              each addressed line.
  34411.  
  34412.     g        Globally substitute for all nonoverlapping instances of the
  34413.              _R_E rather than just the first one.  If both g and _c_o_u_n_t are
  34414.              specified, the results are unspecified.
  34415.  
  34416.     l        Write to standard output the final line in which a
  34417.              substitution was made.  The line shall be written in the
  34418.              format specified for the l command.
  34419.  
  34420.     n        Write to standard output the final line in which a
  34421.              substitution was made.  The line shall be written in the
  34422.              format specified for the n command.
  34423.  
  34424.     p        Write to standard output the final line in which a
  34425.              substitution was made.  The line shall be written in the
  34426.              format specified for the p command.
  34427.  
  34428.  4.20.7.3.23  Copy Command
  34429.  
  34430.  _S_y_n_o_p_s_i_s:  (.,.)t_a_d_d_r_e_s_s
  34431.  
  34432.  The t command shall be equivalent to the m command, except that a copy of
  34433.  the addressed lines shall be placed after address _a_d_d_r_e_s_s (which can be
  34434.  0); the current line number shall be set to the address of the last line
  34435.  added.
  34436.  
  34437.  
  34438.  
  34439.  
  34440.  
  34441.  
  34442.  
  34443.                Copyright c 1991 IEEE.  All rights reserved.
  34444.       This is an unapproved IEEE Standards Draft, subject to change.
  34445.  
  34446.  
  34447.  
  34448.  
  34449.  
  34450.  492                                     4 Execution Environment Utilities
  34451.  
  34452.  
  34453.  
  34454.  
  34455.  
  34456.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  34457.  
  34458.  4.20.7.3.24  Undo Command
  34459.  
  34460.  _S_y_n_o_p_s_i_s:  u
  34461.  
  34462.  The _u_n_d_o command shall nullify the effect of the most recent command that
  34463.  modified anything in the buffer, namely the most recent a, c, d, g, i, j,
  34464.  m, r, s, t, u, v, G, or V command.  All changes made to the buffer by a    1
  34465.  g, G, v, or V global command shall be ``undone'' as a single change; if    1
  34466.  no changes were made by the global command (such as with g/_R_E/p), the u    1
  34467.  command shall have no effect.  The current line number shall be set to     1
  34468.  the value it had immediately before the command being undone started.
  34469.  
  34470.  4.20.7.3.25  Global Non-Matched Command
  34471.  
  34472.  _S_y_n_o_p_s_i_s:  (1,$)v/_R_E/_c_o_m_m_a_n_d _l_i_s_t
  34473.  
  34474.  This command shall be equivalent to the global command g except that the
  34475.  lines that are marked during the first step shall be those that do not
  34476.  match the RE.
  34477.  
  34478.  4.20.7.3.26  Interactive Global Not-Matched Command
  34479.  
  34480.  _S_y_n_o_p_s_i_s:  (1,$)V/_R_E/
  34481.  
  34482.  This command shall be equivalent to the interactive global command G
  34483.  except that the lines that are marked during the first step shall be
  34484.  those that do not match the RE.
  34485.  
  34486.  4.20.7.3.27  Write Command
  34487.  
  34488.  _S_y_n_o_p_s_i_s:  (1,$)w [_f_i_l_e]
  34489.  
  34490.  The _w_r_i_t_e command shall write the addressed lines into the file named by
  34491.  the pathname _f_i_l_e. The command shall create the file, if it does not
  34492.  exist, or shall replace the contents of the existing file.  The currently
  34493.  remembered pathname shall not be changed unless there is no remembered
  34494.  pathname.  If no pathname is given, the currently remembered pathname, if
  34495.  any, shall be used (see e and f commands); the current line number shall
  34496.  be unchanged.  If the command is successful, the number of bytes written
  34497.  shall be written to standard output, unless the -s option was specified,
  34498.  in the following format:
  34499.  
  34500.        "%d\n", <_n_u_m_b_e_r _o_f _b_y_t_e_s _w_r_i_t_t_e_n>
  34501.  
  34502.  If _f_i_l_e begins with !, the rest of the line shall be taken to be a shell
  34503.  command line whose standard input shall be the addressed lines.  Such a
  34504.  shell command line shall not be remembered as the current pathname.  This  1
  34505.  usage of the write command with ! shall not be considered as a ``last w    1
  34506.  command that wrote the entire buffer,'' as described previously; thus,     1
  34507.  
  34508.  
  34509.                Copyright c 1991 IEEE.  All rights reserved.
  34510.       This is an unapproved IEEE Standards Draft, subject to change.
  34511.  
  34512.  
  34513.  
  34514.  
  34515.  
  34516.  4.20 ed - Edit text                                                   493
  34517.  
  34518.  
  34519.  
  34520.  
  34521.  
  34522.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  34523.  
  34524.  this alone shall not prevent the warning to the user if an attempt is      1
  34525.  made to destroy the editor buffer via the e or q commands.                 1
  34526.  
  34527.  4.20.7.3.28  Line Number Command
  34528.  
  34529.  _S_y_n_o_p_s_i_s:  ($)=
  34530.  
  34531.  The line number of the addressed line shall be written to standard output
  34532.  in the following format:
  34533.  
  34534.        "%d\n", <_l_i_n_e _n_u_m_b_e_r>
  34535.  
  34536.  The current line number shall be unchanged by this command.
  34537.  
  34538.  4.20.7.3.29  Shell Escape Command
  34539.  
  34540.  _S_y_n_o_p_s_i_s:  !_c_o_m_m_a_n_d
  34541.  
  34542.  The remainder of the line after the ! shall be sent to the command
  34543.  interpreter to be interpreted as a shell command line.  Within the text
  34544.  of that shell command line, the unescaped character % shall be replaced
  34545.  with the remembered pathname; if a ! appears as the first character of
  34546.  the command, it shall be replaced with the text of the previous shell
  34547.  command executed via !.  Thus, !! shall repeat the previous !_c_o_m_m_a_n_d. If   2
  34548.  any replacements of % and/or ! are performed, the modified line shall be   2
  34549.  written to the standard output before _c_o_m_m_a_n_d is executed.  The ! command  2
  34550.  shall write                                                                2
  34551.  
  34552.        "!\n"
  34553.  
  34554.  to standard output upon completion, unless the -s option is specified.
  34555.  The current line number shall be unchanged.
  34556.  
  34557.  4.20.7.3.30  Null Command
  34558.  
  34559.  _S_y_n_o_p_s_i_s:  (.+1)
  34560.  
  34561.  An address alone on a line shall cause the addressed line to be written.
  34562.  A <newline> alone shall be equivalent to .+1p.  The current line number
  34563.  shall be set to the address of the written line.
  34564.  
  34565.  
  34566.  4.20.8  Exit Status
  34567.  
  34568.  The ed utility shall exit with one of the following values:
  34569.  
  34570.      0    Successful completion without any file or command errors.
  34571.  
  34572.  
  34573.  
  34574.  
  34575.                Copyright c 1991 IEEE.  All rights reserved.
  34576.       This is an unapproved IEEE Standards Draft, subject to change.
  34577.  
  34578.  
  34579.  
  34580.  
  34581.  
  34582.  494                                     4 Execution Environment Utilities
  34583.  
  34584.  
  34585.  
  34586.  
  34587.  
  34588.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  34589.  
  34590.     >0    An error occurred.
  34591.  
  34592.  
  34593.  4.20.9  Consequences of Errors
  34594.  
  34595.  When an error in the input script is encountered, or when an error is      1
  34596.  detected that is a consequence of the data (not) present in the file or    1
  34597.  due to an external condition such as a read or write error:                1
  34598.  
  34599.      - If the standard input is a terminal device file, all input shall be  2
  34600.        flushed, and a new command read.                                     2
  34601.  
  34602.      - If the standard input is a regular file, ed shall terminate with a   2
  34603.        nonzero exit status.                                                 2
  34604.  
  34605.  BEGIN_RATIONALE                                                            2
  34606.  
  34607.  
  34608.  4.20.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  34609.  
  34610.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  34611.  
  34612.  Some historical implementations contained a bug that allowed a single
  34613.  period to be entered in input mode as <backslash> <period> <newline>.
  34614.  This is not allowed by the POSIX.2 ed because there is no description of
  34615.  escaping any of the characters in input mode; backslashes are entered
  34616.  into the buffer exactly as typed.  The typical method of entering a
  34617.  single period has been to precede it with another character and then use
  34618.  the substitute command to delete that character.
  34619.  
  34620.  Because of the extremely terse nature of the default error messages, the   1
  34621.  prudent script writer will begin the ed input commands with an H command,  1
  34622.  so that if any errors do occur at least some clue as to the cause will be  1
  34623.  made available.                                                            1
  34624.  
  34625.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  34626.  
  34627.  The initial description of this utility was adapted from the _S_V_I_D.  It
  34628.  contains some features not found in Version 7 or BSD-derived systems.
  34629.  Some of the differences between the POSIX.2 and BSD ed utilities include,
  34630.  but need not be limited to:
  34631.  
  34632.      - The BSD - option does not suppress the ! prompt after a ! command.
  34633.  
  34634.      - BSD does not support the special meanings of the % and ! characters
  34635.        within a ! command.
  34636.  
  34637.      - BSD does not support the _a_d_d_r_e_s_s_e_s ; and ,.
  34638.  
  34639.  
  34640.  
  34641.                Copyright c 1991 IEEE.  All rights reserved.
  34642.       This is an unapproved IEEE Standards Draft, subject to change.
  34643.  
  34644.  
  34645.  
  34646.  
  34647.  
  34648.  4.20 ed - Edit text                                                   495
  34649.  
  34650.  
  34651.  
  34652.  
  34653.  
  34654.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  34655.  
  34656.      - BSD allows the command/suffix pairs pp, ll, etc., which are
  34657.        unspecified in POSIX.2.
  34658.  
  34659.      - BSD does not support the ! character part of the e, r, or w
  34660.        commands.
  34661.  
  34662.      - A failed g command in BSD sets the line number to the last line
  34663.        searched if there are no matches.
  34664.  
  34665.      - BSD does not default the command list to the p command.
  34666.  
  34667.      - BSD does not support the G, h, H, n, or V commands.
  34668.  
  34669.      - On BSD, if there is no inserted text, the insert command changes
  34670.        the current line to the referenced line -1; i.e., the line before
  34671.        the specified line.
  34672.  
  34673.      - On BSD, the join command with only a single address changes the
  34674.        current line to that address.
  34675.  
  34676.      - BSD does not support the P command; moreover, in BSD it is
  34677.        synonymous with the p command.
  34678.  
  34679.      - BSD does not support the _u_n_d_o of the commands j, m, r, s, or t.
  34680.  
  34681.      - The BSD ed commands W, wq, and z are not present in POSIX.2.
  34682.  
  34683.  The -s option was added to allow the functionality of the - option in a
  34684.  manner compatible with the Utility Syntax Guidelines.  It is the intent
  34685.  of the working group that portable applications use the -s option, and
  34686.  that in the future the - option be removed from the standard.
  34687.  
  34688.  Prior to Draft 8 there was a limit, {ED_FILE_MAX}, which described the
  34689.  historical limitations of some ed utilities in their handling of large
  34690.  files; some of these have had problems with files in the >100KB range.
  34691.  It was this limitation that prompted much of the desire to include a
  34692.  split command in the standard.  Since this limit was removed, the
  34693.  standard requires that implementations document the file size limits
  34694.  imposed by ed in the conformance document.  The limit {ED_LINE_MAX} was
  34695.  also removed; therefore, the global limit {LINE_MAX} is used for input
  34696.  and output lines.
  34697.  
  34698.  The \{_m,_n\} notation was removed from the description of regular
  34699.  expressions because this functionality is now described in 2.8.3.
  34700.  
  34701.  The manner in which the l command writes nonprintable characters was
  34702.  changed to avoid the historical backspace-overstrike method.  On video
  34703.  display terminals, the overstrike is ambiguous because most terminals      1
  34704.  simply replace overstruck characters, making the l format not useful for   1
  34705.  
  34706.  
  34707.                Copyright c 1991 IEEE.  All rights reserved.
  34708.       This is an unapproved IEEE Standards Draft, subject to change.
  34709.  
  34710.  
  34711.  
  34712.  
  34713.  
  34714.  496                                     4 Execution Environment Utilities
  34715.  
  34716.  
  34717.  
  34718.  
  34719.  
  34720.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  34721.  
  34722.  its intended purpose of unambiguously understanding the content of the     1
  34723.  line.  The historical backslash escapes were also ambiguous.  (The string
  34724.  "a\0011" could represent a line containing those six characters or a line
  34725.  containing the three characters 'a', a byte with a binary value of 1, and
  34726.  a '1'.)  In the format required here, a backslash appearing in the line
  34727.  will be written as "\\" so that the output is truly unambiguous.  The      1
  34728.  method of marking the ends of lines was adopted from the ex editor (see    1
  34729.  the User Portability Extension) and is required for any line ending in     1
  34730.  <space>_s; the $ is placed on all lines so that a real $ at the end of a    1
  34731.  line cannot be misinterpreted.                                             1
  34732.  
  34733.  Systems with bytes too large to fit into three octal digits must devise    1
  34734.  other means of displaying nonprintable characters.  Consideration was      1
  34735.  given to requiring that the number of octal digits be large enough to      1
  34736.  hold a byte, but this seemed to be too confusing for applications on the   1
  34737.  vast majority of systems where three digits are adequate.  It would be     1
  34738.  theoretically possible for the application to use the getconf utility to   1
  34739.  find out the {CHAR_BIT} value and deal with such an algorithm; however,    1
  34740.  there is really no portable way that an application can use the octal      1
  34741.  values of the bytes across various coded character sets anyway, so the     1
  34742.  additional specification did not seem worth the effort.                    1
  34743.  
  34744.  The description of how a NUL is written was removed.  The NUL character
  34745.  cannot be in text files, and the standard should not dictate behavior in
  34746.  the case of undefined, erroneous input.
  34747.  
  34748.  The text requiring filenames accepted by the E, e, R, and r commands to
  34749.  be patterns was removed due to balloting objections that this was
  34750.  undesirable and not existing practice.
  34751.  
  34752.  The -p option in Drafts 8 and 9 said that it only worked when standard
  34753.  input was associated with a terminal device.  This has been changed to
  34754.  conform to existing implementations, thereby allowing applications to
  34755.  interpose themselves between a user and the ed utility.
  34756.  
  34757.  The form of the substitute command that uses the _n suffix was limited to
  34758.  the first 512 matches in a previous draft (where this was described
  34759.  incorrectly as ``backreferencing'').  This limit has been removed because
  34760.  there is no reason an editor processing lines of {LINE_MAX} length should
  34761.  have this restriction.  The command s/x/X/2047 should be able to
  34762.  substitute the 2047th occurrence of x on a line.
  34763.  
  34764.  The use of printing commands with printing suffixes (such as pn, lp,
  34765.  etc.) was made unspecified because BSD-based systems allow this, whereas
  34766.  System V does not.
  34767.  
  34768.  Some BSD-based systems exit immediately upon receipt of end-of-file if
  34769.  all of the lines in the file had been deleted.  Since POSIX.2 refers to
  34770.  the q command in this instance, such behavior is not allowed.
  34771.  
  34772.  
  34773.                Copyright c 1991 IEEE.  All rights reserved.
  34774.       This is an unapproved IEEE Standards Draft, subject to change.
  34775.  
  34776.  
  34777.  
  34778.  
  34779.  
  34780.  4.20 ed - Edit text                                                   497
  34781.  
  34782.  
  34783.  
  34784.  
  34785.  
  34786.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  34787.  
  34788.  Some historical implementations returned exit status zero even if command
  34789.  errors had occurred; this is not allowed by POSIX.2.
  34790.  
  34791.  END_RATIONALE
  34792.  
  34793.  
  34794.  
  34795.  4.21  env - Set environment for command invocation
  34796.  
  34797.  
  34798.  4.21.1  Synopsis
  34799.  
  34800.  env  [-i] [_n_a_m_e=_v_a_l_u_e] ...  [_u_t_i_l_i_t_y [_a_r_g_u_m_e_n_t ...]]
  34801.  
  34802.  _O_b_s_o_l_e_s_c_e_n_t _V_e_r_s_i_o_n:
  34803.  
  34804.  env  [-] [_n_a_m_e=_v_a_l_u_e] ...  [_u_t_i_l_i_t_y [_a_r_g_u_m_e_n_t ...]]
  34805.  
  34806.  
  34807.  4.21.2  Description
  34808.  
  34809.  The env utility shall obtain the current environment, modify it according
  34810.  to its arguments, then invoke the utility named by the _u_t_i_l_i_t_y operand
  34811.  with the modified environment.
  34812.  
  34813.  Optional arguments shall be passed to _u_t_i_l_i_t_y.
  34814.  
  34815.  If no _u_t_i_l_i_t_y operand is specified, the resulting environment shall be
  34816.  written to the standard output, with one _n_a_m_e=_v_a_l_u_e pair per line.
  34817.  
  34818.  
  34819.  4.21.3  Options
  34820.  
  34821.  The env utility shall conform to the utility argument syntax guidelines
  34822.  described in 2.10.2, except for its nonstandard usage of -, which is
  34823.  obsolescent.
  34824.  
  34825.  The following options shall be supported by the implementation:
  34826.  
  34827.     -i          Invoke _u_t_i_l_i_t_y with exactly the environment specified by
  34828.                 the arguments; the inherited environment shall be ignored
  34829.                 completely.
  34830.  
  34831.     -           (Obsolescent.)  Equivalent to the -i option.
  34832.  
  34833.  
  34834.  
  34835.  
  34836.  
  34837.  
  34838.  
  34839.                Copyright c 1991 IEEE.  All rights reserved.
  34840.       This is an unapproved IEEE Standards Draft, subject to change.
  34841.  
  34842.  
  34843.  
  34844.  
  34845.  
  34846.  498                                     4 Execution Environment Utilities
  34847.  
  34848.  
  34849.  
  34850.  
  34851.  
  34852.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  34853.  
  34854.  4.21.4  Operands
  34855.  
  34856.  The following operands shall be supported by the implementation:
  34857.  
  34858.     _n_a_m_e=_v_a_l_u_e  Arguments of the form _n_a_m_e=_v_a_l_u_e modify the execution
  34859.                 environment, and are placed into the inherited environment
  34860.                 before the _u_t_i_l_i_t_y is invoked.
  34861.  
  34862.     _u_t_i_l_i_t_y     The name of the utility to be invoked.  If the _u_t_i_l_i_t_y
  34863.                 operand names any of the special built-in utilities in
  34864.                 3.14, the results are undefined.
  34865.  
  34866.     _a_r_g_u_m_e_n_t    A string to pass as an argument for the invoked utility.
  34867.  
  34868.  
  34869.  4.21.5  External Influences
  34870.  
  34871.  
  34872.  4.21.5.1  Standard Input
  34873.  
  34874.  None.
  34875.  
  34876.  4.21.5.2  Input Files
  34877.  
  34878.  None.
  34879.  
  34880.  
  34881.  4.21.5.3  Environment Variables
  34882.  
  34883.  The following environment variables shall affect the execution of env:
  34884.  
  34885.     LANG               This variable shall determine the locale to use for
  34886.                        the locale categories when both LC_ALL and the
  34887.                        corresponding environment variable (beginning with
  34888.                        LC_) do not specify a locale.  See 2.6.
  34889.  
  34890.     LC_ALL             This variable shall determine the locale to be used
  34891.                        to override any values for locale categories
  34892.                        specified by the settings of LANG or any
  34893.                        environment variables beginning with LC_.
  34894.  
  34895.     LC_CTYPE           This variable shall determine the locale for the
  34896.                        interpretation of sequences of bytes of text data
  34897.                        as characters (e.g., single- versus multibyte
  34898.                        characters in arguments).
  34899.  
  34900.     LC_MESSAGES        This variable shall determine the language in which
  34901.                        messages should be written.
  34902.  
  34903.  
  34904.  
  34905.                Copyright c 1991 IEEE.  All rights reserved.
  34906.       This is an unapproved IEEE Standards Draft, subject to change.
  34907.  
  34908.  
  34909.  
  34910.  
  34911.  
  34912.  4.21 env - Set environment for command invocation                     499
  34913.  
  34914.  
  34915.  
  34916.  
  34917.  
  34918.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  34919.  
  34920.     PATH               This variable shall determine the location of the
  34921.                        _u_t_i_l_i_t_y, as described in 2.6.  If PATH is specified
  34922.                        as a _n_a_m_e=_v_a_l_u_e operand to env, the _v_a_l_u_e given
  34923.                        shall be used in the search for _u_t_i_l_i_t_y.
  34924.  
  34925.  
  34926.  4.21.5.4  Asynchronous Events
  34927.  
  34928.  Default.
  34929.  
  34930.  
  34931.  4.21.6  External Effects
  34932.  
  34933.  4.21.6.1  Standard Output
  34934.  
  34935.  If no _u_t_i_l_i_t_y operand is specified, each _n_a_m_e=_v_a_l_u_e pair in the resulting
  34936.  environment shall be written in the form:
  34937.  
  34938.        "%s=%s\n", <_n_a_m_e>, <_v_a_l_u_e>
  34939.  
  34940.  If the _u_t_i_l_i_t_y operand is specified, the env utility shall not write to
  34941.  standard output.
  34942.  
  34943.  
  34944.  4.21.6.2  Standard Error
  34945.  
  34946.  Used only for diagnostic messages.
  34947.  
  34948.  4.21.6.3  Output Files
  34949.  
  34950.  None.
  34951.  
  34952.  
  34953.  4.21.7  Extended Description
  34954.  
  34955.  None.
  34956.  
  34957.  
  34958.  4.21.8  Exit Status
  34959.  
  34960.  If the _u_t_i_l_i_t_y utility is invoked, the exit status of env shall be the
  34961.  exit status of _u_t_i_l_i_t_y; otherwise, the env utility shall exit with one of
  34962.  the following values:
  34963.  
  34964.         0    The env utility completed successfully.
  34965.  
  34966.     1-125    An error occurred in the env utility.                          1
  34967.  
  34968.  
  34969.  
  34970.  
  34971.                Copyright c 1991 IEEE.  All rights reserved.
  34972.       This is an unapproved IEEE Standards Draft, subject to change.
  34973.  
  34974.  
  34975.  
  34976.  
  34977.  
  34978.  500                                     4 Execution Environment Utilities
  34979.  
  34980.  
  34981.  
  34982.  
  34983.  
  34984.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  34985.  
  34986.       126    The utility specified by _u_t_i_l_i_t_y was found but could not be    1
  34987.              invoked.                                                       1
  34988.  
  34989.       127    The utility specified by _u_t_i_l_i_t_y could not be found.           1
  34990.  
  34991.  
  34992.  4.21.9  Consequences of Errors
  34993.  
  34994.  Default.
  34995.  
  34996.  BEGIN_RATIONALE
  34997.  
  34998.  
  34999.  4.21.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  35000.  
  35001.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  35002.  
  35003.  The following command:
  35004.  
  35005.        env -i PATH=/mybin mygrep xyz myfile
  35006.  
  35007.  invokes the command mygrep with a new PATH value as the only entry in its
  35008.  environment.  In this case, PATH is used to locate mygrep, which then
  35009.  must reside in /mybin.
  35010.  
  35011.  As with all other utilities that invoke other utilities, the standard
  35012.  only specifies what env does with standard input, standard output,
  35013.  standard error, input files, and output files.  If a utility is executed,
  35014.  it is not constrained by env's specification of input and output.
  35015.  
  35016.  The command, env, nohup, and xargs utilities have been specified to use
  35017.  exit code 127 if an error occurs so that applications can distinguish      1
  35018.  ``failure to find a utility'' from ``invoked utility exited with an error  1
  35019.  indication.''  The value 127 was chosen because it is not commonly used    1
  35020.  for other meanings; most utilities use small values for ``normal error
  35021.  conditions'' and the values above 128 can be confused with termination
  35022.  due to receipt of a signal.  The value 126 was chosen in a similar manner  1
  35023.  to indicate that the utility could be found, but not invoked.  Some        1
  35024.  scripts produce meaningful error messages differentiating the 126 and 127  1
  35025.  cases.  The distinction between exit codes 126 and 127 is based on         2
  35026.  KornShell practice that uses 127 when all attempts to _e_x_e_c the utility     2
  35027.  fail with [ENOENT], and uses 126 when any attempt to _e_x_e_c the utility      2
  35028.  fails for any other reason.                                                2
  35029.  
  35030.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  35031.  
  35032.  The -i option was added to allow the functionality of the - option in a
  35033.  manner compatible with the Utility Syntax Guidelines.  It is the intent
  35034.  of the working group that portable applications use the -i option, and
  35035.  
  35036.  
  35037.                Copyright c 1991 IEEE.  All rights reserved.
  35038.       This is an unapproved IEEE Standards Draft, subject to change.
  35039.  
  35040.  
  35041.  
  35042.  
  35043.  
  35044.  4.21 env - Set environment for command invocation                     501
  35045.  
  35046.  
  35047.  
  35048.  
  35049.  
  35050.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  35051.  
  35052.  that in the future the - option be removed from the standard.
  35053.  
  35054.  Historical implementations of the env utility use _e_x_e_c_v_p() or _e_x_e_c_l_p()
  35055.  (see POSIX.1 {8} 3.1.2) to invoke the specified utility; this provides
  35056.  better performance and keeps users from having to escape characters with
  35057.  special meaning to the shell.  Therefore, shell functions, special
  35058.  built-ins, and built-ins that are only provided by the shell are not
  35059.  found.  Implementations are free to invoke a shell instead of using one
  35060.  of the _e_x_e_c family of routines, but if they do, they must be sure to
  35061.  escape any characters with special meaning to the shell so that the user
  35062.  does not have to be aware of the difference.
  35063.  
  35064.  Some have suggested that env is redundant since the same effect is
  35065.  achieved by:
  35066.  
  35067.        name=value ... utility  [argument ...]
  35068.  
  35069.  The example is equivalent to env when an environment variable is being
  35070.  added to the environment of the command, but not when the environment is
  35071.  being set to the given value.  The env utility also writes out the
  35072.  current environment if invoked without arguments.  There is sufficient
  35073.  functionality beyond what the example provides to justify inclusion of
  35074.  env.
  35075.  
  35076.  END_RATIONALE
  35077.  
  35078.  
  35079.  
  35080.  
  35081.  
  35082.  
  35083.  
  35084.  
  35085.  
  35086.  
  35087.  
  35088.  
  35089.  
  35090.  
  35091.  
  35092.  
  35093.  
  35094.  
  35095.  
  35096.  
  35097.  
  35098.  
  35099.  
  35100.  
  35101.  
  35102.  
  35103.                Copyright c 1991 IEEE.  All rights reserved.
  35104.       This is an unapproved IEEE Standards Draft, subject to change.
  35105.  
  35106.  
  35107.  
  35108.  
  35109.  
  35110.  502                                     4 Execution Environment Utilities
  35111.  
  35112.  
  35113.  
  35114.  
  35115.  
  35116.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  35117.  
  35118.  4.22  expr - Evaluate arguments as an expression
  35119.  
  35120.  
  35121.  4.22.1  Synopsis
  35122.  
  35123.  
  35124.  expr  _o_p_e_r_a_n_d ...
  35125.  
  35126.  
  35127.  4.22.2  Description
  35128.  
  35129.  The expr utility shall evaluate an expression and write the result to
  35130.  standard output.
  35131.  
  35132.  
  35133.  4.22.3  Options
  35134.  
  35135.  None.
  35136.  
  35137.  
  35138.  4.22.4  Operands
  35139.  
  35140.  The single expression evaluated by expr shall be formed from the
  35141.  operands, as described in 4.22.7.  Each of the expression operator
  35142.  symbols:
  35143.  
  35144.        (     )     |     &     =     >     >=     <     <=     !=     +     -     *     /     %     :
  35145.  
  35146.  and the symbols _i_n_t_e_g_e_r and _s_t_r_i_n_g in the table shall be provided by the
  35147.  application as separate arguments to expr.
  35148.  
  35149.  
  35150.  4.22.5  External Influences
  35151.  
  35152.  4.22.5.1  Standard Input
  35153.  
  35154.  None.
  35155.  
  35156.  
  35157.  4.22.5.2  Input Files
  35158.  
  35159.  None.
  35160.  
  35161.  4.22.5.3  Environment Variables
  35162.  
  35163.  The following environment variables shall affect the execution of expr:
  35164.  
  35165.  
  35166.  
  35167.  
  35168.  
  35169.                Copyright c 1991 IEEE.  All rights reserved.
  35170.       This is an unapproved IEEE Standards Draft, subject to change.
  35171.  
  35172.  
  35173.  
  35174.  
  35175.  
  35176.  4.22 expr - Evaluate arguments as an expression                       503
  35177.  
  35178.  
  35179.  
  35180.  
  35181.  
  35182.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  35183.  
  35184.     LANG               This variable shall determine the locale to use for
  35185.                        the locale categories when both LC_ALL and the
  35186.                        corresponding environment variable (beginning with
  35187.                        LC_) do not specify a locale.  See 2.6.
  35188.  
  35189.     LC_ALL             This variable shall determine the locale to be used
  35190.                        to override any values for locale categories
  35191.                        specified by the settings of LANG or any
  35192.                        environment variables beginning with LC_.
  35193.  
  35194.     LC_COLLATE         This variable shall determine the locale for the
  35195.                        behavior of ranges, equivalence classes, and
  35196.                        multicharacter collating elements within regular
  35197.                        expressions and by the string comparison operators.
  35198.  
  35199.     LC_CTYPE           This variable shall determine the locale for the
  35200.                        interpretation of sequences of bytes of text data
  35201.                        as characters (e.g., single- versus multibyte
  35202.                        characters in arguments) and the behavior of
  35203.                        character classes within regular expressions.
  35204.  
  35205.     LC_MESSAGES        This variable shall determine the language in which
  35206.                        messages should be written.
  35207.  
  35208.  
  35209.  4.22.5.4  Asynchronous Events
  35210.  
  35211.  Default.
  35212.  
  35213.  
  35214.  4.22.6  External Effects
  35215.  
  35216.  4.22.6.1  Standard Output
  35217.  
  35218.  The expr utility shall evaluate the expression and write the result to
  35219.  standard output.  The character '0' shall be written to indicate a zero
  35220.  value and nothing shall be written to indicate a null string.
  35221.  
  35222.  
  35223.  4.22.6.2  Standard Error
  35224.  
  35225.  Used only for diagnostic messages.
  35226.  
  35227.  4.22.6.3  Output Files
  35228.  
  35229.  None.
  35230.  
  35231.  
  35232.  
  35233.  
  35234.  
  35235.                Copyright c 1991 IEEE.  All rights reserved.
  35236.       This is an unapproved IEEE Standards Draft, subject to change.
  35237.  
  35238.  
  35239.  
  35240.  
  35241.  
  35242.  504                                     4 Execution Environment Utilities
  35243.  
  35244.  
  35245.  
  35246.  
  35247.  
  35248.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  35249.  
  35250.  4.22.7  Extended Description
  35251.  
  35252.  The formation of the expression to be evaluated is shown in Table 4-7.
  35253.  The symbols _e_x_p_r, _e_x_p_r_1, and _e_x_p_r_2 represent expressions formed from
  35254.  _i_n_t_e_g_e_r and _s_t_r_i_n_g symbols and the expression operator symbols (all
  35255.  separate arguments) by recursive application of the constructs described
  35256.  in the table.  The expressions in Table 4-7 are listed in order of
  35257.  increasing precedence, with equal-precedence operators grouped between
  35258.  horizontal lines.  All of the operators shall be left-associative.
  35259.  
  35260.  
  35261.                       Table 4-7  -  expr Expressions
  35262.  
  35263.  _________________________________________________________________________
  35264.  _____E_x_p_r_e_s_s_i_o_n____________________________D_e_s_c_r_i_p_t_i_o_n_____________________
  35265.  
  35266.     _e_x_p_r_1 | _e_x_p_r_2           Returns the evaluation of _e_x_p_r_1 if it is
  35267.                             neither null nor zero; otherwise, returns
  35268.                             the evaluation of _e_x_p_r_2.
  35269.  _________________________________________________________________________
  35270.     _e_x_p_r_1 & _e_x_p_r_2           Returns the evaluation of _e_x_p_r_1 if neither
  35271.                             expression evaluates to null or zero;
  35272.  ___________________________o_t_h_e_r_w_i_s_e_,__r_e_t_u_r_n_s__z_e_r_o_._______________________
  35273.                             Returns the result of a decimal integer
  35274.                             comparison if both arguments are integers;
  35275.                             otherwise, returns the result of a string
  35276.                             comparison using the locale-specific
  35277.                             collation sequence.  The result of each
  35278.                             comparison shall be 1 if the specified
  35279.                             relation is true, or 0 if the relation is
  35280.                             false.
  35281.  
  35282.     _e_x_p_r_1 = _e_x_p_r_2                   _E_q_u_a_l.
  35283.  |  _e_x_p_r_1 > _e_x_p_r_2      |            _G_r_e_a_t_e_r _t_h_a_n.                         |
  35284.  |  _e_x_p_r_1 >= _e_x_p_r_2     |            _G_r_e_a_t_e_r _t_h_a_n _o_r _e_q_u_a_l.                |
  35285.  |  _e_x_p_r_1 < _e_x_p_r_2      |            _L_e_s_s _t_h_a_n.                            |
  35286.  |  _e_x_p_r_1 <= _e_x_p_r_2     |            _L_e_s_s _t_h_a_n _o_r _e_q_u_a_l.                   |
  35287.  |  _e_x_p_r_1 != _e_x_p_r_2     |            _N_o_t _e_q_u_a_l.                            |
  35288.  _|______________________|__________________________________________________|
  35289.  |  _e_x_p_r_1 + _e_x_p_r_2      |    Addition of decimal integer-valued            |
  35290.  |                     |    arguments.                                    |
  35291.  |  _e_x_p_r_1 - _e_x_p_r_2      |    Subtraction of decimal integer-valued         |
  35292.  _|______________________|____a_r_g_u_m_e_n_t_s_._____________________________________|
  35293.  |  _e_x_p_r_1 * _e_x_p_r_2      |    Multiplication of decimal integer-valued      |
  35294.  |                     |    arguments.                                    |
  35295.  |  _e_x_p_r_1 / _e_x_p_r_2      |    Integer division of decimal integer-valued    |
  35296.  |                     |    arguments, producing an integer result.       |
  35297.  |                     |    Remainder of integer division of decimal      |
  35298.  |                     |    integer-valued arguments.                     |
  35299.  |                     |                                                  |
  35300.  |                     |                                                  |
  35301.  |             Copyright| c 1991 IEEE.  All rights reserved.               |
  35302.  |    This is an unappro|ved IEEE Standards Draft, subject to change.      |
  35303.  |                     |                                                  |
  35304.  |                     |                                                  |
  35305.  |                     |                                                  |
  35306.  |                     |                                                  |
  35307.  |                     |                                                  |
  35308.  4|.22 expr - Evaluate ar|guments as an expression                       505|
  35309.  |                     |                                                  |
  35310.  |                     |                                                  |
  35311.  |                     |                                                  |
  35312.  |                     |                                                  |
  35313.  |                     |                                                  |
  35314.  P|1003.2/D11.2         |                     INFORMATION TECHNOLOGY--POSIX|
  35315.  |                     |                                                  |
  35316.  |  _e_x_p_r_1 % _e_x_p_r_2      |                                                  |
  35317.  |                     |                                                  |
  35318.  _|______________________|__________________________________________________|
  35319.  _|____e__x__p__r__1_:____e__x__p__r__2_______|____M_a_t_c_h_i_n_g__e_x_p_r_e_s_s_i_o_n_.___S_e_e__4_._2_2_._7_._1_.____________|
  35320.  |     ( _e_x_p_r )        |    Grouping symbols.  Any expression can be      |
  35321.  |                     |    placed within parentheses.  Parentheses       |
  35322.  |                     |    can be nested to a depth of                   |
  35323.  |                     |    {EXPR_NEST_MAX}.                              |
  35324.  _|______________________|__________________________________________________|
  35325.  |     _i_n_t_e_g_e_r         |    An argument consisting only of an             |
  35326.  |                     |    (optional) unary minus followed by digits.    |
  35327.  _||________s__t__r__i__n__g__________||____A__s_t_r_i_n_g__a_r_g_u_m_e_n_t_.___S_e_e__4_._2_2_._7_._2_.______________||
  35328.  
  35329.  
  35330.  
  35331.  4.22.7.1  Matching Expression
  35332.  
  35333.  The ':' matching operator shall compare the string resulting from the
  35334.  evaluation of _e_x_p_r_1 with the regular expression pattern resulting from
  35335.  the evaluation of _e_x_p_r_2. Regular expression syntax shall be that defined
  35336.  in 2.8.3 (Basic Regular Expressions), except that all patterns are
  35337.  ``anchored'' to the beginning of the string (that is, only sequences
  35338.  starting at the first character of a string shall be matched by the
  35339.  regular expression) and, therefore, it is unspecified whether ^ is a
  35340.  special character in that context.  Usually, the matching operator shall
  35341.  return a string representing the number of characters matched ("0" on
  35342.  failure).  Alternatively, if the pattern contains at least one regular
  35343.  expression subexpression [\(...\)], the string corresponding to \1 shall
  35344.  be returned (see 2.8.3.3).
  35345.  
  35346.  4.22.7.2  String Operand
  35347.  
  35348.  A string argument is an argument that cannot be identified as an _i_n_t_e_g_e_r
  35349.  argument or as one of the expression operator symbols shown in 4.22.4.
  35350.  
  35351.  The use of string arguments length, substr, index, or match produces
  35352.  unspecified results.
  35353.  
  35354.  
  35355.  4.22.8  Exit Status
  35356.  
  35357.  The expr utility shall exit with one of the following values:
  35358.  
  35359.      0    If the _e_x_p_r_e_s_s_i_o_n evaluates to neither null nor zero.
  35360.  
  35361.      1    If the _e_x_p_r_e_s_s_i_o_n evaluates to null or zero.
  35362.  
  35363.      2    For invalid _e_x_p_r_e_s_s_i_o_ns.
  35364.  
  35365.  
  35366.  
  35367.                Copyright c 1991 IEEE.  All rights reserved.
  35368.       This is an unapproved IEEE Standards Draft, subject to change.
  35369.  
  35370.  
  35371.  
  35372.  
  35373.  
  35374.  506                                     4 Execution Environment Utilities
  35375.  
  35376.  
  35377.  
  35378.  
  35379.  
  35380.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  35381.  
  35382.     >2    An error occurred.
  35383.  
  35384.  
  35385.  4.22.9  Consequences of Errors
  35386.  
  35387.  Default.
  35388.  
  35389.  BEGIN_RATIONALE
  35390.  
  35391.  
  35392.  4.22.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  35393.  
  35394.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  35395.  
  35396.  The expr utility has a rather difficult syntax:
  35397.  
  35398.      - Many of the operators are also shell control operators or reserved
  35399.        words, so they have to be escaped on the command line.
  35400.  
  35401.      - Each part of the expression is composed of separate arguments, so
  35402.        liberal usage of <blank>s is required.  For example:
  35403.  
  35404.                         Invalid                Valid
  35405.                     ________________   _____________________
  35406.                     expr 1+2           expr 1 + 2
  35407.                     expr "1 + 2"       expr 1 + 2
  35408.                     expr 1 + (2 * 3)   expr 1 + \( 2 \* 3 \)
  35409.  
  35410.  In many cases, the arithmetic and string features provided as part of the
  35411.  shell command language are easier to use than their equivalents in expr;
  35412.  the utility was retained by POSIX.2 as acknowledgment of the many
  35413.  historical shell scripts that use it.  Newly written scripts should avoid
  35414.  expr in favor of the new features within the shell.
  35415.  
  35416.  The following command
  35417.  
  35418.        _a=$(_e_x_p_r $_a + _1)
  35419.  
  35420.  adds 1 to the variable a.  A new application should use                    1
  35421.  
  35422.        a=$(($a+1))                                                          1
  35423.  
  35424.  The following command, for $a equal to either /usr/abc/file or just file:
  35425.  
  35426.        expr $a : '.*/\(.*\)' \| $a
  35427.  
  35428.  returns the last segment of a pathname (i.e., file).  Applications should
  35429.  avoid the character / used alone as an argument:  expr may interpret it
  35430.  as the division operator.
  35431.  
  35432.  
  35433.                Copyright c 1991 IEEE.  All rights reserved.
  35434.       This is an unapproved IEEE Standards Draft, subject to change.
  35435.  
  35436.  
  35437.  
  35438.  
  35439.  
  35440.  4.22 expr - Evaluate arguments as an expression                       507
  35441.  
  35442.  
  35443.  
  35444.  
  35445.  
  35446.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  35447.  
  35448.  The following command:
  35449.  
  35450.        expr "//$a" : '.*/\(.*\)'
  35451.  
  35452.  is a better representation of the previous example.  The addition of the
  35453.  // characters eliminates any ambiguity about the division operator and
  35454.  simplifies the whole expression.  Also note that pathnames may contain
  35455.  characters contained in the IFS variable and should be quoted to avoid
  35456.  having $a expand into multiple arguments.
  35457.  
  35458.  The following command
  35459.  
  35460.        expr "$VAR" : '.*'
  35461.  
  35462.  returns the number of characters in VAR.
  35463.  
  35464.  Usage Warning:  After argument processing by the shell, expr is not
  35465.  required to be able to tell the difference between an operator and an
  35466.  operand except by the value.  If $a is =, the command:
  35467.  
  35468.        expr $a = '='
  35469.  
  35470.  looks like:
  35471.  
  35472.        expr = = =
  35473.  
  35474.  as the arguments are passed to expr (and they all may be taken as the =
  35475.  operator).  The following works reliably:
  35476.  
  35477.        expr X$a = X=
  35478.  
  35479.  Also note that this standard permits implementations to extend utilities.
  35480.  The expr utility permits the integer arguments to be preceded with a
  35481.  unary minus.  This means that an integer argument could look like an
  35482.  option.  Therefore, the portable application must employ the "--"
  35483.  construct of Guideline 10 (see 2.10.2) to protect its operands if there
  35484.  is any chance the first operand might be a negative integer (or any
  35485.  string with a leading minus).
  35486.  
  35487.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  35488.  
  35489.  In an earlier draft, Extended Regular Expressions were used in the
  35490.  matching expression syntax.  This was changed to the Basic variety to
  35491.  avoid breaking historical applications.
  35492.  
  35493.  The use of a leading circumflex in the regular expression is unspecified
  35494.  because many historical implementations have treated it as special,
  35495.  despite their system documentation.  For example,
  35496.  
  35497.  
  35498.  
  35499.                Copyright c 1991 IEEE.  All rights reserved.
  35500.       This is an unapproved IEEE Standards Draft, subject to change.
  35501.  
  35502.  
  35503.  
  35504.  
  35505.  
  35506.  508                                     4 Execution Environment Utilities
  35507.  
  35508.  
  35509.  
  35510.  
  35511.  
  35512.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  35513.  
  35514.        expr foo : ^foo               expr ^foo : ^foo
  35515.  
  35516.  return 3 and 0, respectively, on those systems; their documentation would
  35517.  imply the reverse.  Thus, the anchoring condition is left unspecified to
  35518.  avoid breaking historical scripts relying on this undocumented feature.
  35519.  
  35520.  END_RATIONALE
  35521.  
  35522.  
  35523.  
  35524.  4.23  false - Return false value
  35525.  
  35526.  
  35527.  4.23.1  Synopsis
  35528.  
  35529.  false
  35530.  
  35531.  
  35532.  4.23.2  Description
  35533.  
  35534.  The false utility shall return with a nonzero exit code.
  35535.  
  35536.  
  35537.  4.23.3  Options
  35538.  
  35539.  None.
  35540.  
  35541.  
  35542.  4.23.4  Operands
  35543.  
  35544.  None.
  35545.  
  35546.  
  35547.  4.23.5  External Influences
  35548.  
  35549.  
  35550.  4.23.5.1  Standard Input
  35551.  
  35552.  None.
  35553.  
  35554.  4.23.5.2  Input Files
  35555.  
  35556.  None.
  35557.  
  35558.  
  35559.  
  35560.  
  35561.  
  35562.  
  35563.  
  35564.  
  35565.                Copyright c 1991 IEEE.  All rights reserved.
  35566.       This is an unapproved IEEE Standards Draft, subject to change.
  35567.  
  35568.  
  35569.  
  35570.  
  35571.  
  35572.  4.23 false - Return false value                                       509
  35573.  
  35574.  
  35575.  
  35576.  
  35577.  
  35578.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  35579.  
  35580.  4.23.5.3  Environment Variables
  35581.  
  35582.  None.
  35583.  
  35584.  
  35585.  4.23.5.4  Asynchronous Events
  35586.  
  35587.  Default.
  35588.  
  35589.  
  35590.  4.23.6  External Effects
  35591.  
  35592.  4.23.6.1  Standard Output
  35593.  
  35594.  None.
  35595.  
  35596.  
  35597.  4.23.6.2  Standard Error
  35598.  
  35599.  None.
  35600.  
  35601.  4.23.6.3  Output Files
  35602.  
  35603.  None.
  35604.  
  35605.  
  35606.  4.23.7  Extended Description
  35607.  
  35608.  None.
  35609.  
  35610.  
  35611.  4.23.8  Exit Status
  35612.  
  35613.  The false utility always shall exit with a value other than zero.
  35614.  
  35615.  
  35616.  4.23.9  Consequences of Errors
  35617.  
  35618.  Default.
  35619.  
  35620.  BEGIN_RATIONALE
  35621.  
  35622.  
  35623.  4.23.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  35624.  
  35625.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  35626.  
  35627.  The false utility is typically used in shell control structures like
  35628.  while.
  35629.  
  35630.  
  35631.                Copyright c 1991 IEEE.  All rights reserved.
  35632.       This is an unapproved IEEE Standards Draft, subject to change.
  35633.  
  35634.  
  35635.  
  35636.  
  35637.  
  35638.  510                                     4 Execution Environment Utilities
  35639.  
  35640.  
  35641.  
  35642.  
  35643.  
  35644.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  35645.  
  35646.  END_RATIONALE
  35647.  
  35648.  
  35649.  
  35650.  4.24  find - Find files
  35651.  
  35652.  
  35653.  4.24.1  Synopsis
  35654.  
  35655.  find  _p_a_t_h ... [_o_p_e_r_a_n_d__e_x_p_r_e_s_s_i_o_n ...]
  35656.  
  35657.  
  35658.  4.24.2  Description
  35659.  
  35660.  The find utility shall recursively descend the directory hierarchy from
  35661.  each file specified by _p_a_t_h, evaluating a Boolean expression composed of
  35662.  the primaries described in 4.24.4 for each file encountered.
  35663.  
  35664.  The find utility shall be able to descend to arbitrary depths in a file
  35665.  hierarchy and shall not fail due to path length limitations (unless a
  35666.  path operand specified by the application exceeds {PATH_MAX}
  35667.  requirements).
  35668.  
  35669.  The find utility requires that the underlying system provides information
  35670.  equivalent to the _s_t__d_e_v, _s_t__m_o_d_e, _s_t__n_l_i_n_k, _s_t__u_i_d, _s_t__g_i_d, _s_t__s_i_z_e,
  35671.  _s_t__a_t_i_m_e, _s_t__m_t_i_m_e, and _s_t__c_t_i_m_e members of _s_t_r_u_c_t _s_t_a_t described by
  35672.  POSIX.1 {8} 5.6 and conforming to the _f_i_l_e _t_i_m_e_s _u_p_d_a_t_e definition in
  35673.  2.2.2.69.
  35674.  
  35675.  
  35676.  4.24.3  Options
  35677.  
  35678.  None.
  35679.  
  35680.  
  35681.  4.24.4  Operands
  35682.  
  35683.  The following operands shall be supported by the implementation:
  35684.  
  35685.  The _p_a_t_h operand is a pathname of a starting point in the directory
  35686.  hierarchy.
  35687.  
  35688.  The first argument that starts with a -, or is a ! or a (, and all
  35689.  subsequent arguments shall be interpreted as an _e_x_p_r_e_s_s_i_o_n made up of the
  35690.  following primaries and operators.  In the descriptions, wherever _n is
  35691.  used as a primary argument, it shall be interpreted as a decimal integer
  35692.  optionally preceded by a plus (+) or minus (-) sign, as follows:
  35693.  
  35694.  
  35695.  
  35696.  
  35697.                Copyright c 1991 IEEE.  All rights reserved.
  35698.       This is an unapproved IEEE Standards Draft, subject to change.
  35699.  
  35700.  
  35701.  
  35702.  
  35703.  
  35704.  4.24 find - Find files                                                511
  35705.  
  35706.  
  35707.  
  35708.  
  35709.  
  35710.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  35711.  
  35712.     +_n    More than _n
  35713.  
  35714.      _n    Exactly _n
  35715.  
  35716.     -_n    Less than _n
  35717.  
  35718.  Implementations shall recognize the following primaries:  _E_d_i_t_o_r'_s _N_o_t_e:
  35719.  _T_h_e_s_e _p_r_i_m_a_r_i_e_s _h_a_v_e _b_e_e_n _s_o_r_t_e_d _a_l_p_h_a_b_e_t_i_c_a_l_l_y, _w_i_t_h_o_u_t _d_i_f_f _m_a_r_k_s.
  35720.  
  35721.     -atime _n           The primary shall evaluate as true if the file
  35722.                        access time subtracted from the initialization time
  35723.                        is _n-1 to _n multiples of 24 hours.  The
  35724.                        initialization time shall be a time between the
  35725.                        invocation of the find utility and the first access
  35726.                        by that invocation of the find utility to any file
  35727.                        specified by its _p_a_t_h operands.
  35728.  
  35729.     -ctime _n           The primary shall evaluate as true if the time of
  35730.                        last change of file status information subtracted
  35731.                        from the initialization time is _n-1 to _n multiples
  35732.                        of 24 hours.  The initialization time shall be a
  35733.                        time between the invocation of the find utility and
  35734.                        the first access by that invocation of the find
  35735.                        utility to any file specified by its _p_a_t_h operands.
  35736.  
  35737.     -depth             The primary always shall evaluate as true; it shall
  35738.                        cause descent of the directory hierarchy to be done
  35739.                        so that all entries in a directory are acted on
  35740.                        before the directory itself.  If a -depth primary
  35741.                        is not specified, all entries in a directory shall
  35742.                        be acted on after the directory itself.  If any
  35743.                        -depth primary is specified, it shall apply to the
  35744.                        entire expression even if the -depth primary would
  35745.                        not normally be evaluated.
  35746.  
  35747.     -exec _u_t_i_l_i_t_y__n_a_m_e [_a_r_g_u_m_e_n_t ...] ;
  35748.                        The primary shall evaluate as true if the invoked
  35749.                        utility _u_t_i_l_i_t_y__n_a_m_e returns a zero value as exit
  35750.                        status.  The end of the primary expression shall be
  35751.                        punctuated by a semicolon.  A _u_t_i_l_i_t_y__n_a_m_e or
  35752.                        _a_r_g_u_m_e_n_t containing only the two characters {}
  35753.                        shall be replaced by the current pathname.  If a
  35754.                        utility_name or argument string contains the two
  35755.                        characters {}, but not just the two characters {},
  35756.                        it is implementation defined whether find replaces
  35757.                        those two characters with the current pathname or
  35758.                        uses the string without change.  The current
  35759.                        directory for the invocation of _u_t_i_l_i_t_y__n_a_m_e shall
  35760.                        be the same as the current directory when the find
  35761.  
  35762.  
  35763.                Copyright c 1991 IEEE.  All rights reserved.
  35764.       This is an unapproved IEEE Standards Draft, subject to change.
  35765.  
  35766.  
  35767.  
  35768.  
  35769.  
  35770.  512                                     4 Execution Environment Utilities
  35771.  
  35772.  
  35773.  
  35774.  
  35775.  
  35776.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  35777.  
  35778.                        utility was started.  If the _u_t_i_l_i_t_y__n_a_m_e names any
  35779.                        of the special built-in utilities in 3.14, the
  35780.                        results are undefined.
  35781.  
  35782.     -group _g_n_a_m_e       The primary shall evaluate as true if the file
  35783.                        belongs to the group _g_n_a_m_e.  If _g_n_a_m_e is a decimal
  35784.                        integer and the _g_e_t_g_r_n_a_m() (or equivalent) function
  35785.                        does not return a valid group name, _g_n_a_m_e shall be
  35786.                        interpreted as a group ID.
  35787.  
  35788.     -links _n           The primary shall evaluate as true if the file has
  35789.                        _n links.
  35790.  
  35791.     -mtime _n           The primary shall evaluate as true if the file
  35792.                        modification time subtracted from the
  35793.                        initialization time is _n-1 to _n multiples of 24
  35794.                        hours.  The initialization time shall be a time
  35795.                        between the invocation of the find utility and the
  35796.                        first access by that invocation of the find utility
  35797.                        to any file specified by its _p_a_t_h operands.
  35798.  
  35799.     -name _p_a_t_t_e_r_n      The primary shall evaluate as true if the basename
  35800.                        of the filename being examined matches _p_a_t_t_e_r_n
  35801.                        using the pattern matching notation described in
  35802.                        3.13.
  35803.  
  35804.     -newer _f_i_l_e        The primary shall evaluate as true if the
  35805.                        modification time of the current file is more
  35806.                        recent than the modification time of the file named
  35807.                        by the pathname _f_i_l_e.
  35808.  
  35809.     -nogroup           The primary shall evaluate as true if the file
  35810.                        belongs to a group ID for which the POSIX.1 {8}
  35811.                        _g_e_t_g_r_g_i_d() (or equivalent) function returns NULL.
  35812.  
  35813.     -nouser            The primary shall evaluate as true if the file
  35814.                        belongs to a user ID for which the POSIX.1 {8}
  35815.                        _g_e_t_p_w_u_i_d() (or equivalent) function returns NULL.
  35816.  
  35817.     -ok _u_t_i_l_i_t_y__n_a_m_e [_a_r_g_u_m_e_n_t ...] ;
  35818.                        The -ok primary shall be equivalent to -exec,
  35819.                        except that find shall request affirmation of the
  35820.                        invocation of _u_t_i_l_i_t_y__n_a_m_e using the current file
  35821.                        as an argument by writing to standard error as,
  35822.                        described in 4.24.6.2.  If the response on standard
  35823.                        input is affirmative, the utility shall be invoked.
  35824.                        Otherwise, the command shall not be invoked and the
  35825.                        value of the -ok operand shall be false.
  35826.  
  35827.  
  35828.  
  35829.                Copyright c 1991 IEEE.  All rights reserved.
  35830.       This is an unapproved IEEE Standards Draft, subject to change.
  35831.  
  35832.  
  35833.  
  35834.  
  35835.  
  35836.  4.24 find - Find files                                                513
  35837.  
  35838.  
  35839.  
  35840.  
  35841.  
  35842.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  35843.  
  35844.     -perm [-]_m_o_d_e      The _m_o_d_e argument is used to represent file mode
  35845.                        bits.  It shall be identical in format to the
  35846.                        _s_y_m_b_o_l_i_c__m_o_d_e operand described in 4.7, and shall
  35847.                        be interpreted as follows.  To start, a template
  35848.                        shall be assumed with all file mode bits cleared.
  35849.                        An _o_p symbol of + shall set the appropriate mode
  35850.                        bits in the template; - shall clear the appropriate
  35851.                        bits; = shall set the appropriate mode bits,
  35852.                        without regard to the contents of process's file
  35853.                        mode creation mask.  The _o_p symbol of - cannot be
  35854.                        the first character of _m_o_d_e.
  35855.  
  35856.                        If the hyphen is omitted, the primary shall
  35857.                        evaluate as true when the file permission bits
  35858.                        exactly match the value of the resulting template.
  35859.  
  35860.                        Otherwise, if _m_o_d_e is prefixed by a hyphen, the
  35861.                        primary shall evaluate as true if at least all the
  35862.                        bits in the resulting template are set in the file
  35863.                        permission bits.
  35864.  
  35865.     -perm [-]_o_n_u_m      (Obsolescent.)  If the hyphen is omitted, the
  35866.                        primary shall evaluate as true when the file
  35867.                        permission bits exactly match the value of the
  35868.                        octal number _o_n_u_m and only the bits corresponding
  35869.                        to the octal mask 07777 shall be compared.  (See
  35870.                        the description of the octal _m_o_d_e in 4.7.)
  35871.                        Otherwise, if _o_n_u_m is prefixed by a hyphen, the
  35872.                        primary shall evaluate as true if at least all of
  35873.                        the bits specified in _o_n_u_m that are also set it the
  35874.                        octal mask 07777 are set.
  35875.  
  35876.     -print             The primary always shall evaluate as true; it shall
  35877.                        cause the current pathname to be written to
  35878.                        standard output.
  35879.  
  35880.     -prune             The primary always shall evaluate as true; it shall
  35881.                        cause find not to descend the current pathname if
  35882.                        it is a directory.  If the -depth primary is
  35883.                        specified, the -prune primary shall have no effect.
  35884.  
  35885.     -size _n[c]         The primary shall evaluate as true if the file size
  35886.                        in bytes, divided by 512 and rounded up to the next
  35887.                        integer, is _n. If _n is followed by the character c,
  35888.                        the size shall be in bytes.
  35889.  
  35890.     -type _c            The primary shall evaluate as true if the type of
  35891.                        the file is _c, where _c is b, c, d, p, or f for
  35892.                        block special file, character special file,
  35893.  
  35894.  
  35895.                Copyright c 1991 IEEE.  All rights reserved.
  35896.       This is an unapproved IEEE Standards Draft, subject to change.
  35897.  
  35898.  
  35899.  
  35900.  
  35901.  
  35902.  514                                     4 Execution Environment Utilities
  35903.  
  35904.  
  35905.  
  35906.  
  35907.  
  35908.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  35909.  
  35910.                        directory, FIFO, or regular file, respectively.
  35911.  
  35912.     -user _u_n_a_m_e        The primary shall evaluate as true if the file
  35913.                        belongs to the user _u_n_a_m_e. If _u_n_a_m_e is a decimal
  35914.                        integer and the _g_e_t_p_w_n_a_m() (or equivalent) function
  35915.                        does not return a valid user name, _u_n_a_m_e shall be
  35916.                        interpreted as a user ID.
  35917.  
  35918.     -xdev              The primary always shall evaluate as true; it shall
  35919.                        cause find not to continue descending past
  35920.                        directories that have a different device ID
  35921.                        (_s_t__d_e_v, see POSIX.1 {8} 5.6.2).  If any -xdev
  35922.                        primary is specified, it shall apply to the entire
  35923.                        expression even if the -xdev primary would not
  35924.                        normally be evaluated.
  35925.  
  35926.  The primaries can be combined using the following operators (in order of
  35927.  decreasing precedence):
  35928.  
  35929.     ( _e_x_p_r_e_s_s_i_o_n )     True if _e_x_p_r_e_s_s_i_o_n is true.
  35930.  
  35931.     ! _e_x_p_r_e_s_s_i_o_n       Negation of a primary; the unary NOT operator.
  35932.  
  35933.     _e_x_p_r_e_s_s_i_o_n [-a] _e_x_p_r_e_s_s_i_o_n
  35934.                        Conjunction of primaries; the AND operator shall be
  35935.                        implied by the juxtaposition of two primaries or
  35936.                        made explicit by the optional -a operator.  The
  35937.                        second expression shall not be evaluated if the
  35938.                        first expression is false.
  35939.  
  35940.     _e_x_p_r_e_s_s_i_o_n -_o _e_x_p_r_e_s_s_i_o_n
  35941.                        Alternation of primaries; the OR operator.  The
  35942.                        second expression shall not be evaluated if the
  35943.                        first expression is true.
  35944.  
  35945.  If no _e_x_p_r_e_s_s_i_o_n is present, -print shall be used as the expression.
  35946.  Otherwise, if the given expression does not contain any of the primaries
  35947.  -exec, -ok, or -print, the given expression shall be effectively replaced
  35948.  by:
  35949.  
  35950.        ( _g_i_v_e_n__e_x_p_r_e_s_s_i_o_n ) -print
  35951.  
  35952.  The -user, -group, and -newer primaries each shall evaluate their
  35953.  respective arguments only once.
  35954.  
  35955.  
  35956.  
  35957.  
  35958.  
  35959.  
  35960.  
  35961.                Copyright c 1991 IEEE.  All rights reserved.
  35962.       This is an unapproved IEEE Standards Draft, subject to change.
  35963.  
  35964.  
  35965.  
  35966.  
  35967.  
  35968.  4.24 find - Find files                                                515
  35969.  
  35970.  
  35971.  
  35972.  
  35973.  
  35974.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  35975.  
  35976.  4.24.5  External Influences
  35977.  
  35978.  
  35979.  4.24.5.1  Standard Input
  35980.  
  35981.  If the -ok primary is used, the response shall be read from the standard
  35982.  input.  An entire line shall be read as the response.  Otherwise, the
  35983.  standard input shall not be used.
  35984.  
  35985.  4.24.5.2  Input Files
  35986.  
  35987.  None.
  35988.  
  35989.  
  35990.  4.24.5.3  Environment Variables
  35991.  
  35992.  The following environment variables shall affect the execution of find:
  35993.  
  35994.     LANG               This variable shall determine the locale to use for
  35995.                        the locale categories when both LC_ALL and the
  35996.                        corresponding environment variable (beginning with
  35997.                        LC_) do not specify a locale.  See 2.6.
  35998.  
  35999.     LC_ALL             This variable shall determine the locale to be used
  36000.                        to override any values for locale categories
  36001.                        specified by the settings of LANG or any
  36002.                        environment variables beginning with LC_.
  36003.  
  36004.     LC_COLLATE         This variable shall determine the locale for the
  36005.                        behavior of ranges, equivalence classes, and
  36006.                        multicharacter collating elements used in the
  36007.                        pattern matching notation for the -name option and
  36008.                        in the extended regular expression defined for the
  36009.                        yesexpr locale keyword in the LC_MESSAGES category.
  36010.  
  36011.     LC_CTYPE           This variable shall determine the locale for the
  36012.                        interpretation of sequences of bytes of text data
  36013.                        as characters (e.g., single- versus multibyte
  36014.                        characters in arguments), the behavior of character
  36015.                        classes within the pattern matching notation used
  36016.                        for the -name option, and the behavior of character
  36017.                        classes within regular expressions used in the
  36018.                        extended regular expression defined for the yesexpr
  36019.                        locale keyword in the LC_MESSAGES category.
  36020.  
  36021.     LC_MESSAGES        This variable shall determine the processing of
  36022.                        affirmative responses and the language in which
  36023.                        messages should be written.
  36024.  
  36025.  
  36026.  
  36027.                Copyright c 1991 IEEE.  All rights reserved.
  36028.       This is an unapproved IEEE Standards Draft, subject to change.
  36029.  
  36030.  
  36031.  
  36032.  
  36033.  
  36034.  516                                     4 Execution Environment Utilities
  36035.  
  36036.  
  36037.  
  36038.  
  36039.  
  36040.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  36041.  
  36042.     PATH               This variable shall determine the location of the
  36043.                        _u_t_i_l_i_t_y__n_a_m_e for the -exec and -ok primaries, as
  36044.                        described in 2.6.
  36045.  
  36046.  
  36047.  4.24.5.4  Asynchronous Events
  36048.  
  36049.  Default.
  36050.  
  36051.  
  36052.  4.24.6  External Effects
  36053.  
  36054.  4.24.6.1  Standard Output
  36055.  
  36056.  The -print primary shall cause the current pathnames to be written to
  36057.  standard output.  The format shall be:
  36058.  
  36059.        "%s\n", <_p_a_t_h>
  36060.  
  36061.  
  36062.  4.24.6.2  Standard Error
  36063.  
  36064.  The -ok primary shall write a prompt to standard error containing at
  36065.  least the utility_name to be invoked and the current pathname.  In the
  36066.  POSIX Locale, the last non-<blank> character in the prompt shall be ?.
  36067.  The exact format used is unspecified.
  36068.  
  36069.  Otherwise, the standard error shall be used only for diagnostic messages.
  36070.  
  36071.  4.24.6.3  Output Files
  36072.  
  36073.  None.
  36074.  
  36075.  
  36076.  4.24.7  Extended Description
  36077.  
  36078.  None.
  36079.  
  36080.  
  36081.  4.24.8  Exit Status
  36082.  
  36083.  The find utility shall exit with one of the following values:
  36084.  
  36085.      0    All _p_a_t_h operands were traversed successfully.
  36086.  
  36087.     >0    An error occurred.
  36088.  
  36089.  
  36090.  
  36091.  
  36092.  
  36093.                Copyright c 1991 IEEE.  All rights reserved.
  36094.       This is an unapproved IEEE Standards Draft, subject to change.
  36095.  
  36096.  
  36097.  
  36098.  
  36099.  
  36100.  4.24 find - Find files                                                517
  36101.  
  36102.  
  36103.  
  36104.  
  36105.  
  36106.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  36107.  
  36108.  4.24.9  Consequences of Errors
  36109.  
  36110.  Default.
  36111.  
  36112.  BEGIN_RATIONALE
  36113.  
  36114.  
  36115.  4.24.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  36116.  
  36117.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  36118.  
  36119.  When used in operands, pattern matching notation, semicolons, opening
  36120.  parentheses, and closing parentheses are special to the shell and must be
  36121.  quoted (see 3.2).
  36122.  
  36123.  The following command:
  36124.  
  36125.        find / \( -name tmp -o -name '*.xx' \) \
  36126.                -atime +7 -exec rm {} \;
  36127.  
  36128.  removes all files named tmp or ending in .xx that have not been accessed
  36129.  for seven or more 24-hour periods.
  36130.  
  36131.  The following command:
  36132.  
  36133.        find . -perm -o+w,+s
  36134.  
  36135.  prints (-print is assumed) the names of all files in or below the current
  36136.  directory, with all of the file permission bits S_ISUID, S_ISGID, and
  36137.  S_IWOTH set.
  36138.  
  36139.  The -prune primary was adopted from later releases of 4.3BSD and the       1
  36140.  third edition of the _S_V_I_D.  The following command recursively prints       1
  36141.  pathnames of all files in the current directory and below, but skips
  36142.  directories named SCCS and files in them.
  36143.  
  36144.        find . -name SCCS -prune -o -print
  36145.  
  36146.  The following command behaves as in the previous example, but prints the
  36147.  names of the SCCS directories.
  36148.  
  36149.        find . -print -name SCCS -prune
  36150.  
  36151.  The following command is roughly equivalent to the -nt extension to test:  1
  36152.  
  36153.        if [ -n "$(find file1 -prune -newer file2)" ]; then                  2
  36154.                printf %s\\n "file1 is newer than file2"                     2
  36155.        fi                                                                   1
  36156.  
  36157.  
  36158.  
  36159.                Copyright c 1991 IEEE.  All rights reserved.
  36160.       This is an unapproved IEEE Standards Draft, subject to change.
  36161.  
  36162.  
  36163.  
  36164.  
  36165.  
  36166.  518                                     4 Execution Environment Utilities
  36167.  
  36168.  
  36169.  
  36170.  
  36171.  
  36172.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  36173.  
  36174.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  36175.  
  36176.  The historical -a operator is kept as an optional operator for
  36177.  compatibility with existing shell scripts even though it is redundant
  36178.  with expression concatenation.
  36179.  
  36180.  The symbolic means of specifying file permission bits, based on chmod,
  36181.  was added in response to numerous balloting objections that find was the
  36182.  only remaining utility to not support this method.  The warning about a
  36183.  leading _O_p of - is to avoid ambiguity with the optional leading hyphen.
  36184.  Since the initial mode is all bits off, there are not any symbolic modes
  36185.  that need to use - as the first character.  The bit that is traditionally
  36186.  used for sticky (historically 01000) is still specified in the -perm
  36187.  primary using the octal number argument form.  Since this bit is not
  36188.  defined by POSIX.1 {8} or POSIX.2, applications must not assume that it
  36189.  actually refers to the traditional sticky bit.
  36190.  
  36191.  The descriptions of how the - modifier on the _m_o_d_e and _o_n_u_m arguments to
  36192.  the -perm primary affects processing has been documented here to match
  36193.  the way it behaves in practice on historical BSD and System V
  36194.  implementations.  System V and BSD documentation both describe it in
  36195.  terms of checking additional bits; in fact, it uses the same bits, but
  36196.  checks for having at least all of the matching bits set instead of having
  36197.  exactly the matching bits set.
  36198.  
  36199.  The exact format of the interactive prompts is unspecified.  Only the
  36200.  general nature of the contents of prompts are specified, because:
  36201.  
  36202.      (1)  Implementations may desire more descriptive prompts than those
  36203.           used on historical implementations.
  36204.  
  36205.      (2)  Since the traditional prompt strings do not terminate with
  36206.           <newline>s, there is no portable way for another program to
  36207.           interact with the prompts of this utility via pipes.
  36208.  
  36209.  Therefore, an application using this prompting option relies on the
  36210.  system to provide the most suitable dialogue directly with the user,
  36211.  based on the general guidelines specified.
  36212.  
  36213.  The -name _f_i_l_e operand was changed to use the shell pattern matching
  36214.  notation so that find is consistent with other utilities using pattern
  36215.  matching.
  36216.  
  36217.  For the -type _c operand, implementors of symbolic links should consider l
  36218.  (the letter ell) for symbolic links.  Implementations that support
  36219.  sockets also use -type s for sockets.  Implementations planning to add
  36220.  options to allow find to follow symbolic links or treat them as special
  36221.  files, should consider using -follow as used in BSD and System V Release
  36222.  4 as a guide.
  36223.  
  36224.  
  36225.                Copyright c 1991 IEEE.  All rights reserved.
  36226.       This is an unapproved IEEE Standards Draft, subject to change.
  36227.  
  36228.  
  36229.  
  36230.  
  36231.  
  36232.  4.24 find - Find files                                                519
  36233.  
  36234.  
  36235.  
  36236.  
  36237.  
  36238.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  36239.  
  36240.  The -size operand refers to the size of a file, rather than the number of  2
  36241.  blocks it may occupy in the file system.  The intent is that the           2
  36242.  POSIX.1 {8} _s_t__s_i_z_e field should be used, not the _s_t__b_l_o_c_k_s found in       2
  36243.  historical implementations.  There are at least two reasons for this:      2
  36244.  
  36245.      - In both System V and BSD, find only uses _s_t__s_i_z_e in size             2
  36246.        calculations for the operands specified by POSIX.2.  (BSD uses       2
  36247.        _s_t__b_l_o_c_k_s only when processing the -ls primary.)                     2
  36248.  
  36249.      - Users will usually be thinking of size in terms of the size of the   2
  36250.        file in bytes, which is also used by the ls utility for the output   2
  36251.        from the -l option.  (In both System V in BSD, ls uses _s_t__s_i_z_e for   2
  36252.        the -l option size field and uses _s_t__b_l_o_c_k_s for the ls -s            2
  36253.        calculations.  POSIX.2 does not specify ls -s.)                      2
  36254.  
  36255.  The descriptions of -atime, -ctime, and -mtime were changed from the
  36256.  _S_V_I_D's description of _n ``days'' to ``24-hour periods.''  For example, a
  36257.  file accessed at 23:59 will be selected by
  36258.  
  36259.        find . -atime -1 -print
  36260.  
  36261.  at 00:01 the next day (less than 24 hours later, not more than one day
  36262.  ago); the midnight boundary between days has no effect on the 24-hour
  36263.  calculation.  The description is also different in terms of the exact      1
  36264.  timeframe for the _n case (versus the +_n or -_n), but it matches all known   1
  36265.  historical implementations.  It refers to one 24-hour period in the past,  1
  36266.  not any time from the beginning of that period to the current time.  For   1
  36267.  example, -atime 3 is true if the file was accessed any time in the period  1
  36268.  from 72 to 48 hours ago.                                                   1
  36269.  
  36270.  Historical implementations do not modify {} when it appears as a
  36271.  substring of an -exec or -ok _u_t_i_l_i_t_y__n_a_m_e or argument string.  There have
  36272.  been numerous user requests for this extension, so this standard allows
  36273.  the desired behavior.  At least one recent implementation does support
  36274.  this feature, but ran into several problems in managing memory allocation
  36275.  and dealing with multiple occurrences of {} in a string while it was
  36276.  being developed, so it is not yet required behavior.
  36277.  
  36278.  Assuming the presence of -print was added at the request of several
  36279.  working group members to correct a historical pitfall that plagues novice
  36280.  users.  It is entirely upward compatible from the historical System V
  36281.  find utility and should be easy to implement.  In its simplest form (find
  36282.  _d_i_r_e_c_t_o_r_y), it could be confused with the historical BSD fast find.  The
  36283.  BSD developers agree that adding -print as a default expression is the
  36284.  right thing to do and believe that the fast find functionality should
  36285.  have been/should be provided by a separate utility.  They suggest that
  36286.  the new utility be called locate.
  36287.  
  36288.  
  36289.  
  36290.  
  36291.                Copyright c 1991 IEEE.  All rights reserved.
  36292.       This is an unapproved IEEE Standards Draft, subject to change.
  36293.  
  36294.  
  36295.  
  36296.  
  36297.  
  36298.  520                                     4 Execution Environment Utilities
  36299.  
  36300.  
  36301.  
  36302.  
  36303.  
  36304.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  36305.  
  36306.  END_RATIONALE
  36307.  
  36308.  
  36309.  
  36310.  4.25  fold - Fold lines
  36311.  
  36312.  
  36313.  4.25.1  Synopsis
  36314.  
  36315.  fold  [-bs] [-w _w_i_d_t_h] [_f_i_l_e ...]
  36316.  
  36317.  
  36318.  4.25.2  Description
  36319.  
  36320.  The fold utility is a filter that shall fold lines from its input files,
  36321.  breaking the lines to have a maximum of _w_i_d_t_h column positions (or bytes,
  36322.  if the -b option is specified).  Lines shall be broken by the insertion
  36323.  of a <newline> character such that each output line (referred to later in
  36324.  this clause as a segment) is the maximum width possible that does not
  36325.  exceed the specified number of column positions (or bytes).  A line shall
  36326.  not be broken in the middle of a character.  The behavior is undefined if
  36327.  _w_i_d_t_h is less than the number of columns any single character in the
  36328.  input would occupy.
  36329.  
  36330.  If the <carriage-return>, <backspace>, or <tab> characters are             2
  36331.  encountered in the input, and the -b option is not specified, they shall
  36332.  be treated specially:
  36333.  
  36334.     <carriage-return>                                                       2
  36335.            The current count of line width shall be set to zero.  The fold  2
  36336.            utility shall not insert a <newline> immediately before or       2
  36337.            after any <carriage-return>.                                     2
  36338.  
  36339.     <backspace>
  36340.            The current count of line width shall be decremented by one,
  36341.            although the count never shall become negative.  The fold
  36342.            utility shall not insert a <newline> immediately before or
  36343.            after any <backspace>.
  36344.  
  36345.     <tab>  Each <tab> character encountered shall advance the column
  36346.            position pointer to the next tab stop.  Tab stops shall be at
  36347.            each column position _n such that _n modulo 8 equals 1.
  36348.  
  36349.  
  36350.  
  36351.  
  36352.  
  36353.  
  36354.  
  36355.  
  36356.  
  36357.                Copyright c 1991 IEEE.  All rights reserved.
  36358.       This is an unapproved IEEE Standards Draft, subject to change.
  36359.  
  36360.  
  36361.  
  36362.  
  36363.  
  36364.  4.25 fold - Fold lines                                                521
  36365.  
  36366.  
  36367.  
  36368.  
  36369.  
  36370.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  36371.  
  36372.  4.25.3  Options
  36373.  
  36374.  The fold utility shall conform to the utility argument syntax guidelines
  36375.  described in 2.10.2.
  36376.  
  36377.  The following options shall be supported by the implementation:
  36378.  
  36379.     -b          Count _w_i_d_t_h in bytes rather than column positions.
  36380.  
  36381.     -s          If a segment of a line contains a <blank> within the first
  36382.                 _w_i_d_t_h column positions (or bytes), break the line after
  36383.                 the last such <blank> meeting the width constraints.  If
  36384.                 there is no <blank> meeting the requirements, the -s
  36385.                 option shall have no effect for that output segment of the
  36386.                 input line.
  36387.  
  36388.     -w _w_i_d_t_h    Specify the maximum line length, in column positions (or
  36389.                 bytes if -b is specified).  The results are unspecified if
  36390.                 _w_i_d_t_h is not a positive decimal number.  The default value
  36391.                 shall be 80.
  36392.  
  36393.  
  36394.  4.25.4  Operands
  36395.  
  36396.  The following operand shall be supported by the implementation:
  36397.  
  36398.     _f_i_l_e        A pathname of a text file to be folded.  If no _f_i_l_e
  36399.                 operands are specified, the standard input shall be used.
  36400.  
  36401.  
  36402.  4.25.5  External Influences
  36403.  
  36404.  
  36405.  4.25.5.1  Standard Input
  36406.  
  36407.  The standard input shall be used only if no _f_i_l_e operands are specified.
  36408.  See Input Files.
  36409.  
  36410.  4.25.5.2  Input Files
  36411.  
  36412.  If the -b option is specified, the input files shall be text files except
  36413.  that the lines are not limited to {LINE_MAX} bytes in length.  If the -b
  36414.  option is not specified, the input files shall be text files.
  36415.  
  36416.  
  36417.  
  36418.  
  36419.  
  36420.  
  36421.  
  36422.  
  36423.                Copyright c 1991 IEEE.  All rights reserved.
  36424.       This is an unapproved IEEE Standards Draft, subject to change.
  36425.  
  36426.  
  36427.  
  36428.  
  36429.  
  36430.  522                                     4 Execution Environment Utilities
  36431.  
  36432.  
  36433.  
  36434.  
  36435.  
  36436.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  36437.  
  36438.  4.25.5.3  Environment Variables
  36439.  
  36440.  The following environment variables shall affect the execution of fold:
  36441.  
  36442.     LANG               This variable shall determine the locale to use for
  36443.                        the locale categories when both LC_ALL and the
  36444.                        corresponding environment variable (beginning with
  36445.                        LC_) do not specify a locale.  See 2.6.
  36446.  
  36447.     LC_ALL             This variable shall determine the locale to be used
  36448.                        to override any values for locale categories
  36449.                        specified by the settings of LANG or any
  36450.                        environment variables beginning with LC_.
  36451.  
  36452.     LC_CTYPE           This variable shall determine the locale for the
  36453.                        interpretation of sequences of bytes of text data
  36454.                        as characters (e.g., single- versus multibyte
  36455.                        characters in arguments and input files) and for
  36456.                        the determination of the width in column positions
  36457.                        each character would occupy on a constant-width-
  36458.                        font output device.
  36459.  
  36460.     LC_MESSAGES        This variable shall determine the language in which
  36461.                        messages should be written.
  36462.  
  36463.  
  36464.  4.25.5.4  Asynchronous Events
  36465.  
  36466.  Default.
  36467.  
  36468.  
  36469.  4.25.6  External Effects
  36470.  
  36471.  4.25.6.1  Standard Output
  36472.  
  36473.  The standard output shall be a file containing a sequence of characters
  36474.  whose order shall be preserved from the input file(s), possibly with
  36475.  inserted <newline> characters.
  36476.  
  36477.  
  36478.  4.25.6.2  Standard Error
  36479.  
  36480.  Used only for diagnostic messages.
  36481.  
  36482.  
  36483.  
  36484.  
  36485.  
  36486.  
  36487.  
  36488.  
  36489.                Copyright c 1991 IEEE.  All rights reserved.
  36490.       This is an unapproved IEEE Standards Draft, subject to change.
  36491.  
  36492.  
  36493.  
  36494.  
  36495.  
  36496.  4.25 fold - Fold lines                                                523
  36497.  
  36498.  
  36499.  
  36500.  
  36501.  
  36502.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  36503.  
  36504.  4.25.6.3  Output Files
  36505.  
  36506.  None.
  36507.  
  36508.  
  36509.  4.25.7  Extended Description
  36510.  
  36511.  None.
  36512.  
  36513.  
  36514.  4.25.8  Exit Status
  36515.  
  36516.  The fold utility shall exit with one of the following values:
  36517.  
  36518.      0    All input files were processed successfully.
  36519.  
  36520.     >0    An error occurred.
  36521.  
  36522.  
  36523.  4.25.9  Consequences of Errors
  36524.  
  36525.  Default.
  36526.  
  36527.  BEGIN_RATIONALE
  36528.  
  36529.  
  36530.  4.25.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  36531.  
  36532.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  36533.  
  36534.  The cut and fold utilities can be used to create text files out of files
  36535.  with arbitrary line lengths.  The cut utility should be used when the
  36536.  number of lines (or records) needs to remain constant.  The fold utility
  36537.  should be used when the contents of long lines needs to be kept
  36538.  contiguous.
  36539.  
  36540.  The fold utility is frequently used to send text files to line printers
  36541.  that truncate, rather than fold, lines wider than the printer is able to
  36542.  print (usually 80 or 132 column positions.)
  36543.  
  36544.  Although terminal input in canonical processing mode requires the erase
  36545.  character (frequently set to <backspace>) to erase the previous character
  36546.  (not byte or column position), terminal output is not buffered and is
  36547.  extremely difficult, if not impossible, to parse correctly; the
  36548.  interpretation depends entirely on the physical device that will actually
  36549.  display/print/store the output.  In all known internationalized
  36550.  implementations, the utilities producing output for mixed column width
  36551.  output assume that a <backspace> backs up one column position and outputs
  36552.  enough <backspace>s to get back to the start of the character when
  36553.  
  36554.  
  36555.                Copyright c 1991 IEEE.  All rights reserved.
  36556.       This is an unapproved IEEE Standards Draft, subject to change.
  36557.  
  36558.  
  36559.  
  36560.  
  36561.  
  36562.  524                                     4 Execution Environment Utilities
  36563.  
  36564.  
  36565.  
  36566.  
  36567.  
  36568.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  36569.  
  36570.  <backspace> is used to provide local line motions to support underlining
  36571.  and emboldening operations.  Since fold without the -b option is dealing
  36572.  with these same constraints, <backspace> is always treated as backing up
  36573.  one column position rather than backing up one character.
  36574.  
  36575.  An example invocation that submits a file of possibly long lines to the
  36576.  line printer (under the assumption that the user knows the line width of
  36577.  the printer to be assigned by lp):
  36578.  
  36579.        fold -w 132 bigfile | lp
  36580.  
  36581.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  36582.  
  36583.  Historical versions of the fold utility assumed one byte was one
  36584.  character and occupied one column position when written out.  This is no
  36585.  longer always true.  Since the most common usage of fold is believed to
  36586.  be folding long lines for output to limited-length output devices, this
  36587.  capability was preserved as the default case.  The -b option was added so
  36588.  that applications could fold files with arbitrary length lines into text
  36589.  files that could then be processed by the utilities in this standard.
  36590.  Note that although the width for the -b option is in bytes, a line will
  36591.  never be split in the middle of a character.  (It is unspecified what
  36592.  happens if a width is specified that is too small to hold a single
  36593.  character found in the input followed by a <newline>.)
  36594.  
  36595.  The use of a hyphen as an option to specify standard input was removed
  36596.  from an earlier draft because it adds no functionality and is not
  36597.  historical practice.
  36598.  
  36599.  The tab stops are hardcoded to be every eighth column to meet historical
  36600.  practice.  No new method of specifying other tab stops was invented.
  36601.  
  36602.  END_RATIONALE
  36603.  
  36604.  
  36605.  
  36606.  
  36607.  
  36608.  
  36609.  
  36610.  
  36611.  
  36612.  
  36613.  
  36614.  
  36615.  
  36616.  
  36617.  
  36618.  
  36619.  
  36620.  
  36621.                Copyright c 1991 IEEE.  All rights reserved.
  36622.       This is an unapproved IEEE Standards Draft, subject to change.
  36623.  
  36624.  
  36625.  
  36626.  
  36627.  
  36628.  4.25 fold - Fold lines                                                525
  36629.  
  36630.  
  36631.  
  36632.  
  36633.  
  36634.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  36635.  
  36636.  4.26  getconf - Get configuration values
  36637.  
  36638.  
  36639.  4.26.1  Synopsis
  36640.  
  36641.  
  36642.  getconf  _s_y_s_t_e_m__v_a_r
  36643.  getconf  _p_a_t_h__v_a_r _p_a_t_h_n_a_m_e
  36644.  
  36645.  
  36646.  4.26.2  Description
  36647.  
  36648.  In the first synopsis form, the getconf utility shall write to the
  36649.  standard output the value of the variable specified by the _s_y_s_t_e_m__v_a_r
  36650.  operand.
  36651.  
  36652.  In the second synopsis form, the getconf utility shall write to the
  36653.  standard output the value of the variable specified by the _p_a_t_h__v_a_r
  36654.  operand for the path specified by the _p_a_t_h_n_a_m_e operand.
  36655.  
  36656.  The value of each configuration variable shall be determined as if it
  36657.  were obtained by calling the function from which it is defined to be
  36658.  available by this standard or by POSIX.1 {8} (see Operands).  The value
  36659.  shall reflect conditions in the current operating environment.
  36660.  
  36661.  
  36662.  4.26.3  Options
  36663.  
  36664.  None.
  36665.  
  36666.  
  36667.  4.26.4  Operands
  36668.  
  36669.  The following operands shall be supported by the implementation:
  36670.  
  36671.     _s_y_s_t_e_m__v_a_r  A name of a configuration variable whose value is
  36672.                 available from the function defined in 7.8.1 [such as
  36673.                 _c_o_n_f_s_t_r() in the C binding], from the POSIX.1 {8}
  36674.                 _s_y_s_c_o_n_f() function, one of the additional POSIX.2
  36675.                 variables described in 7.8.2, to be available from the
  36676.                 _s_y_s_c_o_n_f() function, or a minimum value specified by
  36677.                 POSIX.1 {8} or POSIX.2 for one of these variables.
  36678.  
  36679.                 The configuration variables and minimum values listed in
  36680.                 the:
  36681.  
  36682.                  - Name column of Table 2-16 (Utility Limit Minimum
  36683.                    Values)
  36684.  
  36685.  
  36686.  
  36687.                Copyright c 1991 IEEE.  All rights reserved.
  36688.       This is an unapproved IEEE Standards Draft, subject to change.
  36689.  
  36690.  
  36691.  
  36692.  
  36693.  
  36694.  526                                     4 Execution Environment Utilities
  36695.  
  36696.  
  36697.  
  36698.  
  36699.  
  36700.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  36701.  
  36702.                  - Name column of Table 2-17 (Symbolic Utility Limits)
  36703.  
  36704.                  - Name column of Table 2-18 (Optional Facility
  36705.                    Configuration Values)
  36706.  
  36707.                  - Name column of POSIX.1 {8} Table 2-3 (Minimum Values)
  36708.  
  36709.                  - Name column of POSIX.1 {8} Table 2-4 (Run-Time
  36710.                    Increasable Values)
  36711.  
  36712.                  - Variable column of POSIX.1 {8} Table 4-2 (Configurable
  36713.                    System Variables; except CLK_TCK need not be
  36714.                    supported), without the enclosing braces and PATH
  36715.                    [corresponding to the _c_o_n_f_s_t_r() name value _CS_PATH]
  36716.                    shall be recognized as valid _s_y_s_t_e_m__v_a_r operands.  The
  36717.                    implementation may support additional _s_y_s_t_e_m__v_a_r
  36718.                    operand values.
  36719.  
  36720.     _p_a_t_h__v_a_r    A name of a configuration variable whose value is
  36721.                 available from the POSIX.1 {8} _p_a_t_h_c_o_n_f() function.
  36722.  
  36723.                 The configuration variables listed in the Variable column
  36724.                 of the POSIX.1 {8} Table 5-2 (Configurable Pathname
  36725.                 Variables), without the enclosing braces, shall be
  36726.                 recognized as valid _p_a_t_h__v_a_r operands.  The implementation
  36727.                 may support additional _p_a_t_h__v_a_r operand values.
  36728.  
  36729.     _p_a_t_h_n_a_m_e    A pathname for which the variable specified by _p_a_t_h__v_a_r is
  36730.                 to be determined.
  36731.  
  36732.  
  36733.  4.26.5  External Influences
  36734.  
  36735.  
  36736.  4.26.5.1  Standard Input
  36737.  
  36738.  None.
  36739.  
  36740.  4.26.5.2  Input Files
  36741.  
  36742.  None.
  36743.  
  36744.  
  36745.  4.26.5.3  Environment Variables
  36746.  
  36747.  The following environment variables shall affect the execution of
  36748.  getconf:
  36749.  
  36750.  
  36751.  
  36752.  
  36753.                Copyright c 1991 IEEE.  All rights reserved.
  36754.       This is an unapproved IEEE Standards Draft, subject to change.
  36755.  
  36756.  
  36757.  
  36758.  
  36759.  
  36760.  4.26 getconf - Get configuration values                               527
  36761.  
  36762.  
  36763.  
  36764.  
  36765.  
  36766.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  36767.  
  36768.     LANG               This variable shall determine the locale to use for
  36769.                        the locale categories when both LC_ALL and the
  36770.                        corresponding environment variable (beginning with
  36771.                        LC_) do not specify a locale.  See 2.6.
  36772.  
  36773.     LC_ALL             This variable shall determine the locale to be used
  36774.                        to override any values for locale categories
  36775.                        specified by the settings of LANG or any
  36776.                        environment variables beginning with LC_.
  36777.  
  36778.     LC_CTYPE           This variable shall determine the locale for the
  36779.                        interpretation of sequences of bytes of text data
  36780.                        as characters (e.g., single- versus multibyte
  36781.                        characters in arguments).
  36782.  
  36783.     LC_MESSAGES        This variable shall determine the language in which
  36784.                        messages should be written.
  36785.  
  36786.  
  36787.  4.26.5.4  Asynchronous Events
  36788.  
  36789.  Default.
  36790.  
  36791.  
  36792.  4.26.6  External Effects
  36793.  
  36794.  4.26.6.1  Standard Output
  36795.  
  36796.  If the specified variable is defined on the system and its value is
  36797.  described to be available from the function in 7.8.1, its value shall be
  36798.  written in the following format:
  36799.  
  36800.        "%s\n", <_v_a_l_u_e>
  36801.  
  36802.  Otherwise, if the specified variable is defined on the system, its value
  36803.  shall be written in the following format:
  36804.  
  36805.        "%d\n", <_v_a_l_u_e>
  36806.  
  36807.  If the specified variable is valid, but is undefined on the system,
  36808.  getconf shall write using the following format:
  36809.  
  36810.        "undefined\n"
  36811.  
  36812.  If the variable name is invalid or an error occurs, nothing shall be
  36813.  written to standard output.
  36814.  
  36815.  
  36816.  
  36817.  
  36818.  
  36819.                Copyright c 1991 IEEE.  All rights reserved.
  36820.       This is an unapproved IEEE Standards Draft, subject to change.
  36821.  
  36822.  
  36823.  
  36824.  
  36825.  
  36826.  528                                     4 Execution Environment Utilities
  36827.  
  36828.  
  36829.  
  36830.  
  36831.  
  36832.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  36833.  
  36834.  4.26.6.2  Standard Error
  36835.  
  36836.  Used only for diagnostic messages.
  36837.  
  36838.  
  36839.  4.26.6.3  Output Files
  36840.  
  36841.  None.
  36842.  
  36843.  
  36844.  4.26.7  Extended Description
  36845.  
  36846.  None.
  36847.  
  36848.  
  36849.  4.26.8  Exit Status
  36850.  
  36851.  The getconf utility shall exit with one of the following values:
  36852.  
  36853.      0    The specified variable is valid and information about its
  36854.           current state was written successfully.
  36855.  
  36856.     >0    An error occurred.
  36857.  
  36858.  
  36859.  4.26.9  Consequences of Errors
  36860.  
  36861.  Default.
  36862.  
  36863.  BEGIN_RATIONALE
  36864.  
  36865.  
  36866.  4.26.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  36867.  
  36868.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  36869.  
  36870.  The original need for this utility, and for the _c_o_n_f_s_t_r() function, was
  36871.  to provide a way of finding the configuration-defined default value for
  36872.  the PATH environment variable.  Since PATH can be modified by the user to
  36873.  include directories that could contain utilities replacing the POSIX.2
  36874.  standard utilities, shell scripts need a way to determine the system
  36875.  supplied PATH environment variable value that contains the correct search
  36876.  path for the standard utilities.
  36877.  
  36878.  It was later suggested that access to the other variables described here
  36879.  could also be useful to applications.
  36880.  
  36881.  This example illustrates the value of {NGROUPS_MAX}:
  36882.  
  36883.  
  36884.  
  36885.                Copyright c 1991 IEEE.  All rights reserved.
  36886.       This is an unapproved IEEE Standards Draft, subject to change.
  36887.  
  36888.  
  36889.  
  36890.  
  36891.  
  36892.  4.26 getconf - Get configuration values                               529
  36893.  
  36894.  
  36895.  
  36896.  
  36897.  
  36898.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  36899.  
  36900.        getconf NGROUPS_MAX
  36901.  
  36902.  This example illustrates the value of {NAME_MAX} for a specific
  36903.  directory:
  36904.  
  36905.        getconf NAME_MAX /usr
  36906.  
  36907.  This example shows how to deal more carefully with results that might be
  36908.  unspecified:
  36909.  
  36910.        if value=$(getconf PATH_MAX /usr); then                              1
  36911.                if [ "$value" = "undefined" ]; then
  36912.                        echo PATH_MAX in /usr is infinite.
  36913.                else
  36914.                        echo PATH_MAX in /usr is $value.
  36915.                fi
  36916.        else
  36917.                echo Error in getconf.
  36918.        fi
  36919.  
  36920.  Note that:
  36921.  
  36922.        sysconf(_SC_POSIX_C_BIND);
  36923.  
  36924.  and:
  36925.  
  36926.        system("getconf POSIX2_C_BIND");
  36927.  
  36928.  in a C program could give different answers.  The _s_y_s_c_o_n_f() call supplies
  36929.  a value that corresponds to the conditions when the program was either
  36930.  compiled or executed, depending on the implementation; the _s_y_s_t_e_m() call
  36931.  to getconf always supplies a value corresponding to conditions when the
  36932.  program is executed.
  36933.  
  36934.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  36935.  
  36936.  This utility was renamed from posixconf during balloting because the new
  36937.  name expresses its purpose more specifically, and does not unduly
  36938.  restrict the scope of application of the utility.
  36939.  
  36940.  This functionality of this utility would not be adequately subsumed by
  36941.  another command such as
  36942.  
  36943.        grep _v_a_r /etc/conf
  36944.  
  36945.  because such a strategy would provide correct values for neither those
  36946.  variables that can vary at run-time, nor those that can vary depending on
  36947.  the path.
  36948.  
  36949.  
  36950.  
  36951.                Copyright c 1991 IEEE.  All rights reserved.
  36952.       This is an unapproved IEEE Standards Draft, subject to change.
  36953.  
  36954.  
  36955.  
  36956.  
  36957.  
  36958.  530                                     4 Execution Environment Utilities
  36959.  
  36960.  
  36961.  
  36962.  
  36963.  
  36964.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  36965.  
  36966.  Previous versions of this utility specified exit status 1 when the
  36967.  specified variable was valid, but not defined on the system.  The output
  36968.  string "undefined" is now used to specify this case with exit code 0
  36969.  because so many things depend on an exit code of zero when an invoked
  36970.  utility is successful.
  36971.  
  36972.  END_RATIONALE
  36973.  
  36974.  
  36975.  
  36976.  4.27  getopts - Parse utility options
  36977.  
  36978.  
  36979.  4.27.1  Synopsis
  36980.  
  36981.  getopts  _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g ...]
  36982.  
  36983.  
  36984.  4.27.2  Description
  36985.  
  36986.  The getopts utility can be used to retrieve options and option-arguments
  36987.  from a list of parameters.  It shall support the utility argument syntax
  36988.  guidelines 3 through 10, inclusive, described in 2.10.2.
  36989.  
  36990.  Each time it is invoked, the getopts utility shall place the value of the
  36991.  next option in the shell variable specified by the _n_a_m_e operand and the
  36992.  index of the next argument to be processed in the shell variable OPTIND.
  36993.  Whenever the shell is invoked, OPTIND shall be initialized to 1.
  36994.  
  36995.  When the option requires an option-argument, the getopts utility shall
  36996.  place it in the shell variable OPTARG.  If no option was found, or if the
  36997.  option that was found does not have an option-argument, OPTARG shall be    1
  36998.  unset.                                                                     1
  36999.  
  37000.  If an option character not contained in the _o_p_t_s_t_r_i_n_g operand is found
  37001.  where an option character is expected, the shell variable specified by
  37002.  _n_a_m_e shall be set to the question-mark (?) character.  In this case, if
  37003.  the first character in _o_p_t_s_t_r_i_n_g is a colon (:), the shell variable
  37004.  OPTARG shall be set to the option character found, but no output shall be
  37005.  written to standard error; otherwise, the shell variable OPTARG shall be
  37006.  unset and a diagnostic message shall be written to standard error.  This
  37007.  condition shall be considered to be an error detected in the way
  37008.  arguments were presented to the invoking application, but shall not be an
  37009.  error in getopts processing.
  37010.  
  37011.  If an option-argument is missing:
  37012.  
  37013.      - If the first character of _o_p_t_s_t_r_i_n_g is a colon, the shell variable
  37014.        specified by _n_a_m_e shall be set to the colon character and the shell
  37015.  
  37016.  
  37017.                Copyright c 1991 IEEE.  All rights reserved.
  37018.       This is an unapproved IEEE Standards Draft, subject to change.
  37019.  
  37020.  
  37021.  
  37022.  
  37023.  
  37024.  4.27 getopts - Parse utility options                                  531
  37025.  
  37026.  
  37027.  
  37028.  
  37029.  
  37030.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  37031.  
  37032.        variable OPTARG shall be set to the option character found.
  37033.  
  37034.      - Otherwise, the shell variable specified by _n_a_m_e shall be set to the
  37035.        question-mark character, the shell variable OPTARG shall be unset,
  37036.        and a diagnostic message shall be written to standard error.  This
  37037.        condition shall be considered to be an error detected in the way
  37038.        arguments were presented to the invoking application, but shall not
  37039.        be an error in getopts processing; a diagnostic message shall be
  37040.        written as stated, but the exit status shall be zero.
  37041.  
  37042.  When the end of options is encountered, the getopts utility shall exit
  37043.  with a return value greater than zero; the shell variable OPTIND shall be
  37044.  set to the index of the first nonoption-argument, where the first --
  37045.  argument is considered to be an option-argument if there are no other
  37046.  nonoption-arguments appearing before it, or the value $# + 1 if there are
  37047.  no nonoption-arguments; the _n_a_m_e variable shall be set to the question-
  37048.  mark character.  Any of the following shall identify the end of options:
  37049.  the special option --, finding an argument that does not begin with a -,
  37050.  or encountering an error.
  37051.  
  37052.  The shell variables OPTIND and OPTARG shall be local to the caller of
  37053.  getopts and shall not be exported by default.
  37054.  
  37055.  The shell variable specified by the _n_a_m_e operand, OPTIND, and OPTARG
  37056.  shall affect the current shell execution environment; see 3.12.
  37057.  
  37058.  If the application sets OPTIND to the value 1, a new set of parameters     1
  37059.  can be used:  either the current positional parameters or new _a_r_g values.  1
  37060.  Any other attempt to invoke getopts multiple times in a single shell       1
  37061.  execution environment with parameters (positional parameters or _a_r_g        1
  37062.  operands) that are not the same in all invocations, or with an OPTIND      1
  37063.  value modified to be a value other than 1, produces unspecified results.   1
  37064.  
  37065.  
  37066.  4.27.3  Options
  37067.  
  37068.  None.
  37069.  
  37070.  
  37071.  4.27.4  Operands
  37072.  
  37073.  The following operands shall be supported by the implementation:
  37074.  
  37075.     _o_p_t_s_t_r_i_n_g   A string containing the option characters recognized by
  37076.                 the utility invoking getopts.  If a character is followed
  37077.                 by a colon, the option shall be expected to have an
  37078.                 argument, which should be supplied as a separate argument.
  37079.                 Applications should specify an option character and its
  37080.                 option-argument as separate arguments, but getopts shall
  37081.  
  37082.  
  37083.                Copyright c 1991 IEEE.  All rights reserved.
  37084.       This is an unapproved IEEE Standards Draft, subject to change.
  37085.  
  37086.  
  37087.  
  37088.  
  37089.  
  37090.  532                                     4 Execution Environment Utilities
  37091.  
  37092.  
  37093.  
  37094.  
  37095.  
  37096.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  37097.  
  37098.                 interpret the characters following an option character
  37099.                 requiring arguments as an argument whether or not this is
  37100.                 done.  An explicit null option-argument need not be
  37101.                 recognized if it is not supplied as a separate argument
  37102.                 when getopts is invoked.  [See also the _g_e_t_o_p_t()
  37103.                 Description in B.7].  The characters question-mark and
  37104.                 colon shall not be used as option characters by an
  37105.                 application.  The use of other option characters that are   2
  37106.                 not alphanumeric produces unspecified results.  If the      2
  37107.                 option-argument is not supplied as a separate argument
  37108.                 from the option character, the value in OPTARG shall be
  37109.                 stripped of the option character and the '-'.  The first
  37110.                 character in _o_p_t_s_t_r_i_n_g shall determine how getopts shall
  37111.                 behave if an option character is not known or an option-
  37112.                 argument is missing.  See 4.27.2.
  37113.  
  37114.     _n_a_m_e        The name of a shell variable that shall be set by the
  37115.                 getopts utility to the option character that was found.
  37116.                 See 4.27.2.
  37117.  
  37118.  The getopts utility by default shall parse positional parameters passed
  37119.  to the invoking shell procedure.  If _a_r_gs are given, they shall be parsed
  37120.  instead of the positional parameters.
  37121.  
  37122.  
  37123.  4.27.5  External Influences
  37124.  
  37125.  
  37126.  4.27.5.1  Standard Input
  37127.  
  37128.  None.
  37129.  
  37130.  4.27.5.2  Input Files
  37131.  
  37132.  None.
  37133.  
  37134.  
  37135.  4.27.5.3  Environment Variables
  37136.  
  37137.  The following environment variables shall affect the execution of
  37138.  getopts:
  37139.  
  37140.     LANG               This variable shall determine the locale to use for
  37141.                        the locale categories when both LC_ALL and the
  37142.                        corresponding environment variable (beginning with
  37143.                        LC_) do not specify a locale.  See 2.6.
  37144.  
  37145.  
  37146.  
  37147.  
  37148.  
  37149.                Copyright c 1991 IEEE.  All rights reserved.
  37150.       This is an unapproved IEEE Standards Draft, subject to change.
  37151.  
  37152.  
  37153.  
  37154.  
  37155.  
  37156.  4.27 getopts - Parse utility options                                  533
  37157.  
  37158.  
  37159.  
  37160.  
  37161.  
  37162.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  37163.  
  37164.     LC_ALL             This variable shall determine the locale to be used
  37165.                        to override any values for locale categories
  37166.                        specified by the settings of LANG or any
  37167.                        environment variables beginning with LC_.
  37168.  
  37169.     LC_CTYPE           This variable shall determine the locale for the
  37170.                        interpretation of sequences of bytes of text data
  37171.                        as characters (e.g., single- versus multibyte
  37172.                        characters in arguments).
  37173.  
  37174.     LC_MESSAGES        This variable shall determine the language in which
  37175.                        messages should be written.
  37176.  
  37177.     OPTIND             This variable shall be used by the getopts utility
  37178.                        as the index of the next argument to be processed.
  37179.  
  37180.  
  37181.  4.27.5.4  Asynchronous Events
  37182.  
  37183.  Default.
  37184.  
  37185.  
  37186.  4.27.6  External Effects
  37187.  
  37188.  4.27.6.1  Standard Output
  37189.  
  37190.  None.
  37191.  
  37192.  
  37193.  4.27.6.2  Standard Error
  37194.  
  37195.  Whenever an error is detected and the first character in the _o_p_t_s_t_r_i_n_g
  37196.  operand is not a colon (:), a diagnostic message shall be written to
  37197.  standard error with the following information in an unspecified format:    1
  37198.  
  37199.      - The invoking program name shall be identified in the message.  The   1
  37200.        invoking program name shall be the value of the shell special        1
  37201.        parameter 0 (see 3.5.2) at the time the getopts utility is invoked.  1
  37202.        A name equivalent to                                                 1
  37203.  
  37204.              basename "$0"                                                  1
  37205.  
  37206.        may be used.                                                         1
  37207.  
  37208.      - If an option is found that was not specified in _o_p_t_s_t_r_i_n_g, this      1
  37209.        error shall be identified and the invalid option character shall be  1
  37210.        identified in the message.                                           1
  37211.  
  37212.  
  37213.  
  37214.  
  37215.                Copyright c 1991 IEEE.  All rights reserved.
  37216.       This is an unapproved IEEE Standards Draft, subject to change.
  37217.  
  37218.  
  37219.  
  37220.  
  37221.  
  37222.  534                                     4 Execution Environment Utilities
  37223.  
  37224.  
  37225.  
  37226.  
  37227.  
  37228.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  37229.  
  37230.      - If an option requiring an option-argument is found, but an option-   1
  37231.        argument is not found, this error shall be identified and the        1
  37232.        invalid option character shall be identified in the message.         1
  37233.  
  37234.  
  37235.  4.27.6.3  Output Files
  37236.  
  37237.  None.
  37238.  
  37239.  
  37240.  4.27.7  Extended Description
  37241.  
  37242.  None.
  37243.  
  37244.  
  37245.  4.27.8  Exit Status
  37246.  
  37247.  The getopts utility shall exit with one of the following values:
  37248.  
  37249.      0    An option, specified or unspecified by _o_p_t_s_t_r_i_n_g, was found.
  37250.  
  37251.     >0    The end of options was encountered or an error occurred.
  37252.  
  37253.  
  37254.  4.27.9  Consequences of Errors
  37255.  
  37256.  Default.
  37257.  
  37258.  BEGIN_RATIONALE
  37259.  
  37260.  
  37261.  4.27.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  37262.  
  37263.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  37264.  
  37265.  The getopts utility was chosen in preference to the getopt utility
  37266.  specified in System V because getopts handles option-arguments containing
  37267.  <blank> characters.
  37268.  
  37269.  Since getopts affects the current shell execution environment, it is
  37270.  generally provided as a shell regular built-in.  If it is called in a      1
  37271.  subshell or separate utility execution environment, such as one of the     1
  37272.  following:                                                                 1
  37273.  
  37274.        (getopts abc value "$@")                                             1
  37275.        nohup getopts ...                                                    1
  37276.        find . -exec getopts ... \;                                          1
  37277.  
  37278.  it will not affect the shell variables in the caller's environment.        1
  37279.  
  37280.  
  37281.                Copyright c 1991 IEEE.  All rights reserved.
  37282.       This is an unapproved IEEE Standards Draft, subject to change.
  37283.  
  37284.  
  37285.  
  37286.  
  37287.  
  37288.  4.27 getopts - Parse utility options                                  535
  37289.  
  37290.  
  37291.  
  37292.  
  37293.  
  37294.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  37295.  
  37296.  Note that shell functions share OPTIND with the calling shell even though
  37297.  the positional parameters are changed.  Functions that want to use
  37298.  getopts to parse their arguments will usually want to save the value of
  37299.  OPTIND on entry and restore it before returning.  However, there will be
  37300.  cases when a function will want to change OPTIND for the calling shell.
  37301.  
  37302.  The following example script parses and displays its arguments:
  37303.  
  37304.  aflag=
  37305.  bflag=
  37306.  while getopts ab: name
  37307.  do
  37308.          case $name in
  37309.          a)      aflag=1;;
  37310.          b)      bflag=1
  37311.                  bval="$OPTARG";;
  37312.          ?)      printf "Usage: %s: [-a] [-b value] args\n" $0              1
  37313.                  exit 2;;
  37314.          esac
  37315.  done
  37316.  if [ ! -z "$aflag" ]; then                                                 1
  37317.          printf "Option -a specified\n"                                     1
  37318.  fi                                                                         1
  37319.  if [ ! -z "$bflag" ]; then                                                 1
  37320.          printf 'Option -b "%s" specified\n' "$bval"                        1
  37321.  fi                                                                         1
  37322.  shift $(($OPTIND - 1))                                                     1
  37323.  printf "Remaining arguments are: %s\n" "$*"                                1
  37324.  
  37325.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  37326.  
  37327.  The OPTARG variable is not mentioned in the Environment Variables
  37328.  subclause because it does not affect the execution of getopts; it is one
  37329.  of the few ``output-only'' variables used by the standard utilities.
  37330.  
  37331.  Use of colon (:) as an option character (in a previous draft) was new
  37332.  behavior and violated the syntax guidelines.  Many objectors felt that it
  37333.  did not add enough to getopts to warrant mandating the extension to
  37334.  existing practice.  The colon is now specified to behave as in the
  37335.  KornShell version of the getopts utility; when used as the first
  37336.  character in the _o_p_t_s_t_r_i_n_g operand, it disables diagnostics concerning
  37337.  missing option-arguments and unexpected option characters.  This replaces
  37338.  the use of the OPTERR variable that was specified in an earlier draft.
  37339.  
  37340.  The formats of the diagnostic messages produced by the getopts utility     1
  37341.  and the _g_e_t_o_p_t() function are not fully specified because implementations  1
  37342.  with superior (``friendlier'') formats objected to the formats used by     1
  37343.  some historical implementations.  It was felt to be important that the     1
  37344.  information in the messages used be uniform between getopts and _g_e_t_o_p_t().  1
  37345.  
  37346.  
  37347.                Copyright c 1991 IEEE.  All rights reserved.
  37348.       This is an unapproved IEEE Standards Draft, subject to change.
  37349.  
  37350.  
  37351.  
  37352.  
  37353.  
  37354.  536                                     4 Execution Environment Utilities
  37355.  
  37356.  
  37357.  
  37358.  
  37359.  
  37360.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  37361.  
  37362.  Exact duplication of the messages might not be possible, particularly if   1
  37363.  a utility is built on another system that has a different _g_e_t_o_p_t()         1
  37364.  function, but the messages must have specific information included so      1
  37365.  that the program name, invalid option character, and type of error can be  1
  37366.  distinguished by a user.                                                   1
  37367.  
  37368.  Only a rare application program will intercept a getopts standard error    1
  37369.  message and want to parse it.  Therefore, implementations are free to      1
  37370.  choose the most usable messages they can devise.  The following formats    1
  37371.  are used by many historical implementations:                               1
  37372.  
  37373.        "%s: illegal option -- %c\n", <_p_r_o_g_r_a_m _n_a_m_e>,                        1
  37374.        <_o_p_t_i_o_n _c_h_a_r_a_c_t_e_r>                                                   1
  37375.  
  37376.        "%s: option requires an argument -- %c\n", <_p_r_o_g_r_a_m _n_a_m_e>,           1
  37377.        <_o_p_t_i_o_n _c_h_a_r_a_c_t_e_r>                                                   1
  37378.  
  37379.  Historical shells with built-in versions of _g_e_t_o_p_t() or getopts have used
  37380.  different formats, frequently not even indicating the option character
  37381.  found in error.
  37382.  
  37383.  END_RATIONALE
  37384.  
  37385.  
  37386.  
  37387.  4.28  grep - File pattern searcher
  37388.  
  37389.  
  37390.  4.28.1  Synopsis
  37391.  
  37392.  grep  [ -E | -F ] [ -c | -l | -q ] [-insvx] -e _p_a_t_t_e_r_n__l_i_s_t ...
  37393.        [-f _p_a_t_t_e_r_n__f_i_l_e] ...  [_f_i_l_e ...]
  37394.  
  37395.  grep  [ -E | -F ] [ -c | -l | -q ] [-insvx] [-e _p_a_t_t_e_r_n__l_i_s_t] ...
  37396.        -f _p_a_t_t_e_r_n__f_i_l_e ...  [_f_i_l_e ...]
  37397.  grep  [ -E | -F ] [ -c | -l | -q ] [-insvx] _p_a_t_t_e_r_n__l_i_s_t [_f_i_l_e ...]
  37398.  
  37399.  _O_b_s_o_l_e_s_c_e_n_t _V_e_r_s_i_o_n_s:
  37400.  
  37401.  egrep  [ -c | -l ] [-inv] -e _p_a_t_t_e_r_n__l_i_s_t [_f_i_l_e ...]
  37402.  egrep  [ -c | -l ] [-inv] -f _p_a_t_t_e_r_n__f_i_l_e [_f_i_l_e ...]
  37403.  
  37404.  egrep  [ -c | -l ] [-inv] _p_a_t_t_e_r_n__l_i_s_t [_f_i_l_e ...]
  37405.  fgrep  [ -c | -l ] [-invx] -e _p_a_t_t_e_r_n__l_i_s_t [_f_i_l_e ...]
  37406.  
  37407.  fgrep  [ -c | -l ] [-invx] -f _p_a_t_t_e_r_n__f_i_l_e [_f_i_l_e ...]
  37408.  fgrep  [ -c | -l ] [-invx] _p_a_t_t_e_r_n__l_i_s_t [_f_i_l_e ...]
  37409.  
  37410.  
  37411.  
  37412.  
  37413.                Copyright c 1991 IEEE.  All rights reserved.
  37414.       This is an unapproved IEEE Standards Draft, subject to change.
  37415.  
  37416.  
  37417.  
  37418.  
  37419.  
  37420.  4.28 grep - File pattern searcher                                     537
  37421.  
  37422.  
  37423.  
  37424.  
  37425.  
  37426.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  37427.  
  37428.  4.28.2  Description
  37429.  
  37430.  The grep utility shall search the input files, selecting lines matching
  37431.  one or more patterns; the types of patterns shall be controlled by the
  37432.  options specified.  The patterns are specified by the -e option, -f
  37433.  option, or the _p_a_t_t_e_r_n__l_i_s_t operand.  The _p_a_t_t_e_r_n__l_i_s_t's value shall
  37434.  consist of one or more patterns separated by <newline>s; the
  37435.  _p_a_t_t_e_r_n__f_i_l_e's contents shall consist of one or more patterns terminated
  37436.  by <newline>s.  By default, an input line shall be selected if any
  37437.  pattern, treated as an entire basic regular expression (BRE) as described
  37438.  in 2.8.3, matches any part of the line; a null BRE shall match every
  37439.  line.  By default, each selected input line shall be written to the
  37440.  standard output.
  37441.  
  37442.  Regular expression matching shall be based on text lines.  Since
  37443.  <newline> separates or terminates patterns (see the -e and -f options
  37444.  below), regular expressions cannot contain a <newline> character.
  37445.  Similarly, since patterns are matched against individual lines of the
  37446.  input, there is no way for a pattern to match a <newline> found in the
  37447.  input.
  37448.  
  37449.  A command invoking the (obsolescent) egrep utility with the -e option
  37450.  specified shall be equivalent to the command:
  37451.  
  37452.  
  37453.        grep  -E [ -c | -l ] [-inv] -e _p_a_t_t_e_r_n__l_i_s_t [_f_i_l_e ...]
  37454.  
  37455.  A command invoking the egrep utility with the -f option specified shall
  37456.  be equivalent to the command:
  37457.  
  37458.        grep  -E [ -c | -l ] [-inv] -f _p_a_t_t_e_r_n__f_i_l_e [_f_i_l_e ...]
  37459.  
  37460.  A command invoking the egrep utility with the _p_a_t_t_e_r_n__l_i_s_t specified
  37461.  shall be equivalent to the command:
  37462.  
  37463.  
  37464.        grep  -E [ -c | -l ] [-inv] _p_a_t_t_e_r_n__l_i_s_t [_f_i_l_e ...]
  37465.  
  37466.  A command invoking the (obsolescent) fgrep utility with the -e option
  37467.  specified shall be equivalent to the command:
  37468.  
  37469.        grep  -F [ -c | -l ] [-invx] -e _p_a_t_t_e_r_n__l_i_s_t [_f_i_l_e ...]
  37470.  
  37471.  A command invoking the fgrep utility with the -f option specified shall
  37472.  be equivalent to the command:
  37473.  
  37474.  
  37475.        grep  -F [ -c | -l ] [-invx] -f _p_a_t_t_e_r_n__f_i_l_e [_f_i_l_e ...]
  37476.  
  37477.  
  37478.  
  37479.                Copyright c 1991 IEEE.  All rights reserved.
  37480.       This is an unapproved IEEE Standards Draft, subject to change.
  37481.  
  37482.  
  37483.  
  37484.  
  37485.  
  37486.  538                                     4 Execution Environment Utilities
  37487.  
  37488.  
  37489.  
  37490.  
  37491.  
  37492.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  37493.  
  37494.  A command invoking the fgrep utility with the _p_a_t_t_e_r_n__l_i_s_t operand
  37495.  specified shall be equivalent to the command:
  37496.  
  37497.  
  37498.        grep  -F [ -c | -l ] [-invx] _p_a_t_t_e_r_n__l_i_s_t [_f_i_l_e ...]
  37499.  
  37500.  
  37501.  4.28.3  Options
  37502.  
  37503.  The grep utility shall conform to the utility argument syntax guidelines
  37504.  described in 2.10.2.
  37505.  
  37506.  The following options shall be supported by the implementation:
  37507.  
  37508.     -E          Match using extended regular expressions.  Treat each
  37509.                 pattern specified as an ERE, as described in 2.8.4.  If
  37510.                 any entire ERE pattern matches an input line, the line
  37511.                 shall be matched.  A null ERE shall match every line.
  37512.  
  37513.     -F          Match using fixed strings.  Treat each pattern specified
  37514.                 as a string instead of a regular expression.  If an input
  37515.                 line contains any of the patterns as a contiguous sequence
  37516.                 of bytes, the line shall be matched.  A null string shall
  37517.                 match every line.
  37518.  
  37519.     -c          Write only a count of selected lines to standard output.
  37520.  
  37521.     -e _p_a_t_t_e_r_n__l_i_s_t
  37522.                 Specify one or more patterns to be used during the search
  37523.                 for input.  Patterns in _p_a_t_t_e_r_n__l_i_s_t shall be separated by
  37524.                 a <newline>.  A null pattern can be specified by two
  37525.                 adjacent <newline>s in _p_a_t_t_e_r_n__l_i_s_t; in the obsolescent
  37526.                 forms, adjacent <newline>s in _p_a_t_t_e_r_n__l_i_s_t produce
  37527.                 undefined results.  Unless the -E or -F option is also
  37528.                 specified, each pattern shall be treated as a BRE, as
  37529.                 described in 2.8.3.  In the nonobsolescent forms, multiple
  37530.                 -e and -f options shall be accepted by the grep utility.
  37531.                 All of the specified patterns shall be used when matching
  37532.                 lines, but the order of evaluation is unspecified.
  37533.  
  37534.     -f _p_a_t_t_e_r_n__f_i_l_e
  37535.                 Read one or more patterns from the file named by the
  37536.                 pathname _p_a_t_t_e_r_n__f_i_l_e. Patterns in _p_a_t_t_e_r_n__f_i_l_e shall be
  37537.                 terminated by a <newline>.  A null pattern can be
  37538.                 specified by an empty line in _p_a_t_t_e_r_n__f_i_l_e. Unless the -E
  37539.                 or -F option is also specified, each pattern shall be
  37540.                 treated as a BRE, as described in 2.8.3.
  37541.  
  37542.  
  37543.  
  37544.  
  37545.                Copyright c 1991 IEEE.  All rights reserved.
  37546.       This is an unapproved IEEE Standards Draft, subject to change.
  37547.  
  37548.  
  37549.  
  37550.  
  37551.  
  37552.  4.28 grep - File pattern searcher                                     539
  37553.  
  37554.  
  37555.  
  37556.  
  37557.  
  37558.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  37559.  
  37560.     -i          Perform pattern matching in searches without regard to
  37561.                 case.  See 2.8.2.
  37562.  
  37563.     -l          (The letter ell.)  Write only the names of files
  37564.                 containing selected lines to standard output.  Pathnames
  37565.                 shall be written once per file searched.  If the standard
  37566.                 input is searched, a pathname of "(standard input)" shall
  37567.                 be written, in the POSIX Locale.  In other locales,
  37568.                 standard input may be replaced by something more
  37569.                 appropriate in those locales.
  37570.  
  37571.     -n          Precede each output line by its relative line number in
  37572.                 the file, each file starting at line 1.  The line number
  37573.                 counter shall be reset for each file processed.
  37574.  
  37575.     -q          Quiet.  Do not write anything to the standard output,
  37576.                 regardless of matching lines.  Exit with zero status if an
  37577.                 input line is selected.
  37578.  
  37579.     -s          Suppress the error messages ordinarily written for
  37580.                 nonexistent or unreadable files.  Other error messages
  37581.                 shall not be suppressed.
  37582.  
  37583.     -v          Select lines not matching any of the specified patterns.
  37584.                 If the -v option is not specified, selected lines shall be
  37585.                 those that match any of the specified patterns.
  37586.  
  37587.     -x          Consider only input lines that use all characters in the
  37588.                 line to match an entire fixed string or regular expression
  37589.                 to be matching lines.
  37590.  
  37591.  
  37592.  4.28.4  Operands
  37593.  
  37594.  The following operands shall be supported by the implementation:
  37595.  
  37596.     _p_a_t_t_e_r_n     Specify one or more patterns to be used during the search
  37597.                 for input.  This operand shall be treated as if it were
  37598.                 specified as -e _p_a_t_t_e_r_n__l_i_s_t (see 4.28.3).
  37599.  
  37600.     _f_i_l_e        A pathname of a file to be searched for the pattern(s).
  37601.                 If no _f_i_l_e operands are specified, the standard input
  37602.                 shall be used.
  37603.  
  37604.  
  37605.  
  37606.  
  37607.  
  37608.  
  37609.  
  37610.  
  37611.                Copyright c 1991 IEEE.  All rights reserved.
  37612.       This is an unapproved IEEE Standards Draft, subject to change.
  37613.  
  37614.  
  37615.  
  37616.  
  37617.  
  37618.  540                                     4 Execution Environment Utilities
  37619.  
  37620.  
  37621.  
  37622.  
  37623.  
  37624.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  37625.  
  37626.  4.28.5  External Influences
  37627.  
  37628.  
  37629.  4.28.5.1  Standard Input
  37630.  
  37631.  The standard input shall be used only if no _f_i_l_e operands are specified.
  37632.  See Input Files.
  37633.  
  37634.  4.28.5.2  Input Files
  37635.  
  37636.  The input files shall be text files.
  37637.  
  37638.  
  37639.  4.28.5.3  Environment Variables
  37640.  
  37641.  The following environment variables shall affect the execution of grep:
  37642.  
  37643.     LANG               This variable shall determine the locale to use for
  37644.                        the locale categories when both LC_ALL and the
  37645.                        corresponding environment variable (beginning with
  37646.                        LC_) do not specify a locale.  See 2.6.
  37647.  
  37648.     LC_ALL             This variable shall determine the locale to be used
  37649.                        to override any values for locale categories
  37650.                        specified by the settings of LANG or any
  37651.                        environment variables beginning with LC_.
  37652.  
  37653.     LC_COLLATE         This variable shall determine the locale for the
  37654.                        behavior of ranges, equivalence classes, and
  37655.                        multicharacter collating elements within regular
  37656.                        expressions.
  37657.  
  37658.     LC_CTYPE           This variable shall determine the locale for the
  37659.                        interpretation of sequences of bytes of text data
  37660.                        as characters (e.g., single- versus multibyte
  37661.                        characters in arguments) and the behavior of
  37662.                        character classes within regular expressions.
  37663.  
  37664.     LC_MESSAGES        This variable shall determine the language in which
  37665.                        messages should be written.
  37666.  
  37667.  4.28.5.4  Asynchronous Events
  37668.  
  37669.  Default.
  37670.  
  37671.  
  37672.  
  37673.  
  37674.  
  37675.  
  37676.  
  37677.                Copyright c 1991 IEEE.  All rights reserved.
  37678.       This is an unapproved IEEE Standards Draft, subject to change.
  37679.  
  37680.  
  37681.  
  37682.  
  37683.  
  37684.  4.28 grep - File pattern searcher                                     541
  37685.  
  37686.  
  37687.  
  37688.  
  37689.  
  37690.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  37691.  
  37692.  4.28.6  External Effects
  37693.  
  37694.  
  37695.  4.28.6.1  Standard Output
  37696.  
  37697.  If the -l option is in effect, and the -q option is not, a single output
  37698.  line shall be written for each file containing at least one selected
  37699.  input line:
  37700.  
  37701.        "%s\n", _f_i_l_e
  37702.  
  37703.  Otherwise, if more than one _f_i_l_e argument appears, and -q is not
  37704.  specified, the grep utility shall prefix each output line by:
  37705.  
  37706.        "%s:", _f_i_l_e
  37707.  
  37708.  The remainder of each output line shall depend on the other options
  37709.  specified:
  37710.  
  37711.      - If the -c option is in effect, the remainder of each output line
  37712.        shall contain:
  37713.  
  37714.              "%d\n", <_c_o_u_n_t>
  37715.  
  37716.      - Otherwise, if -c is not in effect and the -n option is in effect,
  37717.        the following shall be written to standard output:
  37718.  
  37719.              "%d:", <_l_i_n_e _n_u_m_b_e_r>
  37720.  
  37721.      - Finally, the following shall be written to standard output:
  37722.  
  37723.              "%s", <_s_e_l_e_c_t_e_d-_l_i_n_e _c_o_n_t_e_n_t_s>
  37724.  
  37725.  4.28.6.2  Standard Error
  37726.  
  37727.  Used only for diagnostic messages.
  37728.  
  37729.  
  37730.  4.28.6.3  Output Files
  37731.  
  37732.  None.
  37733.  
  37734.  
  37735.  4.28.7  Extended Description
  37736.  
  37737.  None.
  37738.  
  37739.  
  37740.  
  37741.  
  37742.  
  37743.                Copyright c 1991 IEEE.  All rights reserved.
  37744.       This is an unapproved IEEE Standards Draft, subject to change.
  37745.  
  37746.  
  37747.  
  37748.  
  37749.  
  37750.  542                                     4 Execution Environment Utilities
  37751.  
  37752.  
  37753.  
  37754.  
  37755.  
  37756.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  37757.  
  37758.  4.28.8  Exit Status
  37759.  
  37760.  The grep utility shall exit with one of the following values:
  37761.  
  37762.      0    One or more lines were selected.
  37763.  
  37764.      1    No lines were selected.
  37765.  
  37766.     >1    An error occurred.
  37767.  
  37768.  
  37769.  4.28.9  Consequences of Errors
  37770.  
  37771.  If the -q option is specified, the exit status shall be zero if an input
  37772.  line is selected, even if an error was detected.  Otherwise, default
  37773.  actions shall be performed.
  37774.  
  37775.  BEGIN_RATIONALE
  37776.  
  37777.  
  37778.  4.28.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  37779.  
  37780.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  37781.  
  37782.  This grep has been enhanced in an upward-compatible way to provide the
  37783.  exact functionality of the historical egrep and fgrep commands as well.
  37784.  It was the clear intention of the working group to consolidate the three
  37785.  greps into a single command.
  37786.  
  37787.  The old egrep and fgrep commands are likely to be supported for many       1
  37788.  years to come as implementation extensions, allowing existing
  37789.  applications to operate unmodified.
  37790.  
  37791.  To find all uses of the word Posix (in any case) in the file text.mm, and
  37792.  write with line numbers:
  37793.  
  37794.        grep -i -n posix text.mm
  37795.  
  37796.  To find all empty lines in the standard input:                             2
  37797.  
  37798.        grep ^$
  37799.           or
  37800.        grep -v .
  37801.  
  37802.  Both of the following commands print all lines containing strings abc or
  37803.  def or both:
  37804.  
  37805.  
  37806.  
  37807.  
  37808.  
  37809.                Copyright c 1991 IEEE.  All rights reserved.
  37810.       This is an unapproved IEEE Standards Draft, subject to change.
  37811.  
  37812.  
  37813.  
  37814.  
  37815.  
  37816.  4.28 grep - File pattern searcher                                     543
  37817.  
  37818.  
  37819.  
  37820.  
  37821.  
  37822.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  37823.  
  37824.        grep -E 'abc
  37825.        def'
  37826.  
  37827.        grep -F 'abc
  37828.        def'
  37829.  
  37830.  Both of the following commands print all lines matching exactly abc or
  37831.  def:
  37832.  
  37833.        grep -E '^abc$
  37834.        ^def$'
  37835.  
  37836.        grep -F -x 'abc
  37837.        def'
  37838.  
  37839.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  37840.  
  37841.  The -e _p_a_t_t_e_r_n__l_i_s_t option has the same effect as the _p_a_t_t_e_r_n__l_i_s_t
  37842.  operand, but is useful when _p_a_t_t_e_r_n__l_i_s_t begins with the hyphen
  37843.  delimiter.  It is also useful when it is more convenient to provide
  37844.  multiple patterns as separate arguments.
  37845.  
  37846.  Earlier drafts did not show that the -c, -l, and -q options were mutually
  37847.  exclusive.  This has been fixed to more closely align with historical
  37848.  practice and documentation.
  37849.  
  37850.  Historical implementations usually silently ignored all but one of
  37851.  multiply specified -e and -f options, but were not consistent as to which
  37852.  specification was actually used.
  37853.  
  37854.  POSIX.2 requires that the nonobsolescent forms accept multiple -e and -f
  37855.  options and use all of the patterns specified while matching input text
  37856.  lines.  [Note that the order of evaluation is not specified.  If an
  37857.  implementation finds a null string as a pattern, it is allowed to use
  37858.  that pattern first (matching every line) and effectively ignore any other
  37859.  patterns.]
  37860.  
  37861.  The -b option was removed from the Options subclause, since block numbers
  37862.  are implementation dependent.
  37863.  
  37864.  The System V restriction on using - to mean standard input was lifted.
  37865.  
  37866.  A definition of action taken when given a null RE or ERE is specified.
  37867.  This is an error condition in some historical implementations.
  37868.  
  37869.  The -l option previously indicated that its use was undefined when no
  37870.  files were explicitly named.  This behavior was historical and placed an
  37871.  unnecessary restriction on future implementations.  It has been removed.
  37872.  
  37873.  
  37874.  
  37875.                Copyright c 1991 IEEE.  All rights reserved.
  37876.       This is an unapproved IEEE Standards Draft, subject to change.
  37877.  
  37878.  
  37879.  
  37880.  
  37881.  
  37882.  544                                     4 Execution Environment Utilities
  37883.  
  37884.  
  37885.  
  37886.  
  37887.  
  37888.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  37889.  
  37890.  The -q option was added at the suggestion of members of the balloting
  37891.  group as a means of easily determining whether or not a pattern (or
  37892.  string) exists in a group of files.  When searching several files, it
  37893.  provides a performance improvement (because it can quit as soon as it
  37894.  finds the first match) and requires less care by the user in choosing the
  37895.  set of files to supply as arguments (because it will exit zero if it
  37896.  finds a match even if grep detected an access or read error on earlier
  37897.  file operands).
  37898.  
  37899.  The historical BSD grep -s option practice is easily duplicated by
  37900.  redirecting standard output to /dev/null.  The -s option required here is
  37901.  from System V.
  37902.  
  37903.  The -x option, historically available only with fgrep, is available here
  37904.  for all of the nonobsolescent versions.
  37905.  
  37906.  END_RATIONALE
  37907.  
  37908.  
  37909.  
  37910.  4.29  head - Copy the first part of files
  37911.  
  37912.  
  37913.  4.29.1  Synopsis
  37914.  
  37915.  head  [-n _n_u_m_b_e_r] [_f_i_l_e ...]
  37916.  
  37917.  _O_b_s_o_l_e_s_c_e_n_t _v_e_r_s_i_o_n:
  37918.  
  37919.  head  [-_n_u_m_b_e_r] [_f_i_l_e ...]
  37920.  
  37921.  
  37922.  4.29.2  Description
  37923.  
  37924.  The head utility shall copy its input files to the standard output,
  37925.  ending the output for each file at a designated point.
  37926.  
  37927.  Copying shall end at the point in each input file indicated by the
  37928.  -n _n_u_m_b_e_r option (or the obsolescent version's -_n_u_m_b_e_r argument).  The
  37929.  option-argument _n_u_m_b_e_r shall be counted in units of lines.
  37930.  
  37931.  
  37932.  4.29.3  Options
  37933.  
  37934.  The head utility shall conform to the utility argument syntax guidelines
  37935.  described in standard described in 2.10.2, except that the obsolescent
  37936.  version accepts multicharacter numeric options.
  37937.  
  37938.  
  37939.  
  37940.  
  37941.                Copyright c 1991 IEEE.  All rights reserved.
  37942.       This is an unapproved IEEE Standards Draft, subject to change.
  37943.  
  37944.  
  37945.  
  37946.  
  37947.  
  37948.  4.29 head - Copy the first part of files                              545
  37949.  
  37950.  
  37951.  
  37952.  
  37953.  
  37954.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  37955.  
  37956.  The following option shall be supported by the implementation in the
  37957.  nonobsolescent version:
  37958.  
  37959.     -n _n_u_m_b_e_r   The first _n_u_m_b_e_r lines of each input file shall be copied
  37960.                 to standard output.  The _n_u_m_b_e_r option argument shall be a
  37961.                 positive decimal integer.
  37962.  
  37963.  If no options are specified, head shall act as if -n 10 had been
  37964.  specified.
  37965.  
  37966.  In the obsolescent version, the following option shall be supported by
  37967.  the implementation:
  37968.  
  37969.     -_n_u_m_b_e_r     The _n_u_m_b_e_r argument is a positive decimal integer with the
  37970.                 same effect as the -n_n_u_m_b_e_r option in the nonobsolescent
  37971.                 version.
  37972.  
  37973.  
  37974.  4.29.4  Operands
  37975.  
  37976.  The following operand shall be supported by the implementation:
  37977.  
  37978.     _f_i_l_e        A pathname of an input file.  If no _f_i_l_e operands are
  37979.                 specified, the standard input shall be used.
  37980.  
  37981.  
  37982.  4.29.5  External Influences
  37983.  
  37984.  
  37985.  4.29.5.1  Standard Input
  37986.  
  37987.  The standard input shall be used only if no _f_i_l_e operands are specified.
  37988.  See Input Files.
  37989.  
  37990.  4.29.5.2  Input Files
  37991.  
  37992.  Input files shall be text files, but the line length shall not be
  37993.  restricted to {LINE_MAX} bytes.
  37994.  
  37995.  
  37996.  4.29.5.3  Environment Variables
  37997.  
  37998.  The following environment variables shall affect the execution of head:
  37999.  
  38000.     LANG               This variable shall determine the locale to use for
  38001.                        the locale categories when both LC_ALL and the
  38002.                        corresponding environment variable (beginning with
  38003.                        LC_) do not specify a locale.  See 2.6.
  38004.  
  38005.  
  38006.  
  38007.                Copyright c 1991 IEEE.  All rights reserved.
  38008.       This is an unapproved IEEE Standards Draft, subject to change.
  38009.  
  38010.  
  38011.  
  38012.  
  38013.  
  38014.  546                                     4 Execution Environment Utilities
  38015.  
  38016.  
  38017.  
  38018.  
  38019.  
  38020.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  38021.  
  38022.     LC_ALL             This variable shall determine the locale to be used
  38023.                        to override any values for locale categories
  38024.                        specified by the settings of LANG or any
  38025.                        environment variables beginning with LC_.
  38026.  
  38027.     LC_CTYPE           This variable shall determine the locale for the
  38028.                        interpretation of sequences of bytes of text data
  38029.                        as characters (e.g., single- versus multibyte
  38030.                        characters in arguments and input files).
  38031.  
  38032.     LC_MESSAGES        This variable shall determine the language in which
  38033.                        messages should be written.
  38034.  
  38035.  
  38036.  4.29.5.4  Asynchronous Events
  38037.  
  38038.  Default.
  38039.  
  38040.  
  38041.  4.29.6  External Effects
  38042.  
  38043.  4.29.6.1  Standard Output
  38044.  
  38045.  The standard output shall contain designated portions of the input
  38046.  file(s).
  38047.  
  38048.  If multiple _f_i_l_e operands are specified, head shall precede the output
  38049.  for each with the header:
  38050.  
  38051.        "\n==> %s <==\n", <_p_a_t_h_n_a_m_e>
  38052.  
  38053.  except that the first header written shall not include the initial
  38054.  <newline>.
  38055.  
  38056.  
  38057.  4.29.6.2  Standard Error
  38058.  
  38059.  Used only for diagnostic messages.
  38060.  
  38061.  4.29.6.3  Output Files
  38062.  
  38063.  None.
  38064.  
  38065.  
  38066.  
  38067.  
  38068.  
  38069.  
  38070.  
  38071.  
  38072.  
  38073.                Copyright c 1991 IEEE.  All rights reserved.
  38074.       This is an unapproved IEEE Standards Draft, subject to change.
  38075.  
  38076.  
  38077.  
  38078.  
  38079.  
  38080.  4.29 head - Copy the first part of files                              547
  38081.  
  38082.  
  38083.  
  38084.  
  38085.  
  38086.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  38087.  
  38088.  4.29.7  Extended Description
  38089.  
  38090.  None.
  38091.  
  38092.  
  38093.  4.29.8  Exit Status
  38094.  
  38095.  The head utility shall exit with one of the following values:
  38096.  
  38097.      0    Successful completion.
  38098.  
  38099.     >0    An error occurred.
  38100.  
  38101.  
  38102.  4.29.9  Consequences of Errors
  38103.  
  38104.  Default.
  38105.  
  38106.  BEGIN_RATIONALE
  38107.  
  38108.  
  38109.  4.29.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  38110.  
  38111.  _U_s_a_g_e_,__E_x_a_m_p_l_e_s
  38112.  
  38113.  The nonobsolescent version of head was created to allow conformance to
  38114.  the Utility Syntax Guidelines.  The -n option was added to this new
  38115.  interface so that head and tail would be more logically related.
  38116.  
  38117.  To write the first ten lines of all files (except those with a leading
  38118.  period) in the directory:
  38119.  
  38120.        head *
  38121.  
  38122.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  38123.  
  38124.  The head utility was not in early drafts.  It was felt that head, and its
  38125.  frequent companion, tail, were useful mostly to interactive users, and
  38126.  not application programs.  However, balloting input suggested that these
  38127.  utilities actually do find significant use in scripts, such as to write
  38128.  out portions of log files.  Although it is possible to simulate head with
  38129.  sed 10q for a single file, the working group decided that the popularity
  38130.  of head on historical BSD systems warranted its inclusion alongside tail.
  38131.  
  38132.  An earlier draft had the synopsis line:
  38133.  
  38134.  
  38135.        head  [ -c | -l ] [-n _n_u_m_b_e_r] [_f_i_l_e ...]
  38136.  
  38137.  
  38138.  
  38139.                Copyright c 1991 IEEE.  All rights reserved.
  38140.       This is an unapproved IEEE Standards Draft, subject to change.
  38141.  
  38142.  
  38143.  
  38144.  
  38145.  
  38146.  548                                     4 Execution Environment Utilities
  38147.  
  38148.  
  38149.  
  38150.  
  38151.  
  38152.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  38153.  
  38154.  This was changed to the current form based on comments and objections
  38155.  noting that -c has not been provided by historical versions of head and
  38156.  other utilities in POSIX.2 provide similar functionality.  Also, -l was
  38157.  changed to -n to match a similar change in tail.
  38158.  
  38159.  END_RATIONALE
  38160.  
  38161.  
  38162.  
  38163.  4.30  id - Return user identity
  38164.  
  38165.  
  38166.  4.30.1  Synopsis
  38167.  
  38168.  id  [_u_s_e_r]
  38169.  
  38170.  id  -G [-n] [_u_s_e_r]
  38171.  id  -g [-nr] [_u_s_e_r]
  38172.  
  38173.  id  -u [-nr] [_u_s_e_r]
  38174.  
  38175.  
  38176.  4.30.2  Description
  38177.  
  38178.  If no _u_s_e_r operand is provided, the id utility shall write the user and
  38179.  group IDs and the corresponding user and group names of the invoking
  38180.  process to standard output.  If the effective and real IDs do not match,
  38181.  both shall be written.  If multiple groups are supported by the
  38182.  underlying system (see the description of {NGROUPS_MAX} in POSIX.1 {8}),
  38183.  the supplementary group affiliations of the invoking process also shall
  38184.  be written.
  38185.  
  38186.  If a _u_s_e_r operand is provided and the process has the appropriate
  38187.  privileges, the user and group IDs of the selected user shall be written.
  38188.  In this case, effective IDs shall be assumed to be identical to real IDs.  1
  38189.  If the selected user has more than one allowable group membership listed   1
  38190.  in the group database (see POSIX.1 {8} section 9.1), these shall be        1
  38191.  written in the same manner as the supplementary groups described in the    1
  38192.  preceding paragraph.                                                       1
  38193.  
  38194.  
  38195.  4.30.3  Options
  38196.  
  38197.  The id utility shall conform to the utility argument syntax guidelines
  38198.  described in 2.10.2.
  38199.  
  38200.  The following options shall be supported by the implementation:
  38201.  
  38202.  
  38203.  
  38204.  
  38205.                Copyright c 1991 IEEE.  All rights reserved.
  38206.       This is an unapproved IEEE Standards Draft, subject to change.
  38207.  
  38208.  
  38209.  
  38210.  
  38211.  
  38212.  4.30 id - Return user identity                                        549
  38213.  
  38214.  
  38215.  
  38216.  
  38217.  
  38218.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  38219.  
  38220.     -G          Output all different group IDs (effective, real, and
  38221.                 supplementary) only, using the format "%u\n".  If there is
  38222.                 more than one distinct group affiliation, output each such
  38223.                 affiliation, using the format " %u", before the <newline>
  38224.                 is output.
  38225.  
  38226.     -g          Output only the effective group ID, using the format
  38227.                 "%u\n".
  38228.  
  38229.     -n          Output the name in the format "%s" instead of the numeric
  38230.                 ID using the format "%u".
  38231.  
  38232.     -r          Output the real ID instead of the effective ID.
  38233.  
  38234.     -u          Output only the effective user ID, using the format
  38235.                 "%u\n".
  38236.  
  38237.  
  38238.  4.30.4  Operands
  38239.  
  38240.  The following operand shall be supported by the implementation:
  38241.  
  38242.     _u_s_e_r        The login name for which information is to be written.
  38243.  
  38244.  
  38245.  4.30.5  External Influences
  38246.  
  38247.  
  38248.  4.30.5.1  Standard Input
  38249.  
  38250.  None.
  38251.  
  38252.  4.30.5.2  Input Files
  38253.  
  38254.  None.
  38255.  
  38256.  
  38257.  4.30.5.3  Environment Variables
  38258.  
  38259.  The following environment variables shall affect the execution of id:
  38260.  
  38261.     LANG               This variable shall determine the locale to use for
  38262.                        the locale categories when both LC_ALL and the
  38263.                        corresponding environment variable (beginning with
  38264.                        LC_) do not specify a locale.  See 2.6.
  38265.  
  38266.     LC_ALL             This variable shall determine the locale to be used
  38267.                        to override any values for locale categories
  38268.                        specified by the settings of LANG or any
  38269.                        environment variables beginning with LC_.
  38270.  
  38271.                Copyright c 1991 IEEE.  All rights reserved.
  38272.       This is an unapproved IEEE Standards Draft, subject to change.
  38273.  
  38274.  
  38275.  
  38276.  
  38277.  
  38278.  550                                     4 Execution Environment Utilities
  38279.  
  38280.  
  38281.  
  38282.  
  38283.  
  38284.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  38285.  
  38286.     LC_CTYPE           This variable shall determine the locale for the
  38287.                        interpretation of sequences of bytes of text data
  38288.                        as characters (e.g., single- versus multibyte
  38289.                        characters in arguments).
  38290.  
  38291.     LC_MESSAGES        This variable shall determine the language in which
  38292.                        messages should be written.
  38293.  
  38294.  
  38295.  4.30.5.4  Asynchronous Events
  38296.  
  38297.  Default.
  38298.  
  38299.  
  38300.  4.30.6  External Effects
  38301.  
  38302.  4.30.6.1  Standard Output
  38303.  
  38304.  The following formats shall be used when the LC_MESSAGES locale category
  38305.  specifies the POSIX Locale.  In other locales, the strings uid, gid,
  38306.  euid, egid, and groups may be replaced with more appropriate strings
  38307.  corresponding to the locale.
  38308.  
  38309.        "uid=%u(%s) gid=%u(%s)\n", <_r_e_a_l _u_s_e_r _I_D>, <_u_s_e_r-_n_a_m_e>,
  38310.        <_r_e_a_l _g_r_o_u_p _I_D>, <_g_r_o_u_p-_n_a_m_e>
  38311.  
  38312.  If the effective and real user IDs do not match, the following shall be
  38313.  inserted immediately before the \n character in the previous format:
  38314.  
  38315.        " euid=%u(%s)",
  38316.  
  38317.  with the following arguments added at the end of the argument list:
  38318.  
  38319.        <_e_f_f_e_c_t_i_v_e _u_s_e_r _I_D>, <_e_f_f_e_c_t_i_v_e _u_s_e_r-_n_a_m_e>
  38320.  
  38321.  If the effective and real group IDs do not match, the following shall be
  38322.  inserted directly before the \n character in the format string (and after
  38323.  any addition resulting from the effective and real user IDs not
  38324.  matching):
  38325.  
  38326.        " egid=%u(%s)",
  38327.  
  38328.  with the following arguments added at the end of the argument list:
  38329.  
  38330.        <_e_f_f_e_c_t_i_v_e _g_r_o_u_p-_I_D>, <_e_f_f_e_c_t_i_v_e _g_r_o_u_p _n_a_m_e>
  38331.  
  38332.  If the process has supplementary group affiliations or the selected user   1
  38333.  is allowed to belong to multiple groups, the first shall be added          1
  38334.  directly before the <newline> character in the format string:
  38335.  
  38336.  
  38337.                Copyright c 1991 IEEE.  All rights reserved.
  38338.       This is an unapproved IEEE Standards Draft, subject to change.
  38339.  
  38340.  
  38341.  
  38342.  
  38343.  
  38344.  4.30 id - Return user identity                                        551
  38345.  
  38346.  
  38347.  
  38348.  
  38349.  
  38350.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  38351.  
  38352.        " groups=%u(%s)"
  38353.  
  38354.  with the following arguments added at the end of the argument list:
  38355.  
  38356.        <_s_u_p_p_l_e_m_e_n_t_a_r_y _g_r_o_u_p _I_D>, <_s_u_p_p_l_e_m_e_n_t_a_r_y _g_r_o_u_p _n_a_m_e>
  38357.  
  38358.  and the necessary number of the following added after that for any
  38359.  remaining supplementary group IDs:
  38360.  
  38361.        ",%u(%s)"
  38362.  
  38363.  and the necessary number of the following arguments added at the end of
  38364.  the argument list:
  38365.  
  38366.        <_s_u_p_p_l_e_m_e_n_t_a_r_y _g_r_o_u_p _I_D>, <_s_u_p_p_l_e_m_e_n_t_a_r_y _g_r_o_u_p _n_a_m_e>
  38367.  
  38368.  If any of the user ID, group ID, effective user ID, effective group ID,    1
  38369.  or supplementary/multiple group IDs cannot be mapped by the system into    1
  38370.  printable user or group names, the corresponding (%s) and name argument
  38371.  shall be omitted from the corresponding format string.
  38372.  
  38373.  When any of the options are specified, the output format shall be as
  38374.  described under 4.30.3.
  38375.  
  38376.  
  38377.  4.30.6.2  Standard Error
  38378.  
  38379.  Used only for diagnostic messages.
  38380.  
  38381.  4.30.6.3  Output Files
  38382.  
  38383.  None.
  38384.  
  38385.  
  38386.  4.30.7  Extended Description
  38387.  
  38388.  None.
  38389.  
  38390.  
  38391.  4.30.8  Exit Status
  38392.  
  38393.  The id utility shall exit with one of the following values:
  38394.  
  38395.      0    Successful completion.
  38396.  
  38397.     >0    An error occurred.
  38398.  
  38399.  
  38400.  
  38401.  
  38402.  
  38403.                Copyright c 1991 IEEE.  All rights reserved.
  38404.       This is an unapproved IEEE Standards Draft, subject to change.
  38405.  
  38406.  
  38407.  
  38408.  
  38409.  
  38410.  552                                     4 Execution Environment Utilities
  38411.  
  38412.  
  38413.  
  38414.  
  38415.  
  38416.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  38417.  
  38418.  4.30.9  Consequences of Errors
  38419.  
  38420.  Default.
  38421.  
  38422.  BEGIN_RATIONALE
  38423.  
  38424.  
  38425.  4.30.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  38426.  
  38427.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  38428.  
  38429.  The functionality provided by the 4BSD groups utility can be simulated
  38430.  using:
  38431.  
  38432.  
  38433.        id  -Gn [_u_s_e_r]
  38434.  
  38435.  Note that output produced by the -G option and by the default case could
  38436.  potentially produce very long lines on systems that support large numbers
  38437.  of supplementary groups.  (On systems with user and group IDs that are
  38438.  32-bit integers and with group names with a maximum of 8 bytes per name,
  38439.  93 supplementary groups plus distinct effective and real group and user
  38440.  IDs could theoretically overflow the 2048-byte {LINE_MAX} text file line
  38441.  limit on the default output case.  It would take about 186 supplementary
  38442.  groups to overflow the 2048-byte barrier using id -G.)  This is not
  38443.  expected to be a problem in practice, but in cases where it is a concern,
  38444.  applications should consider using fold -s (see 4.25) before
  38445.  postprocessing the output of id.
  38446.  
  38447.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  38448.  
  38449.  The 4BSD command groups was considered, but was not used as it did not
  38450.  provide the functionality of the id utility of the _S_V_I_D.  Also, it was
  38451.  thought that it would be easier to modify id to provide the additional
  38452.  functionality necessary to systems with multiple groups than to invent
  38453.  another command.
  38454.  
  38455.  The options -u, -g, -n, and -r were added to ease the use of id with
  38456.  shell commands substitution.  Without these options it is necessary to
  38457.  use some preprocessor such as sed to select the desired piece of
  38458.  information.  Since output such as that produced by id -u -n is wanted
  38459.  frequently, it seemed desirable to add the options.
  38460.  
  38461.  END_RATIONALE
  38462.  
  38463.  
  38464.  
  38465.  
  38466.  
  38467.  
  38468.  
  38469.                Copyright c 1991 IEEE.  All rights reserved.
  38470.       This is an unapproved IEEE Standards Draft, subject to change.
  38471.  
  38472.  
  38473.  
  38474.  
  38475.  
  38476.  4.30 id - Return user identity                                        553
  38477.  
  38478.  
  38479.  
  38480.  
  38481.  
  38482.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  38483.  
  38484.  4.31  join - Relational database operator
  38485.  
  38486.  
  38487.  4.31.1  Synopsis
  38488.  
  38489.  
  38490.  join  [ -a _f_i_l_e__n_u_m_b_e_r | -v _f_i_l_e__n_u_m_b_e_r ] [-e _s_t_r_i_n_g] [-o _l_i_s_t] [-t _c_h_a_r]
  38491.        [-1 _f_i_e_l_d] [-2 _f_i_e_l_d] _f_i_l_e_1 _f_i_l_e_2
  38492.  
  38493.  _O_b_s_o_l_e_s_c_e_n_t _v_e_r_s_i_o_n:
  38494.  join  [-_a _f_i_l_e__n_u_m_b_e_r] [-e _s_t_r_i_n_g] [-j _f_i_e_l_d] [-j1 _f_i_e_l_d] [-j2 _f_i_e_l_d]
  38495.        [-o _l_i_s_t ...]  [-t _c_h_a_r] _f_i_l_e_1 _f_i_l_e_2
  38496.  
  38497.  
  38498.  4.31.2  Description
  38499.  
  38500.  The join utility shall perform an ``equality join'' on the files _f_i_l_e_1
  38501.  and _f_i_l_e_2. The joined files shall be written to the standard output.
  38502.  
  38503.  The ``join field'' is a field in each file on which the files are
  38504.  compared.  There shall be one line in the output for each pair of lines
  38505.  in _f_i_l_e_1 and _f_i_l_e_2 that have identical join fields.  The output line by
  38506.  default shall consist of the join field, then the remaining fields from
  38507.  _f_i_l_e_1, then the remaining fields from _f_i_l_e_2. This format can be changed
  38508.  by using the -o option (see below).  The -a option can be used to add
  38509.  unmatched lines to the output.  The -v option can be used to output only
  38510.  unmatched lines.
  38511.  
  38512.  By default, the files _f_i_l_e_1 and _f_i_l_e_2 should be ordered in the collating
  38513.  sequence of sort -b (see 4.58) on the fields on which they are to be
  38514.  joined, by default the first in each line.  All selected output shall be
  38515.  written in the same collating sequence.
  38516.  
  38517.  The default input field separators shall be <blank>s.  In this case,
  38518.  multiple separators shall count as one field separator, and leading
  38519.  separators shall be ignored.  The default output field separator shall be
  38520.  a <space>.
  38521.  
  38522.  The field separator and collating sequence can be changed by using the -t
  38523.  option (see below).
  38524.  
  38525.  If the input files are not in the appropriate collating sequence, the
  38526.  results are unspecified.
  38527.  
  38528.  
  38529.  
  38530.  
  38531.  
  38532.  
  38533.  
  38534.  
  38535.                Copyright c 1991 IEEE.  All rights reserved.
  38536.       This is an unapproved IEEE Standards Draft, subject to change.
  38537.  
  38538.  
  38539.  
  38540.  
  38541.  
  38542.  554                                     4 Execution Environment Utilities
  38543.  
  38544.  
  38545.  
  38546.  
  38547.  
  38548.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  38549.  
  38550.  4.31.3  Options
  38551.  
  38552.  The join utility shall conform to the utility argument syntax guidelines
  38553.  described in 2.10.2.  The obsolescent version does not follow the utility
  38554.  argument syntax guidelines:  the -j1 and -j2 options are multicharacter
  38555.  options and the -o option takes multiple arguments.
  38556.  
  38557.  The following options shall be supported by the implementation:
  38558.  
  38559.     -a _f_i_l_e__n_u_m_b_e_r
  38560.                 Produce a line for each unpairable line in file
  38561.                 _f_i_l_e__n_u_m_b_e_r, where _f_i_l_e__n_u_m_b_e_r is 1 or 2, in addition to
  38562.                 the default output.  If both -a 1 and -a 2 are specified,
  38563.                 all unpairable lines shall be output.
  38564.  
  38565.     -e _s_t_r_i_n_g   Replace empty output fields by string _s_t_r_i_n_g.
  38566.  
  38567.     -j _f_i_e_l_d    (Obsolescent.)  Equivalent to:  -1  _f_i_e_l_d  -2  _f_i_e_l_d
  38568.  
  38569.     -j1 _f_i_e_l_d   (Obsolescent.)  Equivalent to:  -1  _f_i_e_l_d
  38570.  
  38571.     -j2 _f_i_e_l_d   (Obsolescent.)  Equivalent to:  -2  _f_i_e_l_d
  38572.  
  38573.     -o _l_i_s_t     Construct the output line to comprise the fields specified
  38574.                 in _l_i_s_t, each element of which has the form
  38575.                 _f_i_l_e__n_u_m_b_e_r._f_i_e_l_d, where _f_i_l_e__n_u_m_b_e_r is a file number and
  38576.                 _f_i_e_l_d is a decimal integer field number.  The elements of
  38577.                 _l_i_s_t are either comma- or <blank>-separated, as specified
  38578.                 in Guideline 8 in 2.10.2.  The fields specified by _l_i_s_t
  38579.                 shall be written for all selected output lines.  Fields
  38580.                 selected by _l_i_s_t that do not appear in the input shall be
  38581.                 treated as empty output fields.  (See the -e option.)  The
  38582.                 join field shall not be written unless specifically
  38583.                 requested.  The _l_i_s_t shall be a single command line
  38584.                 argument.  However, as an obsolescent feature, the
  38585.                 argument _l_i_s_t can be multiple arguments on the command
  38586.                 line.  If this is the case, and if the -o option is the
  38587.                 last option before _f_i_l_e_1, and if _f_i_l_e_1 is of the form
  38588.                 _s_t_r_i_n_g._s_t_r_i_n_g, the results are undefined.
  38589.  
  38590.     -t _c_h_a_r     Use character _c_h_a_r as a separator, for both input and
  38591.                 output.  Every appearance of _c_h_a_r in a line shall be
  38592.                 significant.  When this option is specified, the collating
  38593.                 sequence should be the same as sort without the -b option.
  38594.  
  38595.     -v _f_i_l_e__n_u_m_b_e_r
  38596.                 Instead of the default output, produce a line only for
  38597.                 each unpairable line in _f_i_l_e__n_u_m_b_e_r, where _f_i_l_e__n_u_m_b_e_r is
  38598.                 1 or 2.  If both -v 1 and -v 2 are specified, all
  38599.  
  38600.  
  38601.                Copyright c 1991 IEEE.  All rights reserved.
  38602.       This is an unapproved IEEE Standards Draft, subject to change.
  38603.  
  38604.  
  38605.  
  38606.  
  38607.  
  38608.  4.31 join - Relational database operator                              555
  38609.  
  38610.  
  38611.  
  38612.  
  38613.  
  38614.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  38615.  
  38616.                 unpairable lines shall be output.
  38617.  
  38618.     -1 _f_i_e_l_d    Join on the _f_i_e_l_dth field of file 1.  Fields are decimal
  38619.                 integers starting with 1.
  38620.  
  38621.     -2 _f_i_e_l_d    Join on the _f_i_e_l_dth field of file 2.  Fields are decimal
  38622.                 integers starting with 1.
  38623.  
  38624.  
  38625.  4.31.4  Operands
  38626.  
  38627.  The following operands shall be supported by the implementation:
  38628.  
  38629.     _f_i_l_e_1
  38630.     _f_i_l_e_2       A pathname of a file to be joined.  If either of the _f_i_l_e_1
  38631.                 or _f_i_l_e_2 operands is -, the standard input is used in its
  38632.                 place.
  38633.  
  38634.  
  38635.  4.31.5  External Influences
  38636.  
  38637.  
  38638.  4.31.5.1  Standard Input
  38639.  
  38640.  The standard input shall be used only if the _f_i_l_e_1 or _f_i_l_e_2 operand is -.
  38641.  See Input Files.
  38642.  
  38643.  4.31.5.2  Input Files
  38644.  
  38645.  The input files shall be text files.
  38646.  
  38647.  
  38648.  4.31.5.3  Environment Variables
  38649.  
  38650.  The following environment variables shall affect the execution of join:
  38651.  
  38652.     LANG               This variable shall determine the locale to use for
  38653.                        the locale categories when both LC_ALL and the
  38654.                        corresponding environment variable (beginning with
  38655.                        LC_) do not specify a locale.  See 2.6.
  38656.  
  38657.     LC_ALL             This variable shall determine the locale to be used
  38658.                        to override any values for locale categories
  38659.                        specified by the settings of LANG or any
  38660.                        environment variables beginning with LC_.
  38661.  
  38662.     LC_COLLATE         This variable shall determine the collating
  38663.                        sequence join expects to have been used when the
  38664.                        input files were sorted.
  38665.  
  38666.  
  38667.                Copyright c 1991 IEEE.  All rights reserved.
  38668.       This is an unapproved IEEE Standards Draft, subject to change.
  38669.  
  38670.  
  38671.  
  38672.  
  38673.  
  38674.  556                                     4 Execution Environment Utilities
  38675.  
  38676.  
  38677.  
  38678.  
  38679.  
  38680.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  38681.  
  38682.     LC_CTYPE           This variable shall determine the locale for the
  38683.                        interpretation of sequences of bytes of text data
  38684.                        as characters (e.g., single- versus multibyte
  38685.                        characters in arguments and input files).
  38686.  
  38687.     LC_MESSAGES        This variable shall determine the language in which
  38688.                        messages should be written.
  38689.  
  38690.  
  38691.  4.31.5.4  Asynchronous Events
  38692.  
  38693.  Default.
  38694.  
  38695.  
  38696.  4.31.6  External Effects
  38697.  
  38698.  4.31.6.1  Standard Output
  38699.  
  38700.  The join utility output shall be a concatenation of selected character
  38701.  fields.  When the -o option is not specified, the output shall be:
  38702.  
  38703.        "%s%s%s\n", <_j_o_i_n _f_i_e_l_d>, <_o_t_h_e_r _f_i_l_e_1 _f_i_e_l_d_s>,
  38704.        <_o_t_h_e_r _f_i_l_e_2 _f_i_e_l_d_s>
  38705.  
  38706.  If the join field is not the first field in either file, the <_o_t_h_e_r _f_i_l_e
  38707.  _f_i_e_l_d_s> are:
  38708.  
  38709.        <_f_i_e_l_d_s _p_r_e_c_e_d_i_n_g _j_o_i_n _f_i_e_l_d>, <_f_i_e_l_d_s _f_o_l_l_o_w_i_n_g _j_o_i_n _f_i_e_l_d>
  38710.  
  38711.  When the -o option is specified, the output format shall be:
  38712.  
  38713.        "%s\n", <_c_o_n_c_a_t_e_n_a_t_i_o_n _o_f _f_i_e_l_d_s>
  38714.  
  38715.  where the concatenation of fields is described by the -o option, above.
  38716.  
  38717.  For either format, each field (except the last) shall be written with its
  38718.  trailing separator character.  If the separator is the default
  38719.  (<blank>s), a single <space> character shall be written after each field
  38720.  (except the last).
  38721.  
  38722.  
  38723.  4.31.6.2  Standard Error
  38724.  
  38725.  Used only for diagnostic messages.
  38726.  
  38727.  
  38728.  
  38729.  
  38730.  
  38731.  
  38732.  
  38733.                Copyright c 1991 IEEE.  All rights reserved.
  38734.       This is an unapproved IEEE Standards Draft, subject to change.
  38735.  
  38736.  
  38737.  
  38738.  
  38739.  
  38740.  4.31 join - Relational database operator                              557
  38741.  
  38742.  
  38743.  
  38744.  
  38745.  
  38746.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  38747.  
  38748.  4.31.6.3  Output Files
  38749.  
  38750.  None.
  38751.  
  38752.  
  38753.  4.31.7  Extended Description
  38754.  
  38755.  None.
  38756.  
  38757.  
  38758.  4.31.8  Exit Status
  38759.  
  38760.  The join utility shall exit with one of the following values:
  38761.  
  38762.      0    All input files were output successfully.
  38763.  
  38764.     >0    An error occurred.
  38765.  
  38766.  
  38767.  4.31.9  Consequences of Errors
  38768.  
  38769.  Default.
  38770.  
  38771.  BEGIN_RATIONALE
  38772.  
  38773.  
  38774.  4.31.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  38775.  
  38776.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  38777.  
  38778.  Pathnames consisting of numeric digits should not be specified directly
  38779.  following the -o list.
  38780.  
  38781.  The developers of the standard believed that join should operate as
  38782.  documented in the _S_V_I_D and BSD, not as historically implemented.
  38783.  Historical implementations do not behave as documented in these areas:
  38784.  
  38785.      (1)  Most implementations of join require using the -o option when
  38786.           using the -e option.
  38787.  
  38788.      (2)  Most implementations do not parse the -o option as documented,
  38789.           and parse the elements as separate _a_r_g_v items, until the item is
  38790.           not of the form _f_i_l_e__n_u_m_b_e_r._f_i_e_l_d.  This behavior is permitted
  38791.           as an obsolescent usage of the utility.  To ensure maximum
  38792.           portability, _f_i_l_e_1 should not be of the form _s_t_r_i_n_g._s_t_r_i_n_g.  A
  38793.           suitable alternative to guarantee portability would be to put
  38794.           the -- flag before any _f_i_l_e_1 operand.
  38795.  
  38796.  
  38797.  
  38798.  
  38799.                Copyright c 1991 IEEE.  All rights reserved.
  38800.       This is an unapproved IEEE Standards Draft, subject to change.
  38801.  
  38802.  
  38803.  
  38804.  
  38805.  
  38806.  558                                     4 Execution Environment Utilities
  38807.  
  38808.  
  38809.  
  38810.  
  38811.  
  38812.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  38813.  
  38814.  The obsolescent -j, -j1, and -j2 options have been described to show how
  38815.  they have been used in historical implementations.  Earlier drafts showed
  38816.  -j _f_i_l_e__n_u_m_b_e_r _f_i_e_l_d, but a space was never allowed before the
  38817.  _f_i_l_e__n_u_m_b_e_r and two option arguments were never intended.
  38818.  
  38819.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  38820.  
  38821.  The ability to specify _f_i_l_e_2 as - is not historical practice; it was
  38822.  added for completeness.
  38823.  
  38824.  As a result of a balloting comment, the -v option was added to the
  38825.  nonobsolescent version.  This option was felt necessary because it
  38826.  permitted the writing of _o_n_l_y those lines that do not match on the join
  38827.  field, as opposed to the -a option, which prints both lines that do and
  38828.  do not match.  This additional facility is parallel with the -v option of
  38829.  grep.
  38830.  
  38831.  END_RATIONALE
  38832.  
  38833.  
  38834.  
  38835.  4.32  kill - Terminate or signal processes
  38836.  
  38837.  
  38838.  4.32.1  Synopsis
  38839.  
  38840.  kill  -s _s_i_g_n_a_l__n_a_m_e _p_i_d ...
  38841.  
  38842.  kill  -l [_e_x_i_t__s_t_a_t_u_s]
  38843.  
  38844.  _O_b_s_o_l_e_s_c_e_n_t _V_e_r_s_i_o_n_s:
  38845.  kill  [-_s_i_g_n_a_l__n_a_m_e] _p_i_d ...
  38846.  
  38847.  kill  [-_s_i_g_n_a_l__n_u_m_b_e_r] _p_i_d ...
  38848.  
  38849.  
  38850.  4.32.2  Description
  38851.  
  38852.  The kill utility shall send a signal to the process(es) specified by each
  38853.  _p_i_d operand.
  38854.  
  38855.  For each _p_i_d operand, the kill utility shall perform actions equivalent
  38856.  to the POSIX.1 {8} _k_i_l_l() function called with the following arguments:
  38857.  
  38858.      (1)  The value of the _p_i_d operand shall be used as the _p_i_d argument.
  38859.  
  38860.      (2)  The _s_i_g argument is the value specified by the -s option,
  38861.           -_s_i_g_n_a_l__n_u_m_b_e_r option, or the -_s_i_g_n_a_l__n_a_m_e option, or by
  38862.           SIGTERM, if none of these options is specified.
  38863.  
  38864.  
  38865.                Copyright c 1991 IEEE.  All rights reserved.
  38866.       This is an unapproved IEEE Standards Draft, subject to change.
  38867.  
  38868.  
  38869.  
  38870.  
  38871.  
  38872.  4.32 kill - Terminate or signal processes                             559
  38873.  
  38874.  
  38875.  
  38876.  
  38877.  
  38878.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  38879.  
  38880.  4.32.3  Options
  38881.  
  38882.  The kill utility shall conform to the utility argument syntax guidelines
  38883.  described in 2.10.2, except that in the obsolescent form, the
  38884.  -_s_i_g_n_a_l__n_u_m_b_e_r and -_s_i_g_n_a_l__n_a_m_e options are usually more than a single
  38885.  character.
  38886.  
  38887.  The following options shall be supported by the implementation:
  38888.  
  38889.     -l          (The letter ell.)  Write all values of _s_i_g_n_a_l__n_a_m_e
  38890.                 supported by the implementation, if no operand is given.
  38891.                 If an _e_x_i_t__s_t_a_t_u_s operand is given and it is a value of
  38892.                 the ? shell special parameter (see 3.5.2 and wait in 4.70)
  38893.                 corresponding to a process that was terminated by a
  38894.                 signal, the _s_i_g_n_a_l__n_a_m_e corresponding to the signal that
  38895.                 terminated the process shall be written.  If an
  38896.                 _e_x_i_t__s_t_a_t_u_s operand is given and it is the unsigned
  38897.                 decimal integer value of a signal number, the _s_i_g_n_a_l__n_a_m_e
  38898.                 (the POSIX.1 {8}-defined symbolic constant name without
  38899.                 the SIG prefix) corresponding to that signal shall be
  38900.                 written.  Otherwise, the results are unspecified.
  38901.  
  38902.     -s _s_i_g_n_a_l__n_a_m_e
  38903.                 Specify the signal to send, using one of the symbolic
  38904.                 names defined for Required Signals or Job Control Signals
  38905.                 in POSIX.1 {8} 3.3.1.1.  Values of _s_i_g_n_a_l__n_a_m_e shall be
  38906.                 recognized in a case-independent fashion, without the SIG
  38907.                 prefix.  In addition, the symbolic name 0 shall be
  38908.                 recognized, representing the signal value zero.  The
  38909.                 corresponding signal shall be sent instead of SIGTERM.
  38910.  
  38911.     -_s_i_g_n_a_l__n_a_m_e
  38912.                 (Obsolescent.)  Equivalent to -s _s_i_g_n_a_l__n_a_m_e.
  38913.  
  38914.     -_s_i_g_n_a_l__n_u_m_b_e_r
  38915.                 (Obsolescent.)  Specify a nonnegative decimal integer,
  38916.                 _s_i_g_n_a_l__n_u_m_b_e_r, representing the signal to be used instead
  38917.                 of SIGTERM, as the _s_i_g argument in the effective call to
  38918.                 _k_i_l_l().  The correspondence between integer values and the
  38919.                 _s_i_g value used is shown in the following table.
  38920.  
  38921.                                 _ssss_iiii_gggg_nnnn_aaaa_llll______nnnn_uuuu_mmmm_bbbb_eeee_rrrr   _ssss_iiii_gggg Value
  38922.                                 _____________   _________
  38923.                                       0         0
  38924.                                       1         SIGHUP
  38925.                                       2         SIGINT
  38926.                                       3         SIGQUIT
  38927.                                       6         SIGABRT
  38928.  
  38929.  
  38930.  
  38931.                Copyright c 1991 IEEE.  All rights reserved.
  38932.       This is an unapproved IEEE Standards Draft, subject to change.
  38933.  
  38934.  
  38935.  
  38936.  
  38937.  
  38938.  560                                     4 Execution Environment Utilities
  38939.  
  38940.  
  38941.  
  38942.  
  38943.  
  38944.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  38945.  
  38946.                                       9         SIGKILL
  38947.                                      14         SIGALRM
  38948.                                      15         SIGTERM
  38949.  
  38950.                 The effects of specifying any _s_i_g_n_a_l__n_u_m_b_e_r other than
  38951.                 those listed in the table are undefined.
  38952.  
  38953.  In the obsolescent versions, if the first argument is a negative integer,
  38954.  it shall be interpreted as a -_s_i_g_n_a_l__n_u_m_b_e_r option, not as a negative _p_i_d
  38955.  operand specifying a process group.
  38956.  
  38957.  
  38958.  4.32.4  Operands
  38959.  
  38960.  The following operands shall be supported by the implementation:
  38961.  
  38962.     _p_i_d         A decimal integer specifying a process or process group to
  38963.                 be signaled.  The process(es) selected by positive,
  38964.                 negative, and zero values of the _p_i_d operand shall be as
  38965.                 described for POSIX.1 {8} _k_i_l_l() function.  If the first
  38966.                 _p_i_d operand is negative, it should be preceded by -- to
  38967.                 keep it from being interpreted as an option.
  38968.  
  38969.     _e_x_i_t__s_t_a_t_u_s A decimal integer specifying a signal number or the exit
  38970.                 status of a process terminated by a signal.
  38971.  
  38972.  
  38973.  4.32.5  External Influences
  38974.  
  38975.  
  38976.  4.32.5.1  Standard Input
  38977.  
  38978.  None.
  38979.  
  38980.  4.32.5.2  Input Files
  38981.  
  38982.  None.
  38983.  
  38984.  
  38985.  4.32.5.3  Environment Variables
  38986.  
  38987.  The following environment variables shall affect the execution of kill:
  38988.  
  38989.     LANG               This variable shall determine the locale to use for
  38990.                        the locale categories when both LC_ALL and the
  38991.                        corresponding environment variable (beginning with
  38992.                        LC_) do not specify a locale.  See 2.6.
  38993.  
  38994.  
  38995.  
  38996.  
  38997.                Copyright c 1991 IEEE.  All rights reserved.
  38998.       This is an unapproved IEEE Standards Draft, subject to change.
  38999.  
  39000.  
  39001.  
  39002.  
  39003.  
  39004.  4.32 kill - Terminate or signal processes                             561
  39005.  
  39006.  
  39007.  
  39008.  
  39009.  
  39010.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  39011.  
  39012.     LC_ALL             This variable shall determine the locale to be used
  39013.                        to override any values for locale categories
  39014.                        specified by the settings of LANG or any
  39015.                        environment variables beginning with LC_.
  39016.  
  39017.     LC_CTYPE           This variable shall determine the locale for the
  39018.                        interpretation of sequences of bytes of text data
  39019.                        as characters (e.g., single- versus multibyte
  39020.                        characters in arguments).
  39021.  
  39022.     LC_MESSAGES        This variable shall determine the language in which
  39023.                        messages should be written.
  39024.  
  39025.  
  39026.  4.32.5.4  Asynchronous Events
  39027.  
  39028.  Default.
  39029.  
  39030.  
  39031.  4.32.6  External Effects
  39032.  
  39033.  4.32.6.1  Standard Output
  39034.  
  39035.  When the -l option is not specified, the standard output shall not be
  39036.  used.
  39037.  
  39038.  When the -l option is specified, the symbolic name of each signal shall
  39039.  be written in the following format:
  39040.  
  39041.        "%s%c", <_s_i_g_n_a_l__n_a_m_e>, <_s_e_p_a_r_a_t_o_r>
  39042.  
  39043.  where the <_s_i_g_n_a_l__n_a_m_e> is in uppercase, without the SIG prefix, and the
  39044.  <_s_e_p_a_r_a_t_o_r> shall be either a <newline> or a <space>.  For the last
  39045.  signal written, <_s_e_p_a_r_a_t_o_r> shall be a <newline>.
  39046.  
  39047.  When both the -l option and _e_x_i_t__s_t_a_t_u_s operand are specified, the
  39048.  symbolic name of the corresponding signal shall be written in the
  39049.  following format:
  39050.  
  39051.        "%s\n", <_s_i_g_n_a_l__n_a_m_e>
  39052.  
  39053.  
  39054.  4.32.6.2  Standard Error
  39055.  
  39056.  Used only for diagnostic messages.
  39057.  
  39058.  
  39059.  
  39060.  
  39061.  
  39062.  
  39063.                Copyright c 1991 IEEE.  All rights reserved.
  39064.       This is an unapproved IEEE Standards Draft, subject to change.
  39065.  
  39066.  
  39067.  
  39068.  
  39069.  
  39070.  562                                     4 Execution Environment Utilities
  39071.  
  39072.  
  39073.  
  39074.  
  39075.  
  39076.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  39077.  
  39078.  4.32.6.3  Output Files
  39079.  
  39080.  None.
  39081.  
  39082.  
  39083.  4.32.7  Extended Description
  39084.  
  39085.  None.
  39086.  
  39087.  
  39088.  4.32.8  Exit Status
  39089.  
  39090.  The kill utility shall exit with one of the following values:
  39091.  
  39092.      0    At least one matching process was found for each _p_i_d operand,
  39093.           and the specified signal was successfully processed for at least
  39094.           one matching process.
  39095.  
  39096.     >0    An error occurred.
  39097.  
  39098.  
  39099.  4.32.9  Consequences of Errors
  39100.  
  39101.  Default.
  39102.  
  39103.  BEGIN_RATIONALE
  39104.  
  39105.  
  39106.  4.32.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  39107.  
  39108.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  39109.  
  39110.  Any of the commands
  39111.  
  39112.        kill -9 100 -165
  39113.        kill -s kill 100 -165
  39114.        kill -s KILL 100 -165
  39115.  
  39116.  sends the SIGKILL signal to the process whose process ID is 100 and to
  39117.  all processes whose process group ID is 165, assuming the sending process
  39118.  has permission to send that signal to the specified processes, and that
  39119.  they exist.
  39120.  
  39121.  POSIX.1 {8} and POSIX.2 do not require specific signal numbers for any
  39122.  _s_i_g_n_a_l__n_a_m_e_s. Even the -_s_i_g_n_a_l__n_u_m_b_e_r option provides symbolic (although
  39123.  numeric) names for signals.  If a process is terminated by a signal, its
  39124.  exit status indicates the signal that killed it, but the exact values are
  39125.  not specified.  The kill -l option, however, can be used to map decimal
  39126.  signal numbers and exit status values into the name of a signal.  The
  39127.  
  39128.  
  39129.                Copyright c 1991 IEEE.  All rights reserved.
  39130.       This is an unapproved IEEE Standards Draft, subject to change.
  39131.  
  39132.  
  39133.  
  39134.  
  39135.  
  39136.  4.32 kill - Terminate or signal processes                             563
  39137.  
  39138.  
  39139.  
  39140.  
  39141.  
  39142.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  39143.  
  39144.  following example reports the status of a terminated job:
  39145.  
  39146.        job
  39147.        stat=$?
  39148.        if [ $stat -eq 0 ]
  39149.        then
  39150.                echo job completed successfully.
  39151.        elif [ $stat -gt 128 ]
  39152.        then
  39153.                echo job terminated by signal SIG$(kill -l $stat).
  39154.        else
  39155.                echo job terminated with error code $stat.
  39156.        fi
  39157.  
  39158.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  39159.  
  39160.  The signal name extension was based on a desire to avoid limiting the
  39161.  kill utility to implementation-dependent values.
  39162.  
  39163.  The -l option originated from the C-shell, and is also implemented in the
  39164.  KornShell.  The C-shell output can consist of multiple output lines,
  39165.  because the signal names do not always fit on a single line on some
  39166.  terminal screens.  The KornShell output also included the
  39167.  implementation-specific signal numbers, and was felt by the working group
  39168.  to be too difficult for scripts to parse conveniently.  The specified
  39169.  output format is intended not only to accommodate the historical C-shell
  39170.  output, but also to permit an entirely vertical or entirely horizontal
  39171.  listing on systems for which this is appropriate.
  39172.  
  39173.  An earlier draft invented the name SIGNULL as a _s_i_g_n_a_l__n_a_m_e for signal 0
  39174.  (used by POSIX.1 {8} to test for the existence of a process without
  39175.  sending it a signal).  Since the _s_i_g_n_a_l__n_a_m_e "0" can be used in this case
  39176.  unambiguously, SIGNULL has been removed.
  39177.  
  39178.  An earlier draft also required symbolic _s_i_g_n_a_l__n_a_m_es to be recognized
  39179.  with or without the SIG prefix.  Historical versions of kill have not
  39180.  written the SIG prefix for the -l option and have not recognized the SIG
  39181.  prefix on _s_i_g_n_a_l__n_a_m_es. Since neither application portability nor ease of
  39182.  use would be improved by requiring this extension, it is no longer
  39183.  required.
  39184.  
  39185.  POSIX.2 contains no utility that browses for process IDs.  Values for _p_i_d
  39186.  are available via the ! and $ parameters of the shell command language
  39187.  (see 3.5.2).
  39188.  
  39189.  The use of numeric signal values was the subject of a long debate in the
  39190.  Working Group.  During balloting, it was determined that their use should
  39191.  be declared obsolescent, but retained to provide backward compatibility
  39192.  to existing applications.
  39193.  
  39194.  
  39195.                Copyright c 1991 IEEE.  All rights reserved.
  39196.       This is an unapproved IEEE Standards Draft, subject to change.
  39197.  
  39198.  
  39199.  
  39200.  
  39201.  
  39202.  564                                     4 Execution Environment Utilities
  39203.  
  39204.  
  39205.  
  39206.  
  39207.  
  39208.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  39209.  
  39210.  Existing implementations of kill permit negative _p_i_d operands
  39211.  representing process groups, but this was often unclearly documented.
  39212.  The assumption that an initial negative number argument specifies a
  39213.  signal number (rather than a process group) is the existing behavior, and
  39214.  was retained.  Therefore, to send the default signal to a process group
  39215.  (say 123), an application should use a command similar to one of the
  39216.  following:
  39217.  
  39218.        kill -TERM -123
  39219.        kill -- -123
  39220.  
  39221.  The -s option was added in response to international interest in
  39222.  providing some form of kill that meets the Utility Syntax Guidelines.
  39223.  
  39224.  Some implementations provide kill only as a shell built-in utility and
  39225.  use that status to support the extension of killing background
  39226.  asynchronous lists (those started with &), by the use of job identifiers.
  39227.  For example,
  39228.  
  39229.        kill %1
  39230.  
  39231.  would kill the first asynchronous list in the background.  This standard
  39232.  does not require (but permits) such an extension, because other related
  39233.  job-control features are not provided by the shell, and because these
  39234.  facilities are not ordinarily usable in portable shell applications.
  39235.  This notation is expected to be introduced by the UPE.
  39236.  
  39237.  END_RATIONALE
  39238.  
  39239.  
  39240.  
  39241.  
  39242.  
  39243.  
  39244.  
  39245.  
  39246.  
  39247.  
  39248.  
  39249.  
  39250.  
  39251.  
  39252.  
  39253.  
  39254.  
  39255.  
  39256.  
  39257.  
  39258.  
  39259.  
  39260.  
  39261.                Copyright c 1991 IEEE.  All rights reserved.
  39262.       This is an unapproved IEEE Standards Draft, subject to change.
  39263.  
  39264.  
  39265.  
  39266.  
  39267.  
  39268.  4.32 kill - Terminate or signal processes                             565
  39269.  
  39270.  
  39271.  
  39272.  
  39273.  
  39274.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  39275.  
  39276.  4.33  ln - Link files
  39277.  
  39278.  
  39279.  4.33.1  Synopsis
  39280.  
  39281.  
  39282.  ln  [-f] _s_o_u_r_c_e__f_i_l_e _t_a_r_g_e_t__f_i_l_e
  39283.  ln  [-f] _s_o_u_r_c_e__f_i_l_e ... _t_a_r_g_e_t__d_i_r
  39284.  
  39285.  
  39286.  4.33.2  Description
  39287.  
  39288.  In the first synopsis form, the ln utility shall create a new directory
  39289.  entry (link) for the file specified by the _s_o_u_r_c_e__f_i_l_e operand, at the
  39290.  _d_e_s_t_i_n_a_t_i_o_n path specified by the _t_a_r_g_e_t__f_i_l_e operand.  This first
  39291.  synopsis form shall be assumed when the final operand does not name an
  39292.  existing directory; if more than two operands are specified and the final  1
  39293.  is not an existing directory, an error shall result.                       1
  39294.  
  39295.  In the second synopsis form, the ln utility shall create a new directory
  39296.  entry for each file specified by a _s_o_u_r_c_e__f_i_l_e operand, at a _d_e_s_t_i_n_a_t_i_o_n
  39297.  path in the existing directory named by _t_a_r_g_e_t__d_i_r.
  39298.  
  39299.  If the last operand specifies an existing file of a type not specified by
  39300.  POSIX.1 {8}, the behavior is implementation defined.
  39301.  
  39302.  The corresponding destination path for each _s_o_u_r_c_e__f_i_l_e shall be the
  39303.  concatenation of the target directory pathname, a slash character, and
  39304.  the last pathname component of the _s_o_u_r_c_e__f_i_l_e. The second synopsis form
  39305.  shall be assumed when the final operand names an existing directory.
  39306.  
  39307.  For each _s_o_u_r_c_e__f_i_l_e:
  39308.  
  39309.      (1)  If the _d_e_s_t_i_n_a_t_i_o_n path exists:
  39310.  
  39311.            (a)  If the -f option is not specified, ln shall write a
  39312.                 diagnostic message to standard error, do nothing more with
  39313.                 the current _s_o_u_r_c_e__f_i_l_e, and go on to any remaining
  39314.                 _s_o_u_r_c_e__f_i_l_e_s.
  39315.  
  39316.            (b)  Actions shall be performed equivalent to the POSIX.1 {8}
  39317.                 _u_n_l_i_n_k() function, called using _d_e_s_t_i_n_a_t_i_o_n as the _p_a_t_h
  39318.                 argument.  If this fails for any reason, ln shall write a
  39319.                 diagnostic message to standard error, do nothing more with
  39320.                 the current _s_o_u_r_c_e__f_i_l_e, and go on to any remaining
  39321.                 _s_o_u_r_c_e__f_i_l_e_s.
  39322.  
  39323.      (2)  Actions shall be performed equivalent to the POSIX.1 {8} _l_i_n_k()
  39324.           function using _s_o_u_r_c_e__f_i_l_e as the _p_a_t_h_1 argument, and the
  39325.  
  39326.  
  39327.                Copyright c 1991 IEEE.  All rights reserved.
  39328.       This is an unapproved IEEE Standards Draft, subject to change.
  39329.  
  39330.  
  39331.  
  39332.  
  39333.  
  39334.  566                                     4 Execution Environment Utilities
  39335.  
  39336.  
  39337.  
  39338.  
  39339.  
  39340.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  39341.  
  39342.           _d_e_s_t_i_n_a_t_i_o_n path as the _p_a_t_h_2 argument.
  39343.  
  39344.  
  39345.  4.33.3  Options
  39346.  
  39347.  The ln utility shall conform to the utility argument syntax guidelines
  39348.  described in 2.10.2.
  39349.  
  39350.  The following option shall be supported by the implementation:
  39351.  
  39352.     -f          Force existing _d_e_s_t_i_n_a_t_i_o_n pathnames to be removed to
  39353.                 allow the link.
  39354.  
  39355.  
  39356.  4.33.4  Operands
  39357.  
  39358.  The following operands shall be supported by the implementation:
  39359.  
  39360.     _s_o_u_r_c_e__f_i_l_e A pathname of a file to be linked.  This can be a regular
  39361.                 or special file; whether a directory can be linked is
  39362.                 implementation defined.
  39363.  
  39364.     _t_a_r_g_e_t__f_i_l_e The pathname of the new directory entry to be created.
  39365.  
  39366.     _t_a_r_g_e_t__d_i_r  A pathname of an existing directory in which the new
  39367.                 directory entries are to be created.
  39368.  
  39369.  
  39370.  4.33.5  External Influences
  39371.  
  39372.  
  39373.  4.33.5.1  Standard Input
  39374.  
  39375.  None.
  39376.  
  39377.  4.33.5.2  Input Files
  39378.  
  39379.  None.
  39380.  
  39381.  
  39382.  4.33.5.3  Environment Variables
  39383.  
  39384.  The following environment variables shall affect the execution of ln:
  39385.  
  39386.     LANG               This variable shall determine the locale to use for
  39387.                        the locale categories when both LC_ALL and the
  39388.                        corresponding environment variable (beginning with
  39389.                        LC_) do not specify a locale.  See 2.6.
  39390.  
  39391.  
  39392.  
  39393.                Copyright c 1991 IEEE.  All rights reserved.
  39394.       This is an unapproved IEEE Standards Draft, subject to change.
  39395.  
  39396.  
  39397.  
  39398.  
  39399.  
  39400.  4.33 ln - Link files                                                  567
  39401.  
  39402.  
  39403.  
  39404.  
  39405.  
  39406.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  39407.  
  39408.     LC_ALL             This variable shall determine the locale to be used
  39409.                        to override any values for locale categories
  39410.                        specified by the settings of LANG or any
  39411.                        environment variables beginning with LC_.
  39412.  
  39413.     LC_CTYPE           This variable shall determine the locale for the
  39414.                        interpretation of sequences of bytes of text data
  39415.                        as characters (e.g., single- versus multibyte
  39416.                        characters in arguments).
  39417.  
  39418.     LC_MESSAGES        This variable shall determine the language in which
  39419.                        messages should be written.
  39420.  
  39421.  
  39422.  4.33.5.4  Asynchronous Events
  39423.  
  39424.  Default.
  39425.  
  39426.  
  39427.  4.33.6  External Effects
  39428.  
  39429.  4.33.6.1  Standard Output
  39430.  
  39431.  None.
  39432.  
  39433.  
  39434.  4.33.6.2  Standard Error
  39435.  
  39436.  Used only for diagnostic messages.
  39437.  
  39438.  4.33.6.3  Output Files
  39439.  
  39440.  None.
  39441.  
  39442.  
  39443.  4.33.7  Extended Description
  39444.  
  39445.  None.
  39446.  
  39447.  
  39448.  4.33.8  Exit Status
  39449.  
  39450.  The ln utility shall exit with one of the following values:
  39451.  
  39452.      0    All the specified files were linked successfully.
  39453.  
  39454.     >0    An error occurred.
  39455.  
  39456.  
  39457.  
  39458.  
  39459.                Copyright c 1991 IEEE.  All rights reserved.
  39460.       This is an unapproved IEEE Standards Draft, subject to change.
  39461.  
  39462.  
  39463.  
  39464.  
  39465.  
  39466.  568                                     4 Execution Environment Utilities
  39467.  
  39468.  
  39469.  
  39470.  
  39471.  
  39472.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  39473.  
  39474.  4.33.9  Consequences of Errors
  39475.  
  39476.  Default.
  39477.  
  39478.  BEGIN_RATIONALE
  39479.  
  39480.  
  39481.  4.33.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  39482.  
  39483.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  39484.  
  39485.  None.
  39486.  
  39487.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  39488.  
  39489.  Some historic versions of ln (including the one specified by the _S_V_I_D)
  39490.  unlink the destination file, if it exists, by default.  If the mode does
  39491.  not permit writing, these versions will prompt for confirmation before
  39492.  attempting the unlink.  In these versions the -f option causes ln to not
  39493.  attempt to prompt for confirmation.
  39494.  
  39495.  This allows ln to succeed in creating links when the target file already
  39496.  exists, even if the file itself is not writable (although the directory
  39497.  must be).  Previous versions of this draft specified this functionality.
  39498.  
  39499.  This draft does not allow the ln utility to unlink existing destination
  39500.  paths by default for the following reasons:
  39501.  
  39502.      - The ln utility has traditionally been used to provide locking for
  39503.        shell applications, a usage that is incompatible with ln unlinking
  39504.        the destination path by default.  There was no corresponding
  39505.        technical advantage to adding this functionality.
  39506.  
  39507.      - This functionality gave ln the ability to destroy the link
  39508.        structure of files, which changes the historical behavior of ln.
  39509.  
  39510.      - This functionality is easily replicated with a combination of rm
  39511.        and ln.
  39512.  
  39513.      - It is not historical practice in many systems; BSD and BSD-derived
  39514.        systems do not support this behavior.  Unfortunately, whichever
  39515.        behavior is selected can cause scripts written expecting the other
  39516.        behavior to fail.
  39517.  
  39518.      - It is preferable that ln perform in the same manner as the _l_i_n_k()
  39519.        function, which does not permit the target to already exist.
  39520.  
  39521.  This standard retains the -f option to provide support for shell scripts
  39522.  depending on the _S_V_I_D semantics.  It seems likely that shell scripts
  39523.  
  39524.  
  39525.                Copyright c 1991 IEEE.  All rights reserved.
  39526.       This is an unapproved IEEE Standards Draft, subject to change.
  39527.  
  39528.  
  39529.  
  39530.  
  39531.  
  39532.  4.33 ln - Link files                                                  569
  39533.  
  39534.  
  39535.  
  39536.  
  39537.  
  39538.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  39539.  
  39540.  would not be written to handle prompting by ln, and would therefore have
  39541.  specified the -f option.
  39542.  
  39543.  It should also be noted that -f is an undocumented feature of many
  39544.  historical versions of the ln utility, allowing linking to directories.
  39545.  These versions will require modification.
  39546.  
  39547.  Previous drafts of this standard also required an -i option, which
  39548.  behaved like the -i options in cp and mv, prompting for confirmation
  39549.  before unlinking existing files.  This was not historical practice for
  39550.  the ln utility and has been deleted from this version.
  39551.  
  39552.  Although symbolic links are not part of the standard, the -s option
  39553.  should be used only for the traditional purpose of creating symbolic
  39554.  links.
  39555.  
  39556.  END_RATIONALE
  39557.  
  39558.  
  39559.  
  39560.  4.34  locale - Get locale-specific information
  39561.  
  39562.  
  39563.  4.34.1  Synopsis
  39564.  
  39565.  locale  [ -a | -m ]
  39566.  
  39567.  locale  [-ck] _n_a_m_e ...
  39568.  
  39569.  
  39570.  4.34.2  Description
  39571.  
  39572.  The locale utility shall write information about the current locale
  39573.  environment, or all public locales, to the standard output.  For the
  39574.  purposes of this clause, a _p_u_b_l_i_c _l_o_c_a_l_e is one provided by the
  39575.  implementation that is accessible to the application.
  39576.  
  39577.  When locale is invoked without any arguments, it shall summarize the
  39578.  current locale environment for each locale category as determined by the
  39579.  settings of the environment variables defined in 2.5.
  39580.  
  39581.  When invoked with operands, it shall write values that have been assigned
  39582.  to the keywords in the locale categories, as follows:
  39583.  
  39584.      - Specifying a keyword name shall select the named keyword and the
  39585.        category containing that keyword.
  39586.  
  39587.      - Specifying a category name shall select the named category and all
  39588.        keywords in that category.
  39589.  
  39590.  
  39591.                Copyright c 1991 IEEE.  All rights reserved.
  39592.       This is an unapproved IEEE Standards Draft, subject to change.
  39593.  
  39594.  
  39595.  
  39596.  
  39597.  
  39598.  570                                     4 Execution Environment Utilities
  39599.  
  39600.  
  39601.  
  39602.  
  39603.  
  39604.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  39605.  
  39606.  4.34.3  Options
  39607.  
  39608.  The locale utility shall conform to the utility argument syntax
  39609.  guidelines described in 2.10.2.
  39610.  
  39611.  The following options shall be supported by the implementation:
  39612.  
  39613.     -a          Write information about all available public locales.  The
  39614.                 available locales shall include POSIX, representing the
  39615.                 POSIX Locale.  The manner in which the implementation
  39616.                 determines what other locales are available is
  39617.                 implementation defined.
  39618.  
  39619.     -c          Write the names of selected locale categories; see
  39620.                 4.34.6.1.
  39621.  
  39622.     -k          Write the names and values of selected keywords.  The
  39623.                 implementation may omit values for some keywords; see
  39624.                 4.34.4.
  39625.  
  39626.     -m          Write names of available charmaps; see 2.4.1.               1
  39627.  
  39628.  
  39629.  4.34.4  Operands
  39630.  
  39631.  The following operand shall be supported by the implementation:
  39632.  
  39633.     _n_a_m_e        The name of a locale category as defined in 2.5, the name
  39634.                 of a keyword in a locale category, or the reserved name
  39635.                 charmap.  The named category or keyword shall be selected
  39636.                 for output.  If a single _n_a_m_e represents both a locale
  39637.                 category name and a keyword name in the current locale,
  39638.                 the results are unspecified.  Otherwise, both category and
  39639.                 keyword names can be specified as _n_a_m_e operands, in any
  39640.                 sequence.  It is implementation defined whether any
  39641.                 keyword values are written for the categories LC_CTYPE and
  39642.                 LC_COLLATE.
  39643.  
  39644.  
  39645.  4.34.5  External Influences
  39646.  
  39647.  
  39648.  4.34.5.1  Standard Input
  39649.  
  39650.  None.
  39651.  
  39652.  
  39653.  
  39654.  
  39655.  
  39656.  
  39657.                Copyright c 1991 IEEE.  All rights reserved.
  39658.       This is an unapproved IEEE Standards Draft, subject to change.
  39659.  
  39660.  
  39661.  
  39662.  
  39663.  
  39664.  4.34 locale - Get locale-specific information                         571
  39665.  
  39666.  
  39667.  
  39668.  
  39669.  
  39670.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  39671.  
  39672.  4.34.5.2  Input Files
  39673.  
  39674.  None.
  39675.  
  39676.  
  39677.  4.34.5.3  Environment Variables
  39678.  
  39679.  The following environment variables shall affect the execution of locale:
  39680.  
  39681.     LANG               This variable shall determine the locale to use for
  39682.                        the locale categories when both LC_ALL and the
  39683.                        corresponding environment variable (beginning with
  39684.                        LC_) do not specify a locale.  See 2.6.
  39685.  
  39686.     LC_ALL             This variable shall determine the locale to be used
  39687.                        to override any values for locale categories
  39688.                        specified by the settings of LANG or any
  39689.                        environment variables beginning with LC_.
  39690.  
  39691.     LC_CTYPE           This variable shall determine the locale for the
  39692.                        interpretation of sequences of bytes of text data
  39693.                        as characters (e.g., single- versus multibyte
  39694.                        characters in arguments).
  39695.  
  39696.     LC_MESSAGES        This variable shall determine the language in which
  39697.                        messages should be written.
  39698.  
  39699.  The LANG and LC_* environment variables shall specify the current locale
  39700.  environment to be written out; they shall be used if the -a option is not
  39701.  specified.
  39702.  
  39703.  4.34.5.4  Asynchronous Events
  39704.  
  39705.  Default.
  39706.  
  39707.  
  39708.  4.34.6  External Effects
  39709.  
  39710.  
  39711.  4.34.6.1  Standard Output
  39712.  
  39713.  If locale is invoked without any options or operands, the names and
  39714.  values of the LANG and LC_* environment variables described in this
  39715.  standard shall be written to the standard output, one variable per line,
  39716.  with LANG first, and each line using the following format.  Only those
  39717.  variables set in the environment and not overridden by LC_ALL shall be
  39718.  written using this format:
  39719.  
  39720.        "%s=%s\n", <_v_a_r_i_a_b_l_e__n_a_m_e>, <_v_a_l_u_e>
  39721.  
  39722.  
  39723.                Copyright c 1991 IEEE.  All rights reserved.
  39724.       This is an unapproved IEEE Standards Draft, subject to change.
  39725.  
  39726.  
  39727.  
  39728.  
  39729.  
  39730.  572                                     4 Execution Environment Utilities
  39731.  
  39732.  
  39733.  
  39734.  
  39735.  
  39736.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  39737.  
  39738.  The names of those LC_* variables associated with locale categories
  39739.  defined in this standard that are not set in the environment or are
  39740.  overridden by LC_ALL shall be written in the following format:
  39741.  
  39742.        "%s=\"%s\"\n", <_v_a_r_i_a_b_l_e__n_a_m_e>, <_i_m_p_l_i_e_d _v_a_l_u_e>
  39743.  
  39744.  The <_i_m_p_l_i_e_d _v_a_l_u_e> shall be the name of the locale that has been
  39745.  selected for that category by the implementation, based on the values in
  39746.  LANG and LC_ALL, as described in 2.6.
  39747.  
  39748.  The <_v_a_l_u_e> and <_i_m_p_l_i_e_d _v_a_l_u_e> shown above shall be properly quoted for   1
  39749.  possible later re-entry to the shell.  The <_v_a_l_u_e> shall not be quoted     1
  39750.  using double-quotes (so that it can be distinguished by the user from the  1
  39751.  <_i_m_p_l_i_e_d _v_a_l_u_e> case, which always requires double-quotes).                1
  39752.  
  39753.  The LC_ALL variable shall be written last, using the first format shown    1
  39754.  above.  If it is not set, it shall be written as:
  39755.  
  39756.        "LC_ALL=\n"
  39757.  
  39758.  If any arguments are specified:
  39759.  
  39760.      (1)  If the -a option is specified, the names of all the public
  39761.           locales shall be written, each in the following format:
  39762.  
  39763.                 "%s\n", <_l_o_c_a_l_e _n_a_m_e>
  39764.  
  39765.      (2)  If the -c option is specified, the name(s) of all selected
  39766.           categories shall be written, each in the following format:
  39767.  
  39768.                 "%s\n", <_c_a_t_e_g_o_r_y _n_a_m_e>
  39769.  
  39770.           If keywords are also selected for writing (see following items),
  39771.           the category name output shall precede the keyword output for
  39772.           that category.
  39773.  
  39774.           If the -c option is not specified, the names of the categories    2
  39775.           shall not be written; only the keywords, as selected by the _n_a_m_e  2
  39776.           operand, shall be written.                                        2
  39777.  
  39778.      (3)  If the -k option is specified, the name(s) and value(s) of
  39779.           selected keywords shall be written.  If a value is nonnumeric,
  39780.           it shall be written in the following format:
  39781.  
  39782.                 "%s=\"%s\"\n", <_k_e_y_w_o_r_d _n_a_m_e>, <_k_e_y_w_o_r_d _v_a_l_u_e>
  39783.  
  39784.           If the keyword was charmap, the name of the charmap (if any)
  39785.           that was specified via the localedef -f option when the locale
  39786.           was created shall be written, with the word charmap as <_k_e_y_w_o_r_d
  39787.  
  39788.  
  39789.                Copyright c 1991 IEEE.  All rights reserved.
  39790.       This is an unapproved IEEE Standards Draft, subject to change.
  39791.  
  39792.  
  39793.  
  39794.  
  39795.  
  39796.  4.34 locale - Get locale-specific information                         573
  39797.  
  39798.  
  39799.  
  39800.  
  39801.  
  39802.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  39803.  
  39804.           _n_a_m_e>.
  39805.  
  39806.           If a value is numeric, it shall be written in one of the
  39807.           following formats:
  39808.  
  39809.                 "%s=%d\n", <_k_e_y_w_o_r_d _n_a_m_e>, <_k_e_y_w_o_r_d _v_a_l_u_e>
  39810.  
  39811.                 "%s=%c%o\n", <_k_e_y_w_o_r_d _n_a_m_e>, <_e_s_c_a_p_e _c_h_a_r_a_c_t_e_r>,
  39812.                 <_k_e_y_w_o_r_d _v_a_l_u_e>
  39813.  
  39814.                 "%s=%cx%x\n", <_k_e_y_w_o_r_d _n_a_m_e>, <_e_s_c_a_p_e _c_h_a_r_a_c_t_e_r>,
  39815.                 <_k_e_y_w_o_r_d _v_a_l_u_e>
  39816.  
  39817.           where the <_e_s_c_a_p_e _c_h_a_r_a_c_t_e_r> is that identified by the
  39818.           escape_char keyword in the current locale; see 2.5.2.
  39819.  
  39820.           Compound keyword values (list entries) shall be separated in the
  39821.           output by semicolons.  When included in keyword values, the
  39822.           semicolon, the double-quote, the backslash, and any control
  39823.           character shall be preceded (escaped) with the escape character.
  39824.  
  39825.      (4)  If the -k option is not specified, selected keyword values shall
  39826.           be written, each in the following format:
  39827.  
  39828.                 "%s\n", <_k_e_y_w_o_r_d _v_a_l_u_e>
  39829.  
  39830.           If the keyword was charmap, the name of the charmap (if any)
  39831.           that was specified via the localedef -f option when the locale
  39832.           was created shall be written.
  39833.  
  39834.      (5)  If the -m option is specified, then a list of all available
  39835.           charmaps shall be written, each in the format
  39836.  
  39837.                 "%s\n", <_c_h_a_r_m_a_p>
  39838.  
  39839.           where <_c_h_a_r_m_a_p> is in a format suitable for use as the option-
  39840.           argument to the localedef -f option.
  39841.  
  39842.  
  39843.  4.34.6.2  Standard Error
  39844.  
  39845.  Used only for diagnostic messages.
  39846.  
  39847.  4.34.6.3  Output Files
  39848.  
  39849.  None.
  39850.  
  39851.  
  39852.  
  39853.  
  39854.  
  39855.                Copyright c 1991 IEEE.  All rights reserved.
  39856.       This is an unapproved IEEE Standards Draft, subject to change.
  39857.  
  39858.  
  39859.  
  39860.  
  39861.  
  39862.  574                                     4 Execution Environment Utilities
  39863.  
  39864.  
  39865.  
  39866.  
  39867.  
  39868.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  39869.  
  39870.  4.34.7  Extended Description
  39871.  
  39872.  None.
  39873.  
  39874.  
  39875.  4.34.8  Exit Status
  39876.  
  39877.  The locale utility shall exit with one of the following values:
  39878.  
  39879.      0    All the requested information was found and output successfully.
  39880.  
  39881.     >0    An error occurred.
  39882.  
  39883.  
  39884.  4.34.9  Consequences of Errors
  39885.  
  39886.  Default.
  39887.  
  39888.  BEGIN_RATIONALE
  39889.  
  39890.  
  39891.  4.34.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  39892.  
  39893.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  39894.  
  39895.  In the following examples, the assumption is that locale environment
  39896.  variables are set as follows:
  39897.  
  39898.        LANG=locale_x
  39899.        LC_COLLATE=locale_y
  39900.  
  39901.  The command:
  39902.  
  39903.        locale
  39904.  
  39905.  would result in the following output:
  39906.  
  39907.        LANG=locale_x                                                        1
  39908.        LC_CTYPE="locale_x"
  39909.        LC_COLLATE=locale_y
  39910.        LC_TIME="locale_x"
  39911.        LC_NUMERIC="locale_x"
  39912.        LC_MONETARY="locale_x"
  39913.        LC_MESSAGES="locale_x"
  39914.        LC_ALL=
  39915.  
  39916.  The order of presentation of the categories is not specified by this
  39917.  standard.
  39918.  
  39919.  
  39920.  
  39921.                Copyright c 1991 IEEE.  All rights reserved.
  39922.       This is an unapproved IEEE Standards Draft, subject to change.
  39923.  
  39924.  
  39925.  
  39926.  
  39927.  
  39928.  4.34 locale - Get locale-specific information                         575
  39929.  
  39930.  
  39931.  
  39932.  
  39933.  
  39934.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  39935.  
  39936.  The command
  39937.  
  39938.        LC_ALL=POSIX locale -ck decimal_point
  39939.  
  39940.  would produce:
  39941.  
  39942.        LC_NUMERIC
  39943.        decimal_point="."
  39944.  
  39945.  The following command shows an application of locale to determine whether
  39946.  a user supplied response is affirmative:
  39947.  
  39948.        if printf "%s\n" "$response" | grep -Eq "$(locale yesexpr)"
  39949.        then
  39950.                affirmative processing goes here
  39951.        else
  39952.                nonaffirmative processing goes here
  39953.        fi
  39954.  
  39955.  If the LANG environment variable is not set or set to an empty value, or
  39956.  one of the LC_* environment variables is set to an unrecognized value,
  39957.  the actual locales assumed (if any) are implementation defined as
  39958.  described in 2.6.
  39959.  
  39960.  Implementations are not required to write out the actual values for
  39961.  keywords in the categories LC_CTYPE and LC_COLLATE; however, they must
  39962.  write out the categories (allowing an application to determine, e.g.,
  39963.  which character classes are available).
  39964.  
  39965.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  39966.  
  39967.  This command was added in Draft 9 to resolve objections to the lack of a
  39968.  way for applications to determine what locales are available, a way to
  39969.  examine the contents of existing public locales, a way to retrieve
  39970.  specific locale items, and a way to recognize affirmative and negative
  39971.  responses in an international environment.
  39972.  
  39973.  In Draft 10 it was cut back considerably in answer to balloting
  39974.  objections about its complexity and requirement of features not useful
  39975.  for application programs.  The format for the no-arguments case was
  39976.  expanded to show the implied values of the categories as an aid to the
  39977.  novice user; the output was of little more value than that from env.
  39978.  
  39979.  Based on the questionable value in a shell script of getting an entire
  39980.  array of characters back, and the problem of returning a collation
  39981.  description that makes sense, short of a complete localedef source, the
  39982.  output from requests for categories LC_CTYPE and LC_COLLATE has been made
  39983.  implementation defined.
  39984.  
  39985.  
  39986.  
  39987.                Copyright c 1991 IEEE.  All rights reserved.
  39988.       This is an unapproved IEEE Standards Draft, subject to change.
  39989.  
  39990.  
  39991.  
  39992.  
  39993.  
  39994.  576                                     4 Execution Environment Utilities
  39995.  
  39996.  
  39997.  
  39998.  
  39999.  
  40000.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  40001.  
  40002.  The -m option has been added to allow applications to query for the
  40003.  existence of charmaps.  The output is a list of the charmaps
  40004.  (implementation-supplied and user-supplied, if any) on the system.
  40005.  
  40006.  The -c option was included for readability when more than one category is  2
  40007.  selected (e.g., via more than one keyword name or via a category name).    2
  40008.  It is valid both with and without the -k option.                           2
  40009.  
  40010.  The charmap keyword, which returns the name of the charmap (if any) that
  40011.  was used when the current locale was created, was introduced to allow
  40012.  applications needing the information to retrieve it.
  40013.  
  40014.  END_RATIONALE
  40015.  
  40016.  
  40017.  
  40018.  4.35  localedef - Define locale environment
  40019.  
  40020.  
  40021.  4.35.1  Synopsis
  40022.  
  40023.  localedef  [-c] [-f _c_h_a_r_m_a_p] [-i _s_o_u_r_c_e_f_i_l_e] _n_a_m_e
  40024.  
  40025.  
  40026.  4.35.2  Description
  40027.  
  40028.  The localedef utility shall convert source definitions for locale
  40029.  categories into a format usable by the functions and utilities whose
  40030.  operational behavior is determined by the setting of the locale
  40031.  environment variables defined in 2.5.  It is implementation defined
  40032.  whether users shall have the capability to create new locales, in
  40033.  addition to those supplied by the implementation.  If the symbolic
  40034.  constant {POSIX2_LOCALEDEF} is defined, then the system supports the
  40035.  creation of new locales.  In a system not supporting this capability, the
  40036.  localedef utility shall terminate with an exit code of 3.
  40037.  
  40038.  The utility shall read source definitions for one or more locale
  40039.  categories belonging to the same locale from the file named in the -i
  40040.  option (if specified) or from standard input.
  40041.  
  40042.  The _n_a_m_e operand identifies the target locale.  The utility shall support
  40043.  the creation of _p_u_b_l_i_c, or generally accessible locales, as well as
  40044.  _p_r_i_v_a_t_e, or restricted-access locales.  Implementations may restrict the
  40045.  capability to create or modify public locales to users with the
  40046.  appropriate privileges.
  40047.  
  40048.  Each category source definition shall be identified by the corresponding
  40049.  environment variable name and terminated by an END _c_a_t_e_g_o_r_y-_n_a_m_e
  40050.  statement.  The following categories shall be supported.  In addition,
  40051.  
  40052.  
  40053.                Copyright c 1991 IEEE.  All rights reserved.
  40054.       This is an unapproved IEEE Standards Draft, subject to change.
  40055.  
  40056.  
  40057.  
  40058.  
  40059.  
  40060.  4.35 localedef - Define locale environment                            577
  40061.  
  40062.  
  40063.  
  40064.  
  40065.  
  40066.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  40067.  
  40068.  the input may contain source for implementation-defined categories.
  40069.  
  40070.     LC_CTYPE         Defines character classification and case conversion.
  40071.  
  40072.     LC_COLLATE       Defines collation rules.
  40073.  
  40074.     LC_MONETARY      Defines the format and symbols used in formatting of
  40075.                      monetary information.
  40076.  
  40077.     LC_NUMERIC       Defines the decimal delimiter, grouping, and grouping
  40078.                      symbol for nonmonetary numeric editing.
  40079.  
  40080.     LC_TIME          Defines the format and content of date and time
  40081.                      information.
  40082.  
  40083.     LC_MESSAGES      Defines the format and values of affirmative and
  40084.                      negative responses.
  40085.  
  40086.  
  40087.  4.35.3  Options
  40088.  
  40089.  The localedef utility shall conform to the utility argument syntax
  40090.  guidelines described in 2.10.2.
  40091.  
  40092.  The following options shall be supported by the implementation:
  40093.  
  40094.     -c          Create permanent output even if warning messages have been
  40095.                 issued.
  40096.  
  40097.     -f _c_h_a_r_m_a_p
  40098.                 Specify the pathname of a file containing a mapping of
  40099.                 character symbols and collating element symbols to actual
  40100.                 character encodings.  The format of the _c_h_a_r_m_a_p is
  40101.                 described under 2.4.1.  This option shall be specified if
  40102.                 symbolic names (other than collating symbols defined in a
  40103.                 collating-symbol keyword) are used.  If the -f option is
  40104.                 not present, an implementation-defined default character
  40105.                 mapping file shall be used.                                 2
  40106.  
  40107.     -i _i_n_p_u_t_f_i_l_e The pathname of a file containing the source definitions.
  40108.                 If this option is not present, source definitions shall be
  40109.                 read from standard input.  The format of the _i_n_p_u_t_f_i_l_e is
  40110.                 described in 2.5.2.
  40111.  
  40112.  
  40113.  
  40114.  
  40115.  
  40116.  
  40117.  
  40118.  
  40119.                Copyright c 1991 IEEE.  All rights reserved.
  40120.       This is an unapproved IEEE Standards Draft, subject to change.
  40121.  
  40122.  
  40123.  
  40124.  
  40125.  
  40126.  578                                     4 Execution Environment Utilities
  40127.  
  40128.  
  40129.  
  40130.  
  40131.  
  40132.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  40133.  
  40134.  4.35.4  Operands
  40135.  
  40136.  The following operand shall be supported by the implementation:
  40137.  
  40138.     _n_a_m_e        Identifies the locale.  See 2.5 for a description of the
  40139.                 use of this name.  If the name contains one or more slash
  40140.                 characters, _n_a_m_e shall be interpreted as a pathname where
  40141.                 the created locale definition(s) shall be stored.  If _n_a_m_e
  40142.                 does not contain any slash characters, the interpretation
  40143.                 of the name is implementation defined and the locale shall
  40144.                 be public.  This capability may be restricted to users
  40145.                 with appropriate privileges.
  40146.  
  40147.  
  40148.  4.35.5  External Influences
  40149.  
  40150.  
  40151.  4.35.5.1  Standard Input
  40152.  
  40153.  Unless the -i option is specified, the standard input shall be a text
  40154.  file containing one or more locale category source definitions, as
  40155.  described in 2.5.2.  When lines are continued using the escape character   1
  40156.  mechanism, there is no limit to the length of the accumulated continued    1
  40157.  line.                                                                      1
  40158.  
  40159.  4.35.5.2  Input Files
  40160.  
  40161.  The character set mapping file specified as the _c_h_a_r_m_a_p option-argument
  40162.  is described under 2.4.1.  If a locale category source definition
  40163.  contains a copy statement, as defined in 2.5.2, and the copy statement
  40164.  names a valid, existing locale, then localedef shall behave as if the
  40165.  source definition had contained a valid category source definition for
  40166.  the named locale.
  40167.  
  40168.  
  40169.  4.35.5.3  Environment Variables
  40170.  
  40171.  The following environment variables shall affect the execution of
  40172.  localedef:
  40173.  
  40174.     LANG               This variable shall determine the locale to use for
  40175.                        the locale categories when both LC_ALL and the
  40176.                        corresponding environment variable (beginning with
  40177.                        LC_) do not specify a locale.  See 2.6.
  40178.  
  40179.     LC_ALL             This variable shall determine the locale to be used
  40180.                        to override any values for locale categories
  40181.                        specified by the settings of LANG or any
  40182.                        environment variables beginning with LC_.  and LC_*
  40183.                        variables as described in 2.6.
  40184.  
  40185.                Copyright c 1991 IEEE.  All rights reserved.
  40186.       This is an unapproved IEEE Standards Draft, subject to change.
  40187.  
  40188.  
  40189.  
  40190.  
  40191.  
  40192.  4.35 localedef - Define locale environment                            579
  40193.  
  40194.  
  40195.  
  40196.  
  40197.  
  40198.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  40199.  
  40200.     LC_COLLATE         (This variable shall have no affect on localedef;
  40201.                        the POSIX Locale shall be used for this category.)
  40202.  
  40203.     LC_CTYPE           This variable shall determine the locale for the
  40204.                        interpretation of sequences of bytes of argument
  40205.                        data as characters (e.g., single- versus multibyte
  40206.                        characters).  This variable shall have no affect on
  40207.                        the processing of localedef input data; the POSIX
  40208.                        Locale shall be used for this purpose, regardless
  40209.                        of the value of this variable.
  40210.  
  40211.     LC_MESSAGES        This variable shall determine the language in which
  40212.                        messages should be written.
  40213.  
  40214.  
  40215.  4.35.5.4  Asynchronous Events
  40216.  
  40217.  Default.
  40218.  
  40219.  
  40220.  4.35.6  External Effects
  40221.  
  40222.  4.35.6.1  Standard Output
  40223.  
  40224.  The utility shall report all categories successfully processed, in an
  40225.  unspecified format.
  40226.  
  40227.  
  40228.  4.35.6.2  Standard Error
  40229.  
  40230.  Used only for diagnostic messages.
  40231.  
  40232.  4.35.6.3  Output Files
  40233.  
  40234.  The format of the created output is unspecified.  If the _n_a_m_e operand
  40235.  does not contain a slash, the existence of an output file for the locale
  40236.  is unspecified.
  40237.  
  40238.  
  40239.  4.35.7  Extended Description
  40240.  
  40241.  None.
  40242.  
  40243.  
  40244.  
  40245.  
  40246.  
  40247.  
  40248.  
  40249.  
  40250.  
  40251.                Copyright c 1991 IEEE.  All rights reserved.
  40252.       This is an unapproved IEEE Standards Draft, subject to change.
  40253.  
  40254.  
  40255.  
  40256.  
  40257.  
  40258.  580                                     4 Execution Environment Utilities
  40259.  
  40260.  
  40261.  
  40262.  
  40263.  
  40264.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  40265.  
  40266.  4.35.8  Exit Status
  40267.  
  40268.  The localedef utility shall exit with one of the following values:
  40269.  
  40270.      0    No errors occurred and the locale(s) were successfully created.
  40271.  
  40272.      1    Warnings occurred and the locale(s) were successfully created.
  40273.  
  40274.      2    The locale specification exceeded implementation limits or the
  40275.           coded character set or sets used were not supported by the
  40276.           implementation, and no locale was created.
  40277.  
  40278.      3    The capability to create new locales is not supported by the
  40279.           implementation.
  40280.  
  40281.     >3    Warnings or errors occurred and no output was created.
  40282.  
  40283.  
  40284.  4.35.9  Consequences of Errors
  40285.  
  40286.  If an error is detected, no permanent output shall be created.
  40287.  
  40288.  If warnings occur, permanent output shall be created if the -c option was
  40289.  specified.  The following conditions shall cause warning messages to be
  40290.  issued:
  40291.  
  40292.      - If a symbolic name not found in the _c_h_a_r_m_a_p file is used for the
  40293.        descriptions of the LC_CTYPE or LC_COLLATE categories (for other
  40294.        categories, this shall be an error conditions).
  40295.  
  40296.      - If the number of operands to the order keyword exceeds the
  40297.        {COLL_WEIGHTS_MAX} limit.
  40298.  
  40299.      - If optional keywords not supported by the implementation are         1
  40300.        present in the source.                                               1
  40301.  
  40302.  Other implementation-defined conditions may also cause warnings.
  40303.  
  40304.  BEGIN_RATIONALE
  40305.  
  40306.  
  40307.  4.35.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  40308.  
  40309.  _U_s_a_g_e_,__E_x_a_m_p_l_e_s
  40310.  
  40311.  The output produced by the localedef utility is implementation defined.
  40312.  The _n_a_m_e operand is used to identify the specific locale.  (As a
  40313.  consequence, although several categories can be processed in one
  40314.  execution, only categories belonging to the same locale can be
  40315.  
  40316.  
  40317.                Copyright c 1991 IEEE.  All rights reserved.
  40318.       This is an unapproved IEEE Standards Draft, subject to change.
  40319.  
  40320.  
  40321.  
  40322.  
  40323.  
  40324.  4.35 localedef - Define locale environment                            581
  40325.  
  40326.  
  40327.  
  40328.  
  40329.  
  40330.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  40331.  
  40332.  processed.)
  40333.  
  40334.  The _c_h_a_r_m_a_p definition is optional, and is contained outside the locale
  40335.  definition.  This allows both completely ``self-defined'' source files,
  40336.  and ``generic'' sources (applicable to more than one code set).  To aid
  40337.  portability, all _c_h_a_r_m_a_p definitions shall use the same symbolic names
  40338.  for the portable character set.  As explained in 2.4.1, it is
  40339.  implementation defined whether or not users or applications can provide
  40340.  additional character set description files.  Therefore, the -f option
  40341.  might be operable only when an implementation-provided _c_h_a_r_m_a_p is named.
  40342.  
  40343.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  40344.  
  40345.  This description is based on work performed in the UniForum Technical
  40346.  Committee Subcommittee on Internationalization.
  40347.  
  40348.  The localedef utility is provided as a standard, portable interface for
  40349.  implementations that allow users to create new locales, in addition to
  40350.  implementation-supplied ones.
  40351.  
  40352.  The ability to create new locales and categories, already available on
  40353.  many commercially available implementations of POSIX compliant systems,
  40354.  provides the means by which application providers can develop portable
  40355.  applications which use standard interfaces to adjust the behavior of the
  40356.  application to language and culture differences.
  40357.  
  40358.  END_RATIONALE
  40359.  
  40360.  
  40361.  
  40362.  
  40363.  
  40364.  
  40365.  
  40366.  
  40367.  
  40368.  
  40369.  
  40370.  
  40371.  
  40372.  
  40373.  
  40374.  
  40375.  
  40376.  
  40377.  
  40378.  
  40379.  
  40380.  
  40381.  
  40382.  
  40383.                Copyright c 1991 IEEE.  All rights reserved.
  40384.       This is an unapproved IEEE Standards Draft, subject to change.
  40385.  
  40386.  
  40387.  
  40388.  
  40389.  
  40390.  582                                     4 Execution Environment Utilities
  40391.  
  40392.  
  40393.  
  40394.  
  40395.  
  40396.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  40397.  
  40398.  4.36  logger - Log messages
  40399.  
  40400.  
  40401.  4.36.1  Synopsis
  40402.  
  40403.  
  40404.  logger  _s_t_r_i_n_g ...
  40405.  
  40406.  
  40407.  4.36.2  Description
  40408.  
  40409.  The logger utility saves a message, in an unspecified manner and format,
  40410.  containing the _s_t_r_i_n_g operands provided by the user.  The messages are
  40411.  expected to be evaluated later by personnel performing system
  40412.  administration tasks.
  40413.  
  40414.  
  40415.  4.36.3  Options
  40416.  
  40417.  None.
  40418.  
  40419.  
  40420.  4.36.4  Operands
  40421.  
  40422.  The following operands shall be supported by the implementation:
  40423.  
  40424.     _s_t_r_i_n_g      One of the string arguments whose contents are
  40425.                 concatenated together, in the order specified, separated
  40426.                 by single <space>s.
  40427.  
  40428.  
  40429.  4.36.5  External Influences
  40430.  
  40431.  4.36.5.1  Standard Input
  40432.  
  40433.  None.
  40434.  
  40435.  
  40436.  4.36.5.2  Input Files
  40437.  
  40438.  None.
  40439.  
  40440.  4.36.5.3  Environment Variables
  40441.  
  40442.  The following environment variables shall affect the execution of logger:
  40443.  
  40444.     LANG               This variable shall determine the locale to use for
  40445.                        the locale categories when both LC_ALL and the
  40446.                        corresponding environment variable (beginning with
  40447.  
  40448.  
  40449.                Copyright c 1991 IEEE.  All rights reserved.
  40450.       This is an unapproved IEEE Standards Draft, subject to change.
  40451.  
  40452.  
  40453.  
  40454.  
  40455.  
  40456.  4.36 logger - Log messages                                            583
  40457.  
  40458.  
  40459.  
  40460.  
  40461.  
  40462.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  40463.  
  40464.                        LC_) do not specify a locale.  See 2.6.
  40465.  
  40466.     LC_ALL             This variable shall determine the locale to be used
  40467.                        to override any values for locale categories
  40468.                        specified by the settings of LANG or any
  40469.                        environment variables beginning with LC_.
  40470.  
  40471.     LC_CTYPE           This variable shall determine the locale for the
  40472.                        interpretation of sequences of bytes of text data
  40473.                        as characters (e.g., single- versus multibyte
  40474.                        characters in arguments).
  40475.  
  40476.     LC_MESSAGES        This variable shall determine the language in which
  40477.                        diagnostic messages should be written.
  40478.  
  40479.  
  40480.  4.36.5.4  Asynchronous Events
  40481.  
  40482.  Default.
  40483.  
  40484.  
  40485.  4.36.6  External Effects
  40486.  
  40487.  4.36.6.1  Standard Output
  40488.  
  40489.  None.
  40490.  
  40491.  
  40492.  4.36.6.2  Standard Error
  40493.  
  40494.  Used only for diagnostic messages.
  40495.  
  40496.  4.36.6.3  Output Files
  40497.  
  40498.  Unspecified.
  40499.  
  40500.  
  40501.  4.36.7  Extended Description
  40502.  
  40503.  None.
  40504.  
  40505.  
  40506.  4.36.8  Exit Status
  40507.  
  40508.  The logger utility shall exit with one of the following values:
  40509.  
  40510.      0    Successful completion.
  40511.  
  40512.  
  40513.  
  40514.  
  40515.                Copyright c 1991 IEEE.  All rights reserved.
  40516.       This is an unapproved IEEE Standards Draft, subject to change.
  40517.  
  40518.  
  40519.  
  40520.  
  40521.  
  40522.  584                                     4 Execution Environment Utilities
  40523.  
  40524.  
  40525.  
  40526.  
  40527.  
  40528.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  40529.  
  40530.     >0    An error occurred.
  40531.  
  40532.  
  40533.  4.36.9  Consequences of Errors
  40534.  
  40535.  Default.
  40536.  
  40537.  BEGIN_RATIONALE
  40538.  
  40539.  
  40540.  4.36.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  40541.  
  40542.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  40543.  
  40544.  This utility allows logging of information for later use by a system
  40545.  administrator or programmer in determining why noninteractive utilities
  40546.  have failed.  POSIX.2 makes no requirements for the locations of the
  40547.  saved message, their format, or retention period.  It also provides no
  40548.  method for a portable application to read messages, once written.  (It is
  40549.  expected that the POSIX.7 System Administration standard will have
  40550.  something to say about that.)
  40551.  
  40552.  The purpose of this utility might best be illustrated by an example.  A
  40553.  batch application, running noninteractively, tries to read a
  40554.  configuration file and fails; it may attempt to notify the system
  40555.  administrator with:
  40556.  
  40557.        logger myname: unable to read file foo. [time stamp]
  40558.  
  40559.  The text with LC_MESSAGES about diagnostic messages means diagnostics
  40560.  from logger to the user or application, not diagnostic messages that the
  40561.  user is sending to the system administrator.
  40562.  
  40563.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  40564.  
  40565.  Multiple _s_t_r_i_n_g arguments were allowed, similar to echo, for ease of use.
  40566.  
  40567.  In Draft 9, the posixlog utility was renamed logger to match its BSD
  40568.  forebear, with which it is (downward) compatible.
  40569.  
  40570.  The working group believed strongly that some method of alerting
  40571.  administrators to errors was necessary.  The obvious example is a batch
  40572.  utility, running noninteractively, that is unable to read its
  40573.  configuration files, or that is unable to create or write its results
  40574.  file.  However, the working group did not wish to define the format or
  40575.  delivery mechanisms as they have historically been (and will probably
  40576.  continue to be) very system specific, as well as involving functionality
  40577.  clearly outside of the scope of this standard.
  40578.  
  40579.  
  40580.  
  40581.                Copyright c 1991 IEEE.  All rights reserved.
  40582.       This is an unapproved IEEE Standards Draft, subject to change.
  40583.  
  40584.  
  40585.  
  40586.  
  40587.  
  40588.  4.36 logger - Log messages                                            585
  40589.  
  40590.  
  40591.  
  40592.  
  40593.  
  40594.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  40595.  
  40596.  Like the utilities mailx and lp, logger is admittedly difficult to test.
  40597.  This was not deemed sufficient justification to exclude these utilities
  40598.  from the standard.  It is also arguable that they are, in fact, testable,
  40599.  but that the tests themselves are not portable.
  40600.  
  40601.  END_RATIONALE
  40602.  
  40603.  
  40604.  
  40605.  4.37  logname - Return user's login name
  40606.  
  40607.  
  40608.  4.37.1  Synopsis
  40609.  
  40610.  logname
  40611.  
  40612.  
  40613.  4.37.2  Description
  40614.  
  40615.  The logname utility shall write the user's login name to standard output.
  40616.  The login name shall be the string that would be returned by the
  40617.  POSIX.1 {8} _g_e_t_l_o_g_i_n() function.  Under the conditions where the
  40618.  _g_e_t_l_o_g_i_n() function would fail, the logname utility shall write a
  40619.  diagnostic message to standard error and exit with a nonzero exit status.
  40620.  
  40621.  
  40622.  4.37.3  Options
  40623.  
  40624.  None.
  40625.  
  40626.  
  40627.  4.37.4  Operands
  40628.  
  40629.  None.
  40630.  
  40631.  
  40632.  4.37.5  External Influences
  40633.  
  40634.  
  40635.  4.37.5.1  Standard Input
  40636.  
  40637.  None.
  40638.  
  40639.  4.37.5.2  Input Files
  40640.  
  40641.  None.
  40642.  
  40643.  
  40644.  
  40645.  
  40646.  
  40647.                Copyright c 1991 IEEE.  All rights reserved.
  40648.       This is an unapproved IEEE Standards Draft, subject to change.
  40649.  
  40650.  
  40651.  
  40652.  
  40653.  
  40654.  586                                     4 Execution Environment Utilities
  40655.  
  40656.  
  40657.  
  40658.  
  40659.  
  40660.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  40661.  
  40662.  4.37.5.3  Environment Variables
  40663.  
  40664.  The following environment variables shall affect the execution of
  40665.  logname:
  40666.  
  40667.     LANG               This variable shall determine the locale to use for
  40668.                        the locale categories when both LC_ALL and the
  40669.                        corresponding environment variable (beginning with
  40670.                        LC_) do not specify a locale.  See 2.6.
  40671.  
  40672.     LC_ALL             This variable shall determine the locale to be used
  40673.                        to override any values for locale categories
  40674.                        specified by the settings of LANG or any
  40675.                        environment variables beginning with LC_.
  40676.  
  40677.     LC_MESSAGES        This variable shall determine the language in which
  40678.                        messages should be written.
  40679.  
  40680.  
  40681.  4.37.5.4  Asynchronous Events
  40682.  
  40683.  Default.
  40684.  
  40685.  
  40686.  4.37.6  External Effects
  40687.  
  40688.  4.37.6.1  Standard Output
  40689.  
  40690.  The logname utility output shall be a single line consisting of the
  40691.  user's login name:
  40692.  
  40693.        "%s\n", <_l_o_g_i_n _n_a_m_e>
  40694.  
  40695.  
  40696.  4.37.6.2  Standard Error
  40697.  
  40698.  Used only for diagnostic messages.
  40699.  
  40700.  4.37.6.3  Output Files
  40701.  
  40702.  None.
  40703.  
  40704.  
  40705.  4.37.7  Extended Description
  40706.  
  40707.  None.
  40708.  
  40709.  
  40710.  
  40711.  
  40712.  
  40713.                Copyright c 1991 IEEE.  All rights reserved.
  40714.       This is an unapproved IEEE Standards Draft, subject to change.
  40715.  
  40716.  
  40717.  
  40718.  
  40719.  
  40720.  4.37 logname - Return user's login name                               587
  40721.  
  40722.  
  40723.  
  40724.  
  40725.  
  40726.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  40727.  
  40728.  4.37.8  Exit Status
  40729.  
  40730.  The logname utility shall exit with one of the following values:
  40731.  
  40732.      0    Successful completion.
  40733.  
  40734.     >0    An error occurred.
  40735.  
  40736.  
  40737.  4.37.9  Consequences of Errors
  40738.  
  40739.  Default.
  40740.  
  40741.  BEGIN_RATIONALE
  40742.  
  40743.  
  40744.  4.37.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  40745.  
  40746.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  40747.  
  40748.  The logname utility explicitly ignores the LOGNAME environment variable
  40749.  because environment changes could produce erroneous results.
  40750.  
  40751.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  40752.  
  40753.  The passwd file is not listed as required, because the implementation may
  40754.  have other means of mapping login names.
  40755.  
  40756.  END_RATIONALE
  40757.  
  40758.  
  40759.  
  40760.  
  40761.  
  40762.  
  40763.  
  40764.  
  40765.  
  40766.  
  40767.  
  40768.  
  40769.  
  40770.  
  40771.  
  40772.  
  40773.  
  40774.  
  40775.  
  40776.  
  40777.  
  40778.  
  40779.                Copyright c 1991 IEEE.  All rights reserved.
  40780.       This is an unapproved IEEE Standards Draft, subject to change.
  40781.  
  40782.  
  40783.  
  40784.  
  40785.  
  40786.  588                                     4 Execution Environment Utilities
  40787.  
  40788.  
  40789.  
  40790.  
  40791.  
  40792.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  40793.  
  40794.  4.38  lp - Send files to a printer
  40795.  
  40796.  
  40797.  4.38.1  Synopsis
  40798.  
  40799.  
  40800.  lp  [-c] [-d _d_e_s_t] [-n _c_o_p_i_e_s] [_f_i_l_e ...]
  40801.  
  40802.  
  40803.  4.38.2  Description
  40804.  
  40805.  The lp utility shall copy the input files to an output device in an
  40806.  unspecified manner.  The default output destination should be to a
  40807.  hardcopy device, such as a printer or microfilm recorder, that produces
  40808.  nonvolatile, human-readable documents.  If such a device is not available
  40809.  to the application, or if the system provides no such device, the lp
  40810.  utility shall exit with a nonzero exit status.
  40811.  
  40812.  The actual writing to the output device may occur some time after the lp
  40813.  utility successfully exits.  During the portion of the writing that
  40814.  corresponds to each input file, the implementation shall guarantee
  40815.  exclusive access to the device.
  40816.  
  40817.  
  40818.  4.38.3  Options
  40819.  
  40820.  The lp utility shall conform to the utility argument syntax guidelines
  40821.  described in 2.10.2.
  40822.  
  40823.  The following options shall be supported by the implementation:
  40824.  
  40825.     -c          Exit only after further access to any of the input files
  40826.                 is no longer required.  The application can then safely
  40827.                 delete or modify the files without affecting the output
  40828.                 operation.
  40829.  
  40830.     -d _d_e_s_t     Specify a string that names the output device or
  40831.                 destination.  If -d is not specified, and neither the
  40832.                 LPDEST nor PRINTER environment variable is set, an
  40833.                 unspecified output device is used.  The -d _d_e_s_t option
  40834.                 shall take precedence over LPDEST, which in turn shall
  40835.                 take precedence over PRINTER.  Results are undefined when
  40836.                 _d_e_s_t contains a value that is not a valid device or
  40837.                 destination name.
  40838.  
  40839.     -n _c_o_p_i_e_s   Write _c_o_p_i_e_s number of copies of the files, where _c_o_p_i_e_s
  40840.                 is a positive decimal integer.  The methods for producing
  40841.                 multiple copies and for arranging the multiple copies when
  40842.                 multiple _f_i_l_e operands are used are unspecified, except
  40843.                 that each file shall be output as an integral whole, not
  40844.  
  40845.                Copyright c 1991 IEEE.  All rights reserved.
  40846.       This is an unapproved IEEE Standards Draft, subject to change.
  40847.  
  40848.  
  40849.  
  40850.  
  40851.  
  40852.  4.38 lp - Send files to a printer                                     589
  40853.  
  40854.  
  40855.  
  40856.  
  40857.  
  40858.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  40859.  
  40860.                 interleaved with portions of other files.
  40861.  
  40862.  
  40863.  4.38.4  Operands
  40864.  
  40865.  The following operands shall be supported by the implementation:
  40866.  
  40867.     _f_i_l_e        A pathname of a file to be output.  If no _f_i_l_e operands
  40868.                 are specified, or if a _f_i_l_e operand is -, the standard
  40869.                 input shall be used.  If a _f_i_l_e operand is used, but the
  40870.                 -c option is not specified, the process performing the
  40871.                 writing to the output device may have user and group
  40872.                 permissions that differ from that of the process invoking
  40873.                 lp.
  40874.  
  40875.  
  40876.  4.38.5  External Influences
  40877.  
  40878.  
  40879.  4.38.5.1  Standard Input
  40880.  
  40881.  The standard input shall be used only if no _f_i_l_e operands are specified,
  40882.  or if a _f_i_l_e operand is -.  See Input Files.
  40883.  
  40884.  4.38.5.2  Input Files
  40885.  
  40886.  The input files shall be text files.
  40887.  
  40888.  
  40889.  4.38.5.3  Environment Variables
  40890.  
  40891.  The following environment variables shall affect the execution of lp:
  40892.  
  40893.     LANG               This variable shall determine the locale to use for
  40894.                        the locale categories when both LC_ALL and the
  40895.                        corresponding environment variable (beginning with
  40896.                        LC_) do not specify a locale.  See 2.6.
  40897.  
  40898.     LC_ALL             This variable shall determine the locale to be used
  40899.                        to override any values for locale categories
  40900.                        specified by the settings of LANG or any
  40901.                        environment variables beginning with LC_.
  40902.  
  40903.     LC_CTYPE           This variable shall determine the locale for the
  40904.                        interpretation of sequences of bytes of text data
  40905.                        as characters (e.g., single- versus multibyte
  40906.                        characters in arguments and input files).
  40907.  
  40908.  
  40909.  
  40910.  
  40911.                Copyright c 1991 IEEE.  All rights reserved.
  40912.       This is an unapproved IEEE Standards Draft, subject to change.
  40913.  
  40914.  
  40915.  
  40916.  
  40917.  
  40918.  590                                     4 Execution Environment Utilities
  40919.  
  40920.  
  40921.  
  40922.  
  40923.  
  40924.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  40925.  
  40926.     LC_MESSAGES        This variable shall determine the language in which
  40927.                        messages should be written.
  40928.  
  40929.     LPDEST             This variable shall be interpreted as a string that
  40930.                        names the output device or destination.  If the
  40931.                        LPDEST environment variable is not set, the PRINTER
  40932.                        environment variable shall be used.  The -d _d_e_s_t
  40933.                        option shall take precedence over LPDEST.  Results
  40934.                        are undefined when -d is not specified and LPDEST
  40935.                        contains a value that is not a valid device or
  40936.                        destination name.
  40937.  
  40938.     PRINTER            This variable shall be interpreted as a string that
  40939.                        names the output device or destination.  If the
  40940.                        LPDEST and PRINTER environment variables are not
  40941.                        set, an unspecified output device is used.  The
  40942.                        -d _d_e_s_t option and the LPDEST environment variable
  40943.                        shall take precedence over PRINTER.  Results are
  40944.                        undefined when -d is not specified, LPDEST is
  40945.                        unset, and PRINTER contains a value that is not a
  40946.                        valid device or destination name.
  40947.  
  40948.  
  40949.  4.38.5.4  Asynchronous Events
  40950.  
  40951.  Default.
  40952.  
  40953.  
  40954.  4.38.6  External Effects
  40955.  
  40956.  4.38.6.1  Standard Output
  40957.  
  40958.  A message concerning the identification or status of the print request     2
  40959.  may be written, in an unspecified format.                                  2
  40960.  
  40961.  
  40962.  4.38.6.2  Standard Error
  40963.  
  40964.  Used only for diagnostic messages.
  40965.  
  40966.  4.38.6.3  Output Files
  40967.  
  40968.  None.
  40969.  
  40970.  
  40971.  
  40972.  
  40973.  
  40974.  
  40975.  
  40976.  
  40977.                Copyright c 1991 IEEE.  All rights reserved.
  40978.       This is an unapproved IEEE Standards Draft, subject to change.
  40979.  
  40980.  
  40981.  
  40982.  
  40983.  
  40984.  4.38 lp - Send files to a printer                                     591
  40985.  
  40986.  
  40987.  
  40988.  
  40989.  
  40990.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  40991.  
  40992.  4.38.7  Extended Description
  40993.  
  40994.  None.
  40995.  
  40996.  
  40997.  4.38.8  Exit Status
  40998.  
  40999.  The lp utility shall exit with one of the following values:
  41000.  
  41001.      0    All input files were processed successfully.
  41002.  
  41003.     >0    No output device was available, or an error occurred.
  41004.  
  41005.  
  41006.  4.38.9  Consequences of Errors
  41007.  
  41008.  Default.
  41009.  
  41010.  BEGIN_RATIONALE
  41011.  
  41012.  
  41013.  4.38.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  41014.  
  41015.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  41016.  
  41017.  Since the default destination, device type, queueing mechanisms, and
  41018.  acceptable forms of input are all unspecified, usage guidelines for what
  41019.  a portable application can do are as follows:
  41020.  
  41021.      (1)  Use the command in a pipeline, or with -c, so that there are no
  41022.           permission problems and the files can be safely deleted or
  41023.           modified.
  41024.  
  41025.      (2)  Limit output to text files of reasonable line lengths and
  41026.           printable characters and include no device-specific formatting
  41027.           information, such as a page description language.  The meaning
  41028.           of ``reasonable'' in this context can only be answered as a
  41029.           quality of implementation issue, but should be apparent from
  41030.           historical usage patterns in the industry and the locale.  The
  41031.           pr and fold utilities can be used to achieve reasonable
  41032.           formatting for the implementation's default page size.
  41033.  
  41034.  Alternatively, the application can arrange its installation in such a way
  41035.  that requires the system administrator or operator to provide the
  41036.  appropriate information on lp options and environment variable values.
  41037.  
  41038.  At a minimum, having this utility in the standard tells the industry that
  41039.  portable applications require a means to print output and provides at
  41040.  least a command name and LPDEST routing mechanism that can be used for
  41041.  
  41042.  
  41043.                Copyright c 1991 IEEE.  All rights reserved.
  41044.       This is an unapproved IEEE Standards Draft, subject to change.
  41045.  
  41046.  
  41047.  
  41048.  
  41049.  
  41050.  592                                     4 Execution Environment Utilities
  41051.  
  41052.  
  41053.  
  41054.  
  41055.  
  41056.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  41057.  
  41058.  discussions between vendors, application writers, and users.  The use of
  41059.  ``should'' in the Description clearly shows the working group's intent,
  41060.  even if it cannot mandate that all systems (such as laptops) have
  41061.  printers.
  41062.  
  41063.  Examples:
  41064.  
  41065.  To print file _f_i_l_e:
  41066.  
  41067.        lp -c file
  41068.  
  41069.  To print multiple files with headers:
  41070.  
  41071.        pr file1 file2 | lp
  41072.  
  41073.  On most existing implementations of lp, an option is provided to pass
  41074.  printer specific options to the daemon handling the printer.  It is not
  41075.  specified here because the printer-specific options are widespread and in
  41076.  conflict, the lp specified here is not required to even have a queueing
  41077.  mechanism, and the choice of options varies widely from printer to
  41078.  printer.  Nonetheless, implementors are encouraged to use this mechanism
  41079.  where appropriate:
  41080.  
  41081.     -o _o_p_t_i_o_n   Specifies an implementation-defined option that controls
  41082.                 the specific operation of the printer.  The following
  41083.                 _o_p_t_i_o_ns could be used for the meanings below if the
  41084.                 hardware is capable of supporting the option.
  41085.  
  41086.                       _oooo_pppp_tttt_iiii_oooo_nnnn                 Meaning
  41087.                       ______   ____________________________________
  41088.                        lp2     two logical pages per physical page
  41089.                        lp4     four logical pages per physical page
  41090.                         d      double sided
  41091.  
  41092.  POSIX.2 does not specify what the ownership of the process performing the  1
  41093.  writing to the output device may be.  If -c is not used, it is             1
  41094.  unspecified whether the process performing the writing to the output       1
  41095.  device will have permission to read _f_i_l_e if there are any restrictions in  1
  41096.  place on who may read _f_i_l_e until after it is printed.  Also, if -c is not  1
  41097.  used, the results of deleting _f_i_l_e before it is printed are unspecified.   1
  41098.  
  41099.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  41100.  
  41101.  The lp utility was designed to be a basic version of a utility that is
  41102.  already available in many historical implementations.  The working group
  41103.  felt that it should be implementable simply as:
  41104.  
  41105.        cat "$@" > /dev/lp
  41106.  
  41107.  after appropriate processing of options, if that is how the
  41108.  
  41109.                Copyright c 1991 IEEE.  All rights reserved.
  41110.       This is an unapproved IEEE Standards Draft, subject to change.
  41111.  
  41112.  
  41113.  
  41114.  
  41115.  
  41116.  4.38 lp - Send files to a printer                                     593
  41117.  
  41118.  
  41119.  
  41120.  
  41121.  
  41122.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  41123.  
  41124.  implementation chose to do it and if exclusive access could be granted
  41125.  (so that two users did not write to the device simultaneously).  Although
  41126.  in the future the working group may add other options to this utility, it
  41127.  should always be able to execute with no options or operands and send the
  41128.  standard input to an unspecified output device.
  41129.  
  41130.  The standard makes no representations concerning the format of the
  41131.  printed output, except that it must be ``human-readable'' and
  41132.  ``nonvolatile.''  Thus, writing by default to a disk or tape drive or a
  41133.  display terminal would not qualify.  (Such destinations are not
  41134.  prohibited when -d _d_e_s_t, LPDEST, or PRINTER are used, however.)
  41135.  
  41136.  A portable application will use one of the _f_i_l_e operands only with the -c
  41137.  option or if the file is publicly readable and guaranteed to be available
  41138.  at the time of printing.  This is because the standard gives the
  41139.  implementation the freedom to queue up the request for printing at some
  41140.  later time by a different process that might not be able to access the
  41141.  file.
  41142.  
  41143.  The standard is worded such that a ``print job'' consisting of multiple
  41144.  input files, possibly in multiple copies, is guaranteed to print so that
  41145.  any one file is not jumbled up with another, but there is no statement
  41146.  that all the files or copies have to print out together.
  41147.  
  41148.  The -c option may imply a spooling operation, but this is not required.
  41149.  The utility can be implemented to simply wait until the printer is ready
  41150.  and then wait until it's finished.  Because of that, there is no attempt
  41151.  to define a queueing mechanism (priorities, classes of output, etc.).
  41152.  
  41153.  The -n and -d options were added in response to balloting objections that
  41154.  too little historical value was being provided.
  41155.  
  41156.  Although the historical System V lp and BSD lpr utilities have provided
  41157.  similar functionality, they used different names for the environment
  41158.  variable specifying the destination printer.  Since the name of the
  41159.  utility here is lp, LPDEST (used by the System V lp utility) was given
  41160.  precedence over PRINTER (used by the BSD lpr utility).  Since
  41161.  environments of users frequently contain one or the other environment
  41162.  variable, the lp utility is required to recognize both.  If this was not
  41163.  done, many applications would send output to unexpected output devices
  41164.  when users moved from system to system.
  41165.  
  41166.  Some have commented that lp has far too little functionality to make it
  41167.  worthwhile.  Requests have proposed additional options or operands or
  41168.  both that added functionality.  The requests included:
  41169.  
  41170.      - wording _r_e_q_u_i_r_i_n_g the output to be ``hardcopy''
  41171.  
  41172.  
  41173.  
  41174.  
  41175.                Copyright c 1991 IEEE.  All rights reserved.
  41176.       This is an unapproved IEEE Standards Draft, subject to change.
  41177.  
  41178.  
  41179.  
  41180.  
  41181.  
  41182.  594                                     4 Execution Environment Utilities
  41183.  
  41184.  
  41185.  
  41186.  
  41187.  
  41188.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  41189.  
  41190.      - a requirement for multiple printers
  41191.  
  41192.      - options for PostScript, dimpress, hp, and lineprint formats
  41193.  
  41194.  Given that a POSIX.2 compliant system is not required to even have a
  41195.  printer, placing further restrictions upon the behavior of the printer is
  41196.  not useful.  Since hardcopy format is so application dependent, it is
  41197.  difficult, if not impossible, to select a reasonable subset of
  41198.  functionality that should be required on all POSIX.2 compliant systems.
  41199.  
  41200.  The term ``unspecified'' is used in this clause in lieu of
  41201.  ``implementation defined'' as most known implementations would not be
  41202.  able to say anything fully useful in their conformance documents:  the
  41203.  existence and usage of printers is very dependent on how the system
  41204.  administrator configures each individual system.
  41205.  
  41206.  END_RATIONALE
  41207.  
  41208.  
  41209.  
  41210.  4.39  ls - List directory contents
  41211.  
  41212.  
  41213.  4.39.1  Synopsis
  41214.  
  41215.  ls  [-CFRacdilqrtu1] [_f_i_l_e ...]
  41216.  
  41217.  
  41218.  4.39.2  Description
  41219.  
  41220.  For each operand that names a file of a type other than directory, ls
  41221.  shall write the name of the file as well as any requested, associated
  41222.  information.  For each operand that names a file of type directory, ls
  41223.  shall write the names of files contained within that directory, as well
  41224.  as any requested, associated information.
  41225.  
  41226.  If no operands are specified, the contents of the current directory shall
  41227.  be written.  If more than one operand is specified, nondirectory operands
  41228.  shall be written first; directory and nondirectory operands shall be
  41229.  sorted separately according to the collating sequence in the current
  41230.  locale.
  41231.  
  41232.  
  41233.  4.39.3  Options
  41234.  
  41235.  The ls utility shall conform to the utility argument syntax guidelines
  41236.  described in 2.10.2.
  41237.  
  41238.  
  41239.  
  41240.  
  41241.                Copyright c 1991 IEEE.  All rights reserved.
  41242.       This is an unapproved IEEE Standards Draft, subject to change.
  41243.  
  41244.  
  41245.  
  41246.  
  41247.  
  41248.  4.39 ls - List directory contents                                     595
  41249.  
  41250.  
  41251.  
  41252.  
  41253.  
  41254.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  41255.  
  41256.  The following options shall be supported by the implementation:
  41257.  
  41258.     -C          Write multi-text-column output with entries sorted down
  41259.                 the columns, according to the collating sequence.  The
  41260.                 number of text columns and the column separator characters
  41261.                 are unspecified, but should be adapted to the nature of
  41262.                 the output device.
  41263.  
  41264.     -F          Write a slash (/) immediately after each pathname that is
  41265.                 a directory, an asterisk (*) after each that is
  41266.                 executable, and a vertical bar (|) after each that is a
  41267.                 FIFO.
  41268.  
  41269.     -R          Recursively list subdirectories encountered.
  41270.  
  41271.     -a          Write out all directory entries, including those whose
  41272.                 names begin with a period (.).  Entries beginning with a
  41273.                 period (.) shall not be written out unless explicitly
  41274.                 referenced, the -a option is supplied, or an
  41275.                 implementation-defined condition causes them to be
  41276.                 written.
  41277.  
  41278.     -c          Use time of last modification of the file status
  41279.                 information (see POSIX.1 {8} 5.6.1.3) instead of last
  41280.                 modification of the file itself for sorting (-t) or
  41281.                 writing (-l).
  41282.  
  41283.     -d          Do not treat directories differently than other types of    2
  41284.                 files.  The use of -d with -R produces unspecified          2
  41285.                 results.                                                    2
  41286.  
  41287.     -i          For each file, write the file's file serial number (see
  41288.                 POSIX.1 {8} 5.6.2).
  41289.  
  41290.     -l          (The letter ell.)  Write out in long format (see
  41291.                 4.39.6.1).  When -l (ell) is specified, -1 (one) shall be   2
  41292.                 assumed.                                                    2
  41293.  
  41294.     -q          Force each instance of nonprintable filename characters     2
  41295.                 and <tab>s to be written as the question-mark (?)           2
  41296.                 character.  Implementations may provide this option by
  41297.                 default if the output is to a terminal device.
  41298.  
  41299.     -r          Reverse the order of the sort to get reverse collating
  41300.                 sequence or oldest first.
  41301.  
  41302.     -t          Sort by time modified (most recently modified first)
  41303.                 before sorting the operands by the collating sequence.
  41304.  
  41305.  
  41306.  
  41307.                Copyright c 1991 IEEE.  All rights reserved.
  41308.       This is an unapproved IEEE Standards Draft, subject to change.
  41309.  
  41310.  
  41311.  
  41312.  
  41313.  
  41314.  596                                     4 Execution Environment Utilities
  41315.  
  41316.  
  41317.  
  41318.  
  41319.  
  41320.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  41321.  
  41322.     -u          Use time of last access (see POSIX.1 {8} 5.6.1.3) instead
  41323.                 of last modification of the file for sorting (-t) or
  41324.                 writing (-l).
  41325.  
  41326.     -1          (The numeric digit one.)  Force output to be one entry per
  41327.                 line.
  41328.  
  41329.  Specifying more than one of the options in the following mutually          2
  41330.  exclusive pairs shall not be considered an error:  -C and -l (ell), -C     2
  41331.  and -1 (one), -c and -u.  The last option specified in each pair shall     2
  41332.  determine the output format.                                               2
  41333.  
  41334.  
  41335.  4.39.4  Operands
  41336.  
  41337.  The following operands shall be supported by the implementation:
  41338.  
  41339.     _f_i_l_e        A pathname of a file to be written.  If the file specified
  41340.                 is not found, a diagnostic message shall be output on
  41341.                 standard error.
  41342.  
  41343.  
  41344.  4.39.5  External Influences
  41345.  
  41346.  
  41347.  4.39.5.1  Standard Input
  41348.  
  41349.  None.
  41350.  
  41351.  4.39.5.2  Input Files
  41352.  
  41353.  None.
  41354.  
  41355.  
  41356.  4.39.5.3  Environment Variables
  41357.  
  41358.  The following environment variables shall affect the execution of ls:
  41359.  
  41360.     COLUMNS            This variable shall determine the user's preferred
  41361.                        column position width for writing multiple-text-
  41362.                        column output.  If this variable contains a string
  41363.                        representing a decimal integer, the ls utility
  41364.                        shall calculate how many pathname text columns to
  41365.                        write (see -C) based on the width provided.  If
  41366.                        COLUMNS is not set or invalid, an implementation-
  41367.                        defined number of column positions shall be
  41368.                        assumed, based on the implementation's knowledge of
  41369.                        the output device.  The column width chosen to
  41370.                        write the names of files in any given directory
  41371.                        shall be constant.  File names shall not be
  41372.  
  41373.                Copyright c 1991 IEEE.  All rights reserved.
  41374.       This is an unapproved IEEE Standards Draft, subject to change.
  41375.  
  41376.  
  41377.  
  41378.  
  41379.  
  41380.  4.39 ls - List directory contents                                     597
  41381.  
  41382.  
  41383.  
  41384.  
  41385.  
  41386.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  41387.  
  41388.                        truncated to fit into the multiple-text-column
  41389.                        output.
  41390.  
  41391.     LANG               This variable shall determine the locale to use for
  41392.                        the locale categories when both LC_ALL and the
  41393.                        corresponding environment variable (beginning with
  41394.                        LC_) do not specify a locale.  See 2.6.
  41395.  
  41396.     LC_ALL             This variable shall determine the locale to be used
  41397.                        to override any values for locale categories
  41398.                        specified by the settings of LANG or any
  41399.                        environment variables beginning with LC_.
  41400.  
  41401.     LC_COLLATE         This variable shall determine the locale for
  41402.                        character collation information in determining the
  41403.                        pathname collation sequence.
  41404.  
  41405.     LC_CTYPE           This variable shall determine the locale for the
  41406.                        interpretation of sequences of bytes of text data
  41407.                        as characters (e.g., single- versus multibyte
  41408.                        characters in arguments) and which characters are
  41409.                        defined as printable (character class print).
  41410.  
  41411.     LC_MESSAGES        This variable shall determine the language in which
  41412.                        messages should be written.
  41413.  
  41414.     LC_TIME            This variable shall determine the the format and
  41415.                        contents for date and time strings written by ls.
  41416.  
  41417.     TZ                 This variable shall determine the time zone for
  41418.                        date and time strings written by ls.
  41419.  
  41420.  
  41421.  4.39.5.4  Asynchronous Events
  41422.  
  41423.  Default.
  41424.  
  41425.  
  41426.  4.39.6  External Effects
  41427.  
  41428.  4.39.6.1  Standard Output
  41429.  
  41430.  The default format shall be to list one entry per line to standard
  41431.  output; the exceptions are to terminals or when the -C option is
  41432.  specified.  If the output is to a terminal, the format is implementation
  41433.  defined.
  41434.  
  41435.                                                                             2
  41436.  
  41437.  
  41438.  
  41439.                Copyright c 1991 IEEE.  All rights reserved.
  41440.       This is an unapproved IEEE Standards Draft, subject to change.
  41441.  
  41442.  
  41443.  
  41444.  
  41445.  
  41446.  598                                     4 Execution Environment Utilities
  41447.  
  41448.  
  41449.  
  41450.  
  41451.  
  41452.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  41453.  
  41454.  If the -i option is specified, the file's file serial number (see
  41455.  POSIX.1 {8} 5.6.1) shall be written in the following format before any     2
  41456.  other output for the corresponding entry:                                  2
  41457.  
  41458.        "%u ", <_f_i_l_e _s_e_r_i_a_l _n_u_m_b_e_r>                                          2
  41459.  
  41460.  If the -l option is specified, the following information shall be
  41461.  written:
  41462.  
  41463.        "%s %u %s %s %u %s %s\n", <_f_i_l_e _m_o_d_e>, <_n_u_m_b_e_r _o_f _l_i_n_k_s>,      1
  41464.        <_o_w_n_e_r _n_a_m_e>, <_g_r_o_u_p _n_a_m_e>, <_n_u_m_b_e_r _o_f _b_y_t_e_s _i_n _t_h_e _f_i_l_e>,
  41465.        <_d_a_t_e _a_n_d _t_i_m_e>, <_p_a_t_h_n_a_m_e>
  41466.  
  41467.  If <_o_w_n_e_r _n_a_m_e> or <_g_r_o_u_p _n_a_m_e> cannot be determined, they shall be
  41468.  replaced with their associated numeric values using the format "%u".
  41469.  
  41470.  The <_d_a_t_e _a_n_d _t_i_m_e>, field shall contain the appropriate date and time
  41471.  stamp of when the file was last modified.  In the POSIX Locale, the field
  41472.  shall be the equivalent of the output of the following date command (see
  41473.  4.15):
  41474.  
  41475.        date "+%b %e %H:%M"
  41476.  
  41477.  if the file has been modified in the last six months, or:
  41478.  
  41479.        date "+%b %e  %Y"
  41480.  
  41481.  (where two <space> characters are used between %e and %Y) if the file has
  41482.  not been modified in the last six months or if the modification date is
  41483.  in the future, except that, in both cases, the final <newline> produced
  41484.  by date shall not be included and the output shall be as if the date
  41485.  command were executed at the time of the last modification date of the
  41486.  file rather than the current time.  When the LC_TIME locale category is
  41487.  not set to the POSIX Locale, a different format and order of presentation
  41488.  of this field may be used.
  41489.  
  41490.  If the file is a character special or block special file, the size of the
  41491.  file may be replaced with implementation-defined information associated
  41492.  with the device in question.
  41493.  
  41494.  If the pathname was specified as a _f_i_l_e operand, it shall be written as
  41495.  specified.
  41496.  
  41497.  The file mode written under the -l option shall consist of the following
  41498.  format:
  41499.  
  41500.  
  41501.  
  41502.  
  41503.  
  41504.  
  41505.                Copyright c 1991 IEEE.  All rights reserved.
  41506.       This is an unapproved IEEE Standards Draft, subject to change.
  41507.  
  41508.  
  41509.  
  41510.  
  41511.  
  41512.  4.39 ls - List directory contents                                     599
  41513.  
  41514.  
  41515.  
  41516.  
  41517.  
  41518.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  41519.  
  41520.        "%c%s%s%s%c", <_e_n_t_r_y _t_y_p_e>, <_o_w_n_e_r _p_e_r_m_i_s_s_i_o_n_s>,
  41521.        <_g_r_o_u_p _p_e_r_m_i_s_s_i_o_n_s>, <_o_t_h_e_r _p_e_r_m_i_s_s_i_o_n_s>,
  41522.        <_o_p_t_i_o_n_a_l _a_l_t_e_r_n_a_t_e _a_c_c_e_s_s _m_e_t_h_o_d _f_l_a_g>
  41523.  
  41524.  The <_o_p_t_i_o_n_a_l _a_l_t_e_r_n_a_t_e _a_c_c_e_s_s _m_e_t_h_o_d _f_l_a_g> shall be a single <space> if
  41525.  there is no alternate or additional access control method associated with
  41526.  the file; otherwise, a printable character shall be used.
  41527.  
  41528.  The <_e_n_t_r_y _t_y_p_e> character shall describe the type of file, as follows:
  41529.  
  41530.                         d   Directory
  41531.                         b   Block special file
  41532.                         c   Character special file
  41533.                         p   FIFO
  41534.                         -   Regular file
  41535.  
  41536.  Implementations may add other characters to this list to represent other,
  41537.  implementation-defined, file types.
  41538.  
  41539.  The next three fields shall be three characters each:
  41540.  
  41541.     <_o_w_n_e_r _p_e_r_m_i_s_s_i_o_n_s>    Permissions for the file owner class (see
  41542.                            2.9.1.3).
  41543.  
  41544.     <_g_r_o_u_p _p_e_r_m_i_s_s_i_o_n_s>    Permissions for the file group class.
  41545.  
  41546.     <_o_t_h_e_r _p_e_r_m_i_s_s_i_o_n_s>    Permissions for the file other class.
  41547.  
  41548.  Each field shall have three character positions:
  41549.  
  41550.      (1)  If r, the file is readable; if -, it is not readable.
  41551.  
  41552.      (2)  If w, the file is writable; if -, it is not writable.
  41553.  
  41554.      (3)  The first of the following that applies:
  41555.  
  41556.              S     If in <_o_w_n_e_r _p_e_r_m_i_s_s_i_o_n_s>, the file is not executable
  41557.                    and set-user-ID mode is set.  If in <_g_r_o_u_p
  41558.                    _p_e_r_m_i_s_s_i_o_n_s>, the file is not executable and set-
  41559.                    group-ID mode is set.
  41560.  
  41561.              s     If in <_o_w_n_e_r _p_e_r_m_i_s_s_i_o_n_s>, the file is executable and
  41562.                    set-user-ID mode is set.  If in <_g_r_o_u_p _p_e_r_m_i_s_s_i_o_n_s>,
  41563.                    the file is executable and set-group-ID mode is set.
  41564.  
  41565.              x     The file is executable or the directory is searchable.
  41566.  
  41567.              -     None of the attributes of S, s, or x applies.
  41568.  
  41569.  
  41570.  
  41571.                Copyright c 1991 IEEE.  All rights reserved.
  41572.       This is an unapproved IEEE Standards Draft, subject to change.
  41573.  
  41574.  
  41575.  
  41576.  
  41577.  
  41578.  600                                     4 Execution Environment Utilities
  41579.  
  41580.  
  41581.  
  41582.  
  41583.  
  41584.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  41585.  
  41586.           Implementations may add other characters to this list for the
  41587.           third character position.  Such additions shall, however, be
  41588.           written in lowercase if the file is executable or searchable,
  41589.           and in uppercase if it is not.
  41590.  
  41591.  If the -l option is specified, each list of files within the directory
  41592.  shall be preceded by a status line indicating the number of file system
  41593.  blocks occupied by files in the directory in 512-byte units, rounded up
  41594.  to the next integral number of units, if necessary.  In the POSIX Locale,
  41595.  the format shall be:
  41596.  
  41597.        "total %u\n", <_n_u_m_b_e_r _o_f _u_n_i_t_s _i_n _t_h_e _d_i_r_e_c_t_o_r_y>
  41598.  
  41599.  If more than one directory, or a combination of nondirectory files and
  41600.  directories are written, either as a result of specifying multiple
  41601.  operands, or the -R option, each list of files within a directory shall
  41602.  be preceded by:
  41603.  
  41604.        "\n%s:\n", <_d_i_r_e_c_t_o_r_y _n_a_m_e>
  41605.  
  41606.  If this string is the first thing to be written, the first <newline>
  41607.  character shall not be written.  This output shall precede the number of
  41608.  units in the directory.
  41609.  
  41610.  
  41611.  4.39.6.2  Standard Error
  41612.  
  41613.  Used only for diagnostic messages.
  41614.  
  41615.  4.39.6.3  Output Files
  41616.  
  41617.  None.
  41618.  
  41619.  
  41620.  4.39.7  Extended Description
  41621.  
  41622.  None.
  41623.  
  41624.  
  41625.  4.39.8  Exit Status
  41626.  
  41627.  The ls utility shall exit with one of the following values:
  41628.  
  41629.      0    All files were written successfully.
  41630.  
  41631.     >0    An error occurred.
  41632.  
  41633.  
  41634.  
  41635.  
  41636.  
  41637.                Copyright c 1991 IEEE.  All rights reserved.
  41638.       This is an unapproved IEEE Standards Draft, subject to change.
  41639.  
  41640.  
  41641.  
  41642.  
  41643.  
  41644.  4.39 ls - List directory contents                                     601
  41645.  
  41646.  
  41647.  
  41648.  
  41649.  
  41650.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  41651.  
  41652.  4.39.9  Consequences of Errors
  41653.  
  41654.  Default.
  41655.  
  41656.  BEGIN_RATIONALE
  41657.  
  41658.  
  41659.  4.39.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  41660.  
  41661.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  41662.  
  41663.  An example of a small directory tree being fully listed with ls -laRF a
  41664.  in the POSIX Locale:
  41665.  
  41666.        total 11
  41667.        drwxr-xr-x   3 hlj      prog          64 Jul  4 12:07 ./
  41668.        drwxrwxrwx   4 hlj      prog        3264 Jul  4 12:09 ../
  41669.        drwxr-xr-x   2 hlj      prog          48 Jul  4 12:07 b/
  41670.        -rwxr--r--   1 hlj      prog         572 Jul  4 12:07 foo*
  41671.  
  41672.        a/b:
  41673.        total 4
  41674.        drwxr-xr-x   2 hlj      prog          48 Jul  4 12:07 ./
  41675.        drwxr-xr-x   3 hlj      prog          64 Jul  4 12:07 ../
  41676.        -rw-r--r--   1 hlj      prog         700 Jul  4 12:07 bar
  41677.  
  41678.  Many implementations use the equals-sign (=) and the at-sign (@) to
  41679.  denote sockets bound to the file system and symbolic links, respectively,
  41680.  for the -F option.  Similarly, many historical implementations use the
  41681.  ``s'' character and the ``l'' character to denote sockets and symbolic
  41682.  links, respectively, as the entry type characters for the -l option.
  41683.  These characters should not be used to signify any other types of files
  41684.  in new implementations.
  41685.  
  41686.  It is difficult for an application to use every part of the file modes
  41687.  field of ls -l in a portable manner.  Certain file types and executable
  41688.  bits are not guaranteed to be exactly as shown, as implementations may
  41689.  have extensions.  Applications can use this field to pass directly to a
  41690.  user printout or prompt, but actions based on its contents should
  41691.  generally be deferred, instead, to the test utility (see 4.62).
  41692.  
  41693.  The output of ls (with the -l option) contains information that logically
  41694.  could be used by utilities such as chmod and touch to restore files to a
  41695.  known state.  However, this information is presented in a format that
  41696.  cannot be used directly by those utilities or be easily translated into a
  41697.  format that can be used.  In POSIX.2, a character was added to the end of
  41698.  the permissions string so that applications will at least have an
  41699.  indication that they may be working in an area they do not understand
  41700.  instead of assuming that they can translate the permissions string into
  41701.  
  41702.  
  41703.                Copyright c 1991 IEEE.  All rights reserved.
  41704.       This is an unapproved IEEE Standards Draft, subject to change.
  41705.  
  41706.  
  41707.  
  41708.  
  41709.  
  41710.  602                                     4 Execution Environment Utilities
  41711.  
  41712.  
  41713.  
  41714.  
  41715.  
  41716.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  41717.  
  41718.  something that can be used.  POSIX.6 may define one or more specific
  41719.  characters to be used based on different standard additional or
  41720.  alternative access control mechanisms.
  41721.  
  41722.  Some historical implementations of the ls utility show all entries in a
  41723.  directory except dot and dot-dot when super-user invokes ls without
  41724.  specifying the -a option.  When ``normal'' users invoke ls without
  41725.  specifying -a, they should not see information about any files with names
  41726.  beginning with period unless they were named as file operands.
  41727.  
  41728.  As with many of the utilities that deal with file names, the output of ls  1
  41729.  for multiple files or in one of the long listing formats must be used      1
  41730.  carefully on systems where file names can contain embedded white space.    1
  41731.  It is recommended that systems and system administrators institute         1
  41732.  policies and user training to limit the use of such file names.            1
  41733.  
  41734.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  41735.  
  41736.  Implementations are expected to traverse arbitrary depths when processing
  41737.  the -R option.  The only limitation on depth should be based on running
  41738.  out of physical storage for keeping track of untraversed directories.
  41739.  
  41740.  The -1 (one) option is currently found in BSD and BSD-derived
  41741.  implementations only.  It was required in the standard so that portable
  41742.  applications might ensure that output is one entry per line, even if the
  41743.  output is to a terminal.  Recent changes to the 2.10.2 allow numeric
  41744.  options.
  41745.  
  41746.  Generally, the standard is mute about what happens when options are given
  41747.  multiple times.  In the case of -C, -l, and -1, however, it does specify
  41748.  the results of these overlapping options.  Since ls is one of the most
  41749.  aliased commands, it is important that the implementation do the correct
  41750.  thing.  For example, if the alias were
  41751.  
  41752.        alias ls="ls -C"
  41753.  
  41754.  and the user typed ``ls -1'', single text column output should result,
  41755.  not an error.  (The working group is aware that aliases are not included
  41756.  in the standard; this is just an example.)
  41757.  
  41758.  The _S_V_I_D defines a -x option for multi-text-column output sorted
  41759.  horizontally.  The working group felt that -x provided only limited
  41760.  increased functionality over the -C option.  The _S_V_I_D also provides a -m
  41761.  option for a comma separated list of files.  It was not provided because
  41762.  similar functionality (easier to parse for scripts) can be provided by
  41763.  the echo and printf utilities.  Nonetheless, implementations considering
  41764.  adding new options to ls should look at historical BSD and System V
  41765.  versions of ls to avoid naming conflicts.
  41766.  
  41767.  
  41768.  
  41769.                Copyright c 1991 IEEE.  All rights reserved.
  41770.       This is an unapproved IEEE Standards Draft, subject to change.
  41771.  
  41772.  
  41773.  
  41774.  
  41775.  
  41776.  4.39 ls - List directory contents                                     603
  41777.  
  41778.  
  41779.  
  41780.  
  41781.  
  41782.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  41783.  
  41784.  The BSD ls provides a -A option (like -a, but dot and dot-dot are not
  41785.  written out).  The small difference from -a did not seem important enough
  41786.  to require both.
  41787.  
  41788.  Implementations are allowed to make -q the default for terminals to
  41789.  prevent Trojan Horse attacks on terminals with special escape sequences.
  41790.  This is not required because:
  41791.  
  41792.      - Some control characters may be useful on some terminals; for
  41793.        example, a system might write them as \001 or ^A,
  41794.  
  41795.      - Special behavior for terminals is not relevant to application
  41796.        portability.
  41797.  
  41798.  The -s option provided by existing implementations is not required by
  41799.  this standard.  The number of disk blocks occupied by the file that it
  41800.  reports varies depending on underlying file system type, block size units
  41801.  reported, and the method of calculating the number of blocks.  On some
  41802.  file system types, the number is the actual number of blocks occupied by
  41803.  the file (counting indirect blocks and ignoring holes in the file); on
  41804.  others it is calculated based on the file size (usually making an
  41805.  allowance for indirect blocks, but ignoring holes).  The former is
  41806.  probably more useful, but depends on information not required by
  41807.  POSIX.1 {8} and not readily accessible on some file system types.
  41808.  Therefore, applications cannot depend on -s to provide any portable
  41809.  information.  Implementations are urged to continue to provide this
  41810.  option, but applications should use the file size reported by the -l
  41811.  option in any calculations about the space needed to store a file.
  41812.  
  41813.  An earlier draft specified that the optional alternate access method flag
  41814.  had to be ``+'' if there was an alternate access method used on the file
  41815.  or <space> if there was not.  This was changed in Draft 10 to be <space>
  41816.  if there is not and a single printable character if there is.  This was
  41817.  done for three reasons:  1) There are existing implementations using
  41818.  characters other than ``+''; 2) There are implementations that vary this
  41819.  character used in that position to distinguish between various alternate
  41820.  access methods in use, and; 3) the developers of the standard did not
  41821.  want to preclude specification by POSIX.6 that might need a way to
  41822.  specify more than one alternate access method.  Nonetheless,
  41823.  implementations providing a single alternate access method are encouraged
  41824.  to use ``+''.
  41825.  
  41826.  In a previous draft the units used to specify the number of blocks
  41827.  occupied by files in a directory in an ls -l listing was implementation
  41828.  defined.  This was because BSD systems have historically used 1024-byte
  41829.  units and System V systems have historically used 512-byte units.  It was
  41830.  pointed out by developers at Berkeley that BSD has used 512-byte units in
  41831.  some places and 1024-byte units in other places.  (System V has
  41832.  consistently used 512.)  Therefore, POSIX.2 and POSIX.2a usually specify
  41833.  
  41834.  
  41835.                Copyright c 1991 IEEE.  All rights reserved.
  41836.       This is an unapproved IEEE Standards Draft, subject to change.
  41837.  
  41838.  
  41839.  
  41840.  
  41841.  
  41842.  604                                     4 Execution Environment Utilities
  41843.  
  41844.  
  41845.  
  41846.  
  41847.  
  41848.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  41849.  
  41850.  512 and that value has been restored here as it was in Draft 9.  Future
  41851.  releases of BSD are expected to consistently provide 512 as a default
  41852.  with a way of specifying 1024-byte units where appropriate.
  41853.  
  41854.  The <_d_a_t_e _a_n_d _t_i_m_e> field in the -l format is specified only for the
  41855.  POSIX Locale.  As noted, the format can be different in other locales.
  41856.  No mechanism for defining this is present in this standard, as the
  41857.  appropriate vehicle is a messaging system; i.e., the format should be
  41858.  specified as a ``message.''
  41859.  
  41860.  END_RATIONALE
  41861.  
  41862.  
  41863.  
  41864.  4.40  mailx - Process messages
  41865.  
  41866.  
  41867.  4.40.1  Synopsis
  41868.  
  41869.  mailx  [-s _s_u_b_j_e_c_t] _a_d_d_r_e_s_s ...
  41870.  
  41871.  
  41872.  4.40.2  Description
  41873.  
  41874.  The mailx utility shall read standard input and send it to one or more
  41875.  addresses in an unspecified manner.  Unless the first character of one or
  41876.  more lines is tilde ( ), all characters in the input message shall appear
  41877.  in the delivered mess~age, but additional characters may be inserted in
  41878.  the message before it is retrieved.
  41879.  
  41880.  
  41881.  4.40.3  Options
  41882.  
  41883.  The mailx utility shall conform to the utility argument syntax guidelines
  41884.  described in 2.10.2.
  41885.  
  41886.  The following option shall be supported by the implementation:
  41887.  
  41888.     -s _s_u_b_j_e_c_t  A string representing the subject of the message.  All      2
  41889.                 characters in the _s_u_b_j_e_c_t string shall appear in the        2
  41890.                 delivered message.  The results are unspecified if _s_u_b_j_e_c_t  2
  41891.                 is longer than {LINE_MAX} - 10 bytes or contains a          2
  41892.                 <newline>.                                                  2
  41893.  
  41894.  
  41895.  
  41896.  
  41897.  
  41898.  
  41899.  
  41900.  
  41901.                Copyright c 1991 IEEE.  All rights reserved.
  41902.       This is an unapproved IEEE Standards Draft, subject to change.
  41903.  
  41904.  
  41905.  
  41906.  
  41907.  
  41908.  4.40 mailx - Process messages                                         605
  41909.  
  41910.  
  41911.  
  41912.  
  41913.  
  41914.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  41915.  
  41916.  4.40.4  Operands
  41917.  
  41918.  The following operand shall be supported by the implementation:
  41919.  
  41920.     _a_d_d_r_e_s_s     Send a message to _a_d_d_r_e_s_s. Valid login names on the local
  41921.                 system shall be accepted as valid _a_d_d_r_e_s_ses. The
  41922.                 interpretation of other types of _a_d_d_r_e_s_ses is unspecified.
  41923.                 An implementation-defined way for a user with a login-name
  41924.                 address to retrieve the message shall be provided by the
  41925.                 implementation.
  41926.  
  41927.  
  41928.  4.40.5  External Influences
  41929.  
  41930.  
  41931.  4.40.5.1  Standard Input
  41932.  
  41933.  The standard input shall be a text file.  The results are unspecified if
  41934.  the first character of any input line is a tilde (~).
  41935.  
  41936.  4.40.5.2  Input Files
  41937.  
  41938.  None.
  41939.  
  41940.  
  41941.  4.40.5.3  Environment Variables
  41942.  
  41943.  The following environment variables shall affect the execution of mailx:
  41944.  
  41945.     DEAD               This variable shall affect the processing of
  41946.                        signals by mailx:  if the application sets this
  41947.                        variable to /dev/null, the results of receiving a
  41948.                        signal are as described by this standard; they are
  41949.                        otherwise unspecified.
  41950.  
  41951.     HOME               This variable shall be interpreted as a pathname of
  41952.                        the user's home directory.
  41953.  
  41954.     LANG               This variable shall determine the locale to use for
  41955.                        the locale categories when both LC_ALL and the
  41956.                        corresponding environment variable (beginning with
  41957.                        LC_) do not specify a locale.  See 2.6.
  41958.  
  41959.     LC_ALL             This variable shall determine the locale to be used
  41960.                        to override any values for locale categories
  41961.                        specified by the settings of LANG or any
  41962.                        environment variables beginning with LC_.
  41963.  
  41964.  
  41965.  
  41966.  
  41967.                Copyright c 1991 IEEE.  All rights reserved.
  41968.       This is an unapproved IEEE Standards Draft, subject to change.
  41969.  
  41970.  
  41971.  
  41972.  
  41973.  
  41974.  606                                     4 Execution Environment Utilities
  41975.  
  41976.  
  41977.  
  41978.  
  41979.  
  41980.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  41981.  
  41982.     LC_CTYPE           This variable shall determine the locale for the
  41983.                        interpretation of sequences of bytes of text data
  41984.                        as characters (e.g., single- versus multibyte
  41985.                        characters in arguments and input files).
  41986.  
  41987.     LC_MESSAGES        This variable shall determine the language in which
  41988.                        messages should be written.
  41989.  
  41990.     MAILRC             This variable shall affect the startup processing
  41991.                        of mailx:  if the application sets this variable to
  41992.                        /dev/null, mailx shall operate as described by this
  41993.                        standard; otherwise, unspecified results occur.
  41994.  
  41995.  
  41996.  4.40.5.4  Asynchronous Events
  41997.  
  41998.  Default.
  41999.  
  42000.  
  42001.  4.40.6  External Effects
  42002.  
  42003.  4.40.6.1  Standard Output
  42004.  
  42005.  None.
  42006.  
  42007.  
  42008.  4.40.6.2  Standard Error
  42009.  
  42010.  Used only for diagnostic messages.
  42011.  
  42012.  4.40.6.3  Output Files
  42013.  
  42014.  None.
  42015.  
  42016.  
  42017.  4.40.7  Extended Description
  42018.  
  42019.  None.
  42020.  
  42021.  
  42022.  4.40.8  Exit Status
  42023.  
  42024.  The mailx utility shall exit with one of the following values:
  42025.  
  42026.      0    Successful completion.
  42027.  
  42028.     >0    An error occurred.
  42029.  
  42030.  
  42031.  
  42032.  
  42033.                Copyright c 1991 IEEE.  All rights reserved.
  42034.       This is an unapproved IEEE Standards Draft, subject to change.
  42035.  
  42036.  
  42037.  
  42038.  
  42039.  
  42040.  4.40 mailx - Process messages                                         607
  42041.  
  42042.  
  42043.  
  42044.  
  42045.  
  42046.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  42047.  
  42048.  4.40.9  Consequences of Errors
  42049.  
  42050.  Default.
  42051.  
  42052.  BEGIN_RATIONALE
  42053.  
  42054.  
  42055.  4.40.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  42056.  
  42057.  _U_s_a_g_e_,__E_x_a_m_p_l_e_s
  42058.  
  42059.  The intent is that a header indicating who sent the message and a message
  42060.  subject string, the contents of the standard input, and perhaps a trailer
  42061.  is delivered to users specified by the given addresses.  The standard
  42062.  input, however, may have to be manipulated slightly to avoid confusion
  42063.  between message text and headers as it passes through the message
  42064.  delivery system.  POSIX.2 does not specify how standard input may be
  42065.  manipulated; that will be specified in detail by POSIX.2a.
  42066.  
  42067.  The restriction on a subject line being {LINE_MAX} - 10 bytes is based on  2
  42068.  the historical format that consumes 10 bytes for "Subject: " and the       2
  42069.  trailing <newline>.  Many historical mailers that a message may encounter  2
  42070.  on other systems will not be able to handle lines that long, however.      2
  42071.  
  42072.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  42073.  
  42074.  The developers of the standard felt strongly that a method for
  42075.  applications to send messages to specific users was necessary.  The
  42076.  obvious example is a batch utility, running noninteractively, that wishes
  42077.  to communicate errors or results to a user.  However, the actual format,
  42078.  delivery mechanism, and method of reading the message are clearly beyond
  42079.  the scope of this standard.
  42080.  
  42081.  The intent of this command is to provide a simple, portable interface for
  42082.  sending messages noninteractively.  It merely defines a ``front-end'' to
  42083.  the historical mail system.  It is suggested that implementations
  42084.  explicitly denote the sender and recipient in the body of the delivered
  42085.  message.  Further specification of formats for either the message
  42086.  envelope or the message itself were deliberately not made, as the
  42087.  industry is in the midst of changing from the current standards to a more
  42088.  internationalized standard and it is probably incorrect, at this time, to
  42089.  require either one.
  42090.  
  42091.  Implementations are encouraged to conform to the various delivery
  42092.  mechanisms described in ARPANET Requests for Comment Numbers 819, 822,
  42093.  882, 920, 921, and the CCITT X.400 standards.
  42094.  
  42095.  The standard does not place any restrictions on the length of messages
  42096.  handled by mailx, and for delivery of local messages the only limitations
  42097.  
  42098.  
  42099.                Copyright c 1991 IEEE.  All rights reserved.
  42100.       This is an unapproved IEEE Standards Draft, subject to change.
  42101.  
  42102.  
  42103.  
  42104.  
  42105.  
  42106.  608                                     4 Execution Environment Utilities
  42107.  
  42108.  
  42109.  
  42110.  
  42111.  
  42112.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  42113.  
  42114.  should be the normal problems of available disk space for the target mail
  42115.  file.  When sending messages to external machines, applications are
  42116.  advised to limit messages to less than 50 kilobytes because many mail
  42117.  gateways impose message-length restrictions.  (Note that this is usually
  42118.  an administrative issue based on the amount of mail traffic and disk
  42119.  space available on the gateways.  Therefore, there is no way for this
  42120.  standard to require implementations to guarantee delivery of long
  42121.  messages to remote systems.)
  42122.  
  42123.  Like the utilities logger and lp, mailx is admittedly difficult to test.
  42124.  This was not deemed sufficient justification to exclude these utilities
  42125.  from the standard.  It is also arguable that they are, in fact, testable,
  42126.  but that the tests themselves are not portable.
  42127.  
  42128.  Before Draft 7, there was a utility named mailto.  In Draft 7, the name
  42129.  was changed to sendto because of comments noting that mailto implied full
  42130.  mail-like functionality and that was not what the specification provided.
  42131.  However, there have been consistent comments that it does not make sense
  42132.  to end up with a standard that will require two mail-sending interfaces.
  42133.  (POSIX.2a is working on a fully fleshed-out mail-sending and -reading
  42134.  utility based on the historical System V mailx utility.)  A message- (or
  42135.  mail-) sending utility that is a subset of the interactive utility that
  42136.  will be described by POSIX.2a is much more consistent with the rest of
  42137.  the standard.  Therefore, in Draft 10 the name has been changed again to
  42138.  mailx and the description is a small subset of the functionality being
  42139.  specified by POSIX.2a.  It provides a portable way for a shell script to
  42140.  be able to send a message to a user on the local system.  It is expected
  42141.  that implementations that have provided mailx in the past will use it to
  42142.  meet the POSIX.2 requirements.  Implementations that have not provided
  42143.  mailx in the past will be able to create a simple interface to their
  42144.  current mailer to meet these requirements.
  42145.  
  42146.  Most of the features provided by mailx (and the similar BSD Mail) utility
  42147.  are not specified here because they are not needed for noninteractive use
  42148.  (applications do not usually read mail without user participation) and
  42149.  they depend on other interactive features that are not defined by
  42150.  POSIX.2, but will be defined by POSIX.2a (the  v command, for instance,
  42151.  uses the vi editor as a default.)             ~
  42152.  
  42153.  If the DEAD environment variable is not set to /dev/null, historical
  42154.  versions of mailx and Mail save a message being constructed in a file
  42155.  under some circumstances when some asynchronous events occur.  The
  42156.  details will be specified by POSIX.2a.
  42157.  
  42158.  If the MAILRC environment variable does not name an empty file,
  42159.  historical versions of mailx and Mail read initialization commands from a
  42160.  file before processing begins.  Since the initialization that a user
  42161.  specifies could alter the contents of messages an application is trying
  42162.  to send, applications are advised to set MAILRC to /dev/null.  POSIX.2a
  42163.  
  42164.  
  42165.                Copyright c 1991 IEEE.  All rights reserved.
  42166.       This is an unapproved IEEE Standards Draft, subject to change.
  42167.  
  42168.  
  42169.  
  42170.  
  42171.  
  42172.  4.40 mailx - Process messages                                         609
  42173.  
  42174.  
  42175.  
  42176.  
  42177.  
  42178.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  42179.  
  42180.  will specify details on the format of the initialization file.
  42181.  
  42182.  Options to specify addresses as ``cc'' (carbon-copy) or ``bcc'' (blind-
  42183.  carbon-copy) were considered to be format details and were omitted.
  42184.  
  42185.  A zero exit status implies that all messages were _s_e_n_t, but it gives no
  42186.  assurances that any of them were actually _d_e_l_i_v_e_r_e_d.  The reliability of
  42187.  the delivery mechanism is unspecified and is an appropriate marketing
  42188.  distinction between systems.
  42189.  
  42190.  END_RATIONALE
  42191.  
  42192.  
  42193.  
  42194.  4.41  mkdir - Make directories
  42195.  
  42196.  
  42197.  4.41.1  Synopsis
  42198.  
  42199.  mkdir  [-p] [-m _m_o_d_e] _d_i_r ...
  42200.  
  42201.  
  42202.  4.41.2  Description
  42203.  
  42204.  The mkdir utility shall create the directories specified by the operands,
  42205.  in the order specified.
  42206.  
  42207.  For each _d_i_r operand, the mkdir utility shall perform actions equivalent
  42208.  to the POSIX.1 {8} _m_k_d_i_r() function, called with the following arguments:
  42209.  
  42210.      (1)  The _d_i_r operand is used as the _p_a_t_h argument.
  42211.  
  42212.      (2)  The value of the bitwise inclusive OR of S_IRWXU, S_IRWXG, and
  42213.           S_IRWXO is used as the _m_o_d_e argument.  (If the -m option is       1
  42214.           specified, the _m_o_d_e option-argument overrides this default.)      1
  42215.  
  42216.  
  42217.  4.41.3  Options
  42218.  
  42219.  The mkdir utility shall conform to the utility argument syntax guidelines
  42220.  described in 2.10.2.
  42221.  
  42222.  The following options shall be supported by the implementation:
  42223.  
  42224.     -m _m_o_d_e     Set the file permission bits of the newly-created
  42225.                 directory to the specified _m_o_d_e value.  The _m_o_d_e option-
  42226.                 argument shall be the same as the _m_o_d_e operand defined for
  42227.                 the chmod utility (see 4.7).  In the _s_y_m_b_o_l_i_c__m_o_d_e
  42228.                 strings, the _o_p characters + and - shall be interpreted
  42229.  
  42230.  
  42231.                Copyright c 1991 IEEE.  All rights reserved.
  42232.       This is an unapproved IEEE Standards Draft, subject to change.
  42233.  
  42234.  
  42235.  
  42236.  
  42237.  
  42238.  610                                     4 Execution Environment Utilities
  42239.  
  42240.  
  42241.  
  42242.  
  42243.  
  42244.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  42245.  
  42246.                 relative to an assumed initial mode of a=rwx; + shall add
  42247.                 permissions to the default mode, - shall delete
  42248.                 permissions from the default mode.
  42249.  
  42250.     -p          Create any missing intermediate pathname components.
  42251.  
  42252.                 For each _d_i_r operand that does not name an existing
  42253.                 directory, effects equivalent to those caused by following
  42254.                 command shall occur:
  42255.  
  42256.                 mkdir  -p  -m $(umask -S),u+wx  $(dirname  _d_i_r) &&
  42257.                 mkdir [-m _m_o_d_e] _d_i_r
  42258.  
  42259.                 where the [-m _m_o_d_e] option represents that option supplied
  42260.                 to the original invocation of mkdir, if any.
  42261.  
  42262.                 Each _d_i_r operand that names an existing directory shall be
  42263.                 ignored without error.
  42264.  
  42265.  
  42266.  4.41.4  Operands
  42267.  
  42268.  The following operand shall be supported by the implementation:
  42269.  
  42270.     _d_i_r         A pathname of a directory to be created.
  42271.  
  42272.  
  42273.  4.41.5  External Influences
  42274.  
  42275.  
  42276.  4.41.5.1  Standard Input
  42277.  
  42278.  None.
  42279.  
  42280.  4.41.5.2  Input Files
  42281.  
  42282.  None.
  42283.  
  42284.  
  42285.  4.41.5.3  Environment Variables
  42286.  
  42287.  The following environment variables shall affect the execution of mkdir:
  42288.  
  42289.     LANG               This variable shall determine the locale to use for
  42290.                        the locale categories when both LC_ALL and the
  42291.                        corresponding environment variable (beginning with
  42292.                        LC_) do not specify a locale.  See 2.6.
  42293.  
  42294.  
  42295.  
  42296.  
  42297.                Copyright c 1991 IEEE.  All rights reserved.
  42298.       This is an unapproved IEEE Standards Draft, subject to change.
  42299.  
  42300.  
  42301.  
  42302.  
  42303.  
  42304.  4.41 mkdir - Make directories                                         611
  42305.  
  42306.  
  42307.  
  42308.  
  42309.  
  42310.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  42311.  
  42312.     LC_ALL             This variable shall determine the locale to be used
  42313.                        to override any values for locale categories
  42314.                        specified by the settings of LANG or any
  42315.                        environment variables beginning with LC_.
  42316.  
  42317.     LC_CTYPE           This variable shall determine the locale for the
  42318.                        interpretation of sequences of bytes of text data
  42319.                        as characters (e.g., single- versus multibyte
  42320.                        characters in arguments).
  42321.  
  42322.     LC_MESSAGES        This variable shall determine the language in which
  42323.                        messages should be written.
  42324.  
  42325.  
  42326.  4.41.5.4  Asynchronous Events
  42327.  
  42328.  Default.
  42329.  
  42330.  
  42331.  4.41.6  External Effects
  42332.  
  42333.  4.41.6.1  Standard Output
  42334.  
  42335.  None.
  42336.  
  42337.  
  42338.  4.41.6.2  Standard Error
  42339.  
  42340.  Used only for diagnostic messages.
  42341.  
  42342.  4.41.6.3  Output Files
  42343.  
  42344.  None.
  42345.  
  42346.  
  42347.  4.41.7  Extended Description
  42348.  
  42349.  None.
  42350.  
  42351.  
  42352.  4.41.8  Exit Status
  42353.  
  42354.  The mkdir utility shall exit with one of the following values:
  42355.  
  42356.      0    All the specified directories were created successfully or the
  42357.           -p option was specified and all the specified directories now
  42358.           exist.
  42359.  
  42360.  
  42361.  
  42362.  
  42363.                Copyright c 1991 IEEE.  All rights reserved.
  42364.       This is an unapproved IEEE Standards Draft, subject to change.
  42365.  
  42366.  
  42367.  
  42368.  
  42369.  
  42370.  612                                     4 Execution Environment Utilities
  42371.  
  42372.  
  42373.  
  42374.  
  42375.  
  42376.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  42377.  
  42378.     >0    An error occurred.
  42379.  
  42380.  
  42381.  4.41.9  Consequences of Errors
  42382.  
  42383.  Default.
  42384.  
  42385.  BEGIN_RATIONALE
  42386.  
  42387.  
  42388.  4.41.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  42389.  
  42390.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  42391.  
  42392.  The default file mode for directories is a=rwx (777) with selected
  42393.  permissions removed in accordance with the file mode creation mask.  For
  42394.  intermediate path name components created by mkdir, the mode is the
  42395.  default modified by u+wx so that the subdirectories can always be created
  42396.  regardless of the file mode creation mask; if different ultimate
  42397.  permissions are desired for the intermediate directories, they can be
  42398.  changed afterward with chmod.
  42399.  
  42400.  Application writers should note that some of the requested directories
  42401.  may have been created even if an error occurs.
  42402.  
  42403.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  42404.  
  42405.  The System V -m option was added to control the file mode.
  42406.  
  42407.  The System V -p option was added to create any needed intermediate
  42408.  directories, to complement the functionality provided rmdir for removing
  42409.  directories in the path prefix as they become empty.  Because no error is
  42410.  produced if any path component already exists, the -p option is also
  42411.  useful to ensure that a particular directory exists.
  42412.  
  42413.  The functionality of mkdir is described substantially through a reference
  42414.  to the _m_k_d_i_r() function in POSIX.1 {8}.  For example, by default, the
  42415.  mode of the directory is affected by the file mode creation mask in
  42416.  accordance with the specified behavior of POSIX.1 {8} _m_k_d_i_r().  In this
  42417.  way, there is less duplication of effort required for describing details
  42418.  of the directory creation.
  42419.  
  42420.  END_RATIONALE
  42421.  
  42422.  
  42423.  
  42424.  
  42425.  
  42426.  
  42427.  
  42428.  
  42429.                Copyright c 1991 IEEE.  All rights reserved.
  42430.       This is an unapproved IEEE Standards Draft, subject to change.
  42431.  
  42432.  
  42433.  
  42434.  
  42435.  
  42436.  4.41 mkdir - Make directories                                         613
  42437.  
  42438.  
  42439.  
  42440.  
  42441.  
  42442.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  42443.  
  42444.  4.42  mkfifo - Make FIFO special files
  42445.  
  42446.  
  42447.  4.42.1  Synopsis
  42448.  
  42449.  
  42450.  mkfifo  [-m _m_o_d_e] _f_i_l_e ...
  42451.  
  42452.  
  42453.  4.42.2  Description
  42454.  
  42455.  The mkfifo utility shall create the FIFO special files specified by the
  42456.  operands, in the order specified.
  42457.  
  42458.  For each _f_i_l_e operand, the mkfifo utility shall perform actions
  42459.  equivalent to the POSIX.1 {8} _m_k_f_i_f_o() function, called with the
  42460.  following arguments:
  42461.  
  42462.      (1)  The _f_i_l_e operand is used as the _p_a_t_h argument.
  42463.  
  42464.      (2)  The value of the bitwise inclusive OR of S_IRUSR, S_IWUSR,
  42465.           S_IRGRP, S_IWGRP, S_IROTH, and S_IWOTH is used as the _m_o_d_e
  42466.           argument.  (If the -m option is specified, the _m_o_d_e option-
  42467.           argument overrides this default.)
  42468.  
  42469.  
  42470.  4.42.3  Options
  42471.  
  42472.  The mkfifo utility shall conform to the utility argument syntax
  42473.  guidelines described in 2.10.2.
  42474.  
  42475.  The following option shall be supported by the implementation:
  42476.  
  42477.     -m _m_o_d_e     Set the file permission bits of the newly-created FIFO to
  42478.                 the specified _m_o_d_e value.  The _m_o_d_e option-argument shall
  42479.                 be the same as the _m_o_d_e operand defined for the chmod
  42480.                 utility (see 4.7).  In the _s_y_m_b_o_l_i_c__m_o_d_e strings, the _o_p
  42481.                 characters + and - shall be interpreted relative to an
  42482.                 assumed initial mode of a=rw.
  42483.  
  42484.  
  42485.  4.42.4  Operands
  42486.  
  42487.  The following operand shall be supported by the implementation:
  42488.  
  42489.     _f_i_l_e        A pathname of the FIFO special file to be created.
  42490.  
  42491.  
  42492.  
  42493.  
  42494.  
  42495.                Copyright c 1991 IEEE.  All rights reserved.
  42496.       This is an unapproved IEEE Standards Draft, subject to change.
  42497.  
  42498.  
  42499.  
  42500.  
  42501.  
  42502.  614                                     4 Execution Environment Utilities
  42503.  
  42504.  
  42505.  
  42506.  
  42507.  
  42508.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  42509.  
  42510.  4.42.5  External Influences
  42511.  
  42512.  
  42513.  4.42.5.1  Standard Input
  42514.  
  42515.  None.
  42516.  
  42517.  4.42.5.2  Input Files
  42518.  
  42519.  None.
  42520.  
  42521.  
  42522.  4.42.5.3  Environment Variables
  42523.  
  42524.  The following environment variables shall affect the execution of mkfifo:
  42525.  
  42526.     LANG               This variable shall determine the locale to use for
  42527.                        the locale categories when both LC_ALL and the
  42528.                        corresponding environment variable (beginning with
  42529.                        LC_) do not specify a locale.  See 2.6.
  42530.  
  42531.     LC_ALL             This variable shall determine the locale to be used
  42532.                        to override any values for locale categories
  42533.                        specified by the settings of LANG or any
  42534.                        environment variables beginning with LC_.
  42535.  
  42536.     LC_CTYPE           This variable shall determine the locale for the
  42537.                        interpretation of sequences of bytes of text data
  42538.                        as characters (e.g., single- versus multibyte
  42539.                        characters in arguments).
  42540.  
  42541.     LC_MESSAGES        This variable shall determine the language in which
  42542.                        messages should be written.
  42543.  
  42544.  4.42.5.4  Asynchronous Events
  42545.  
  42546.  Default.
  42547.  
  42548.  
  42549.  4.42.6  External Effects
  42550.  
  42551.  
  42552.  4.42.6.1  Standard Output
  42553.  
  42554.  None.
  42555.  
  42556.  
  42557.  
  42558.  
  42559.  
  42560.  
  42561.                Copyright c 1991 IEEE.  All rights reserved.
  42562.       This is an unapproved IEEE Standards Draft, subject to change.
  42563.  
  42564.  
  42565.  
  42566.  
  42567.  
  42568.  4.42 mkfifo - Make FIFO special files                                 615
  42569.  
  42570.  
  42571.  
  42572.  
  42573.  
  42574.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  42575.  
  42576.  4.42.6.2  Standard Error
  42577.  
  42578.  Used only for diagnostic messages.
  42579.  
  42580.  
  42581.  4.42.6.3  Output Files
  42582.  
  42583.  None.
  42584.  
  42585.  
  42586.  4.42.7  Extended Description
  42587.  
  42588.  None.
  42589.  
  42590.  
  42591.  4.42.8  Exit Status
  42592.  
  42593.  The mkfifo utility shall exit with one of the following values:
  42594.  
  42595.      0    All the specified FIFO special files were created successfully.
  42596.  
  42597.     >0    An error occurred.
  42598.  
  42599.  
  42600.  4.42.9  Consequences of Errors
  42601.  
  42602.  Default.
  42603.  
  42604.  BEGIN_RATIONALE
  42605.  
  42606.  
  42607.  4.42.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  42608.  
  42609.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  42610.  
  42611.  None.
  42612.  
  42613.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  42614.  
  42615.  This new utility was added to permit shell applications to create FIFO
  42616.  special files.
  42617.  
  42618.  The -m option was added to control the file mode, for consistency with
  42619.  the similar functionality provided the mkdir utility.
  42620.  
  42621.  Earlier drafts included a -p option similar to mkdir's -p option that
  42622.  created intermediate directories leading up to the FIFO specified by the
  42623.  final component.  This was removed because it is not commonly needed and
  42624.  is not common practice with similar utilities.
  42625.  
  42626.  
  42627.                Copyright c 1991 IEEE.  All rights reserved.
  42628.       This is an unapproved IEEE Standards Draft, subject to change.
  42629.  
  42630.  
  42631.  
  42632.  
  42633.  
  42634.  616                                     4 Execution Environment Utilities
  42635.  
  42636.  
  42637.  
  42638.  
  42639.  
  42640.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  42641.  
  42642.  The functionality of mkfifo is described substantially through a
  42643.  reference to the _m_k_f_i_f_o() function in POSIX.1.  For example, by default,
  42644.  the mode of the FIFO file is affected by the file mode creation mask in
  42645.  accordance with the specified behavior of POSIX.1 {8} _m_k_f_i_f_o().  In this
  42646.  way, there is less duplication of effort required for describing details
  42647.  of the file creation.
  42648.  
  42649.  END_RATIONALE
  42650.  
  42651.  
  42652.  
  42653.  4.43  mv - Move files
  42654.  
  42655.  
  42656.  4.43.1  Synopsis
  42657.  
  42658.  mv  [-fi] _s_o_u_r_c_e__f_i_l_e _t_a_r_g_e_t__f_i_l_e
  42659.  
  42660.  mv  [-fi] _s_o_u_r_c_e__f_i_l_e ... _t_a_r_g_e_t__d_i_r
  42661.  
  42662.  
  42663.  4.43.2  Description
  42664.  
  42665.  In the first synopsis form, the mv utility shall move the file named by
  42666.  the _s_o_u_r_c_e__f_i_l_e operand to the _d_e_s_t_i_n_a_t_i_o_n specified by the _t_a_r_g_e_t__f_i_l_e.
  42667.  This first synopsis form is assumed when the final operand does not name
  42668.  an existing directory.
  42669.  
  42670.  In the second synopsis form, mv shall move each file named by a
  42671.  _s_o_u_r_c_e__f_i_l_e operand to a _d_e_s_t_i_n_a_t_i_o_n file in the existing directory named
  42672.  by the _t_a_r_g_e_t__d_i_r operand.  The _d_e_s_t_i_n_a_t_i_o_n path for each _s_o_u_r_c_e__f_i_l_e
  42673.  shall be the concatenation of the target directory, a single slash
  42674.  character, and the last pathname component of the _s_o_u_r_c_e__f_i_l_e.
  42675.  
  42676.  If any operand specifies an existing file of a type not specified by
  42677.  POSIX.1 {8}, the behavior is implementation defined.
  42678.  
  42679.  This second form is assumed when the final operand names an existing
  42680.  directory.
  42681.  
  42682.  For each _s_o_u_r_c_e__f_i_l_e the following steps shall be taken:
  42683.  
  42684.      (1)  If the destination path exists, the -f option is not specified,
  42685.           and either of the following conditions is true:
  42686.  
  42687.            (a)  The permissions of the destination path do not permit
  42688.                 writing and the standard input is a terminal.
  42689.  
  42690.  
  42691.  
  42692.  
  42693.                Copyright c 1991 IEEE.  All rights reserved.
  42694.       This is an unapproved IEEE Standards Draft, subject to change.
  42695.  
  42696.  
  42697.  
  42698.  
  42699.  
  42700.  4.43 mv - Move files                                                  617
  42701.  
  42702.  
  42703.  
  42704.  
  42705.  
  42706.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  42707.  
  42708.            (b)  The -i option is specified.
  42709.  
  42710.           the mv utility shall write a prompt to standard error and read a
  42711.           line from standard input.  If the response is not affirmative,
  42712.           mv shall do nothing more with the current _s_o_u_r_c_e__f_i_l_e and go on
  42713.           to any remaining _s_o_u_r_c_e__f_i_l_es.
  42714.  
  42715.      (2)  The mv utility shall perform actions equivalent to the
  42716.           POSIX.1 {8} _r_e_n_a_m_e() function, called with the following
  42717.           arguments:
  42718.  
  42719.            (a)  The _s_o_u_r_c_e__f_i_l_e operand is used as the _o_l_d argument.
  42720.  
  42721.            (b)  The destination path is used as the _n_e_w argument.
  42722.  
  42723.           If this succeeds, mv shall do nothing more with the current
  42724.           _s_o_u_r_c_e__f_i_l_e and go on to any remaining _s_o_u_r_c_e__f_i_l_es. If this
  42725.           fails for any reasons other than those described for the _e_r_r_n_o
  42726.           [EXDEV] in POSIX.1 {8}, mv shall write a diagnostic message to
  42727.           standard error, do nothing more with the current _s_o_u_r_c_e__f_i_l_e,
  42728.           and go on to any remaining _s_o_u_r_c_e__f_i_l_es.
  42729.  
  42730.      (3)  If the destination path exists, and it is a file of type
  42731.           directory and _s_o_u_r_c_e__f_i_l_e is not a file of type directory, or it
  42732.           is a file not of type directory and _s_o_u_r_c_e__f_i_l_e is a file of
  42733.           type directory, mv shall write a diagnostic message to standard
  42734.           error, do nothing more with the current _s_o_u_r_c_e__f_i_l_e, and go on
  42735.           to any remaining _s_o_u_r_c_e__f_i_l_es.
  42736.  
  42737.      (4)  If the destination path exists, mv shall attempt to remove it.
  42738.           If this fails for any reason, mv shall write a diagnostic
  42739.           message to standard error, do nothing more with the current
  42740.           _s_o_u_r_c_e__f_i_l_e, and go on to any remaining _s_o_u_r_c_e__f_i_l_es.
  42741.  
  42742.      (5)  The file hierarchy rooted in _s_o_u_r_c_e__f_i_l_e shall be duplicated as
  42743.           a file hierarchy rooted in the destination path.  The following
  42744.           characteristics of each file in the file hierarchy shall be
  42745.           duplicated:
  42746.  
  42747.            (a)  The time of last data modification and time of last
  42748.                 access.
  42749.  
  42750.            (b)  The user ID and group ID.
  42751.  
  42752.            (c)  The file mode.
  42753.  
  42754.           If the user ID, group ID, or file mode of a regular file cannot
  42755.           be duplicated, the file mode bits S_ISUID and S_ISGID shall not
  42756.           be duplicated.
  42757.  
  42758.  
  42759.                Copyright c 1991 IEEE.  All rights reserved.
  42760.       This is an unapproved IEEE Standards Draft, subject to change.
  42761.  
  42762.  
  42763.  
  42764.  
  42765.  
  42766.  618                                     4 Execution Environment Utilities
  42767.  
  42768.  
  42769.  
  42770.  
  42771.  
  42772.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  42773.  
  42774.           When files are duplicated to another file system, the             1
  42775.           implementation may require that the process invoking mv have      1
  42776.           read access to each file being duplicated.                        1
  42777.  
  42778.           If the duplication of the file hierarchy fails for any reason,
  42779.           mv shall write a diagnostic message to standard error, do
  42780.           nothing more with the current _s_o_u_r_c_e__f_i_l_e, and go on to any
  42781.           remaining _s_o_u_r_c_e__f_i_l_es.
  42782.  
  42783.           If the duplication of the file characteristics fails for any
  42784.           reason, mv shall write a diagnostic message to standard error,
  42785.           but this failure shall not cause mv to modify its exit status.
  42786.  
  42787.      (6)  The file hierarchy rooted in _s_o_u_r_c_e__f_i_l_e shall be removed.  If
  42788.           this fails for any reason, mv shall write a diagnostic message
  42789.           to the standard error, do nothing more with the current
  42790.           _s_o_u_r_c_e__f_i_l_e, and go on to any remaining _s_o_u_r_c_e__f_i_l_es.
  42791.  
  42792.  
  42793.  4.43.3  Options
  42794.  
  42795.  The mv utility shall conform to the utility argument syntax guidelines
  42796.  described in 2.10.2.
  42797.  
  42798.  The following options shall be supported by the implementation:
  42799.  
  42800.     -f          Do not prompt for confirmation if the _d_e_s_t_i_n_a_t_i_o_n path
  42801.                 exists.  Any previous occurrences of the -i option shall
  42802.                 be ignored.
  42803.  
  42804.     -i          Prompt for confirmation if the destination path exists.
  42805.                 Any previous occurrences of the -f option shall be
  42806.                 ignored.
  42807.  
  42808.  Specifying more than one of the -f or -i options shall not be considered
  42809.  an error.  The last option specified shall determine mv's behavior.
  42810.  
  42811.  
  42812.  4.43.4  Operands
  42813.  
  42814.  The following operands shall be supported by the implementation:
  42815.  
  42816.     _s_o_u_r_c_e__f_i_l_e A pathname of a file or directory to be moved.
  42817.  
  42818.     _t_a_r_g_e_t__f_i_l_e A new pathname for the file or directory being moved.
  42819.  
  42820.     _t_a_r_g_e_t__d_i_r  A pathname of an existing directory into which to move the
  42821.                 input files.
  42822.  
  42823.  
  42824.  
  42825.                Copyright c 1991 IEEE.  All rights reserved.
  42826.       This is an unapproved IEEE Standards Draft, subject to change.
  42827.  
  42828.  
  42829.  
  42830.  
  42831.  
  42832.  4.43 mv - Move files                                                  619
  42833.  
  42834.  
  42835.  
  42836.  
  42837.  
  42838.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  42839.  
  42840.  4.43.5  External Influences
  42841.  
  42842.  
  42843.  4.43.5.1  Standard Input
  42844.  
  42845.  Used to read an input line in response to each prompt specified in
  42846.  Standard Error.  4.43.6.2.  Otherwise, the standard input shall not be
  42847.  used.
  42848.  
  42849.  4.43.5.2  Input Files
  42850.  
  42851.  The input files specified by each _s_o_u_r_c_e__f_i_l_e operand can be of any file
  42852.  type.
  42853.  
  42854.  
  42855.  4.43.5.3  Environment Variables
  42856.  
  42857.  The following environment variables shall affect the execution of mv:
  42858.  
  42859.     LANG               This variable shall determine the locale to use for
  42860.                        the locale categories when both LC_ALL and the
  42861.                        corresponding environment variable (beginning with
  42862.                        LC_) do not specify a locale.  See 2.6.
  42863.  
  42864.     LC_ALL             This variable shall determine the locale to be used
  42865.                        to override any values for locale categories
  42866.                        specified by the settings of LANG or any
  42867.                        environment variables beginning with LC_.
  42868.  
  42869.     LC_COLLATE         This variable shall determine the locale for the
  42870.                        behavior of ranges, equivalence classes, and
  42871.                        multicharacter collating elements used in the
  42872.                        extended regular expression defined for the yesexpr
  42873.                        locale keyword in the LC_MESSAGES category.
  42874.  
  42875.     LC_CTYPE           This variable shall determine the locale for the
  42876.                        interpretation of sequences of bytes of text data
  42877.                        as characters (e.g., single- versus multibyte
  42878.                        characters in arguments) and the behavior of
  42879.                        character classes within regular expressions used
  42880.                        in the extended regular expression defined for the
  42881.                        yesexpr locale keyword in the LC_MESSAGES category.
  42882.  
  42883.     LC_MESSAGES        This variable shall determine the processing of
  42884.                        affirmative responses and the language in which
  42885.                        messages should be written.
  42886.  
  42887.  
  42888.  
  42889.  
  42890.  
  42891.                Copyright c 1991 IEEE.  All rights reserved.
  42892.       This is an unapproved IEEE Standards Draft, subject to change.
  42893.  
  42894.  
  42895.  
  42896.  
  42897.  
  42898.  620                                     4 Execution Environment Utilities
  42899.  
  42900.  
  42901.  
  42902.  
  42903.  
  42904.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  42905.  
  42906.  4.43.5.4  Asynchronous Events
  42907.  
  42908.  Default.
  42909.  
  42910.  
  42911.  4.43.6  External Effects
  42912.  
  42913.  
  42914.  4.43.6.1  Standard Output
  42915.  
  42916.  None.
  42917.  
  42918.  4.43.6.2  Standard Error
  42919.  
  42920.  Prompts shall be written to the standard error under the conditions
  42921.  specified in 4.43.2.  The prompts shall contain the _d_e_s_t_i_n_a_t_i_o_n pathname,
  42922.  but their format is otherwise unspecified.  Otherwise, the standard error
  42923.  shall be used only for diagnostic messages.
  42924.  
  42925.  
  42926.  4.43.6.3  Output Files
  42927.  
  42928.  The output files may be of any file type.
  42929.  
  42930.  
  42931.  4.43.7  Extended Description
  42932.  
  42933.  None.
  42934.  
  42935.  
  42936.  4.43.8  Exit Status
  42937.  
  42938.  The mv utility shall exit with one of the following values:
  42939.  
  42940.      0    All input files were moved successfully.
  42941.  
  42942.     >0    An error occurred.
  42943.  
  42944.  
  42945.  4.43.9  Consequences of Errors
  42946.  
  42947.  If the copying or removal of _s_o_u_r_c_e__f_i_l_e is prematurely terminated by a
  42948.  signal or error, mv may leave a partial copy of _s_o_u_r_c_e__f_i_l_e at the source
  42949.  or destination.  The mv utility shall not modify both _s_o_u_r_c_e__f_i_l_e and the
  42950.  destination path simultaneously; termination at any point shall leave
  42951.  either _s_o_u_r_c_e__f_i_l_e or the destination path complete.
  42952.  
  42953.  BEGIN_RATIONALE
  42954.  
  42955.  
  42956.  
  42957.                Copyright c 1991 IEEE.  All rights reserved.
  42958.       This is an unapproved IEEE Standards Draft, subject to change.
  42959.  
  42960.  
  42961.  
  42962.  
  42963.  
  42964.  4.43 mv - Move files                                                  621
  42965.  
  42966.  
  42967.  
  42968.  
  42969.  
  42970.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  42971.  
  42972.  4.43.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  42973.  
  42974.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  42975.  
  42976.  If the current directory contains only files a (of any type defined by
  42977.  POSIX.1 {8}), b (also of any type), and a directory c:
  42978.  
  42979.        mv a b c
  42980.        mv c d
  42981.  
  42982.  will result with the original files a and b residing in the directory d
  42983.  in the current directory.
  42984.  
  42985.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  42986.  
  42987.  Previous versions of this draft diverged from _S_V_I_D and BSD historical
  42988.  practice in that they required that when the destination path exists, the
  42989.  -f option is not specified, and input is not a terminal, mv shall fail.
  42990.  This was done for compatibility with cp.  This draft returns to
  42991.  historical practice.  It should be noted that this is consistent with the
  42992.  POSIX.1 {8} function _r_e_n_a_m_e(), which does not require write permission on
  42993.  the target.
  42994.  
  42995.  For absolute clarity, paragraph (1), describing mv'_s behavior when
  42996.  prompting for confirmation, should be interpreted in the following
  42997.  manner:
  42998.  
  42999.        if (exists AND (NOT f_option) AND
  43000.                ((not_writable AND input_is_terminal) OR i_option))
  43001.  
  43002.  The -i option exists on BSD systems, giving applications and users a way
  43003.  to avoid accidentally unlinking files when moving others.  When the
  43004.  standard input is not a terminal, the 4.3BSD mv deletes all existing
  43005.  destination paths without prompting, even when -i is specified; this is
  43006.  inconsistent with the behavior of the 4.3BSD cp utility, which always
  43007.  generates an error when the file is unwritable and the standard input is
  43008.  not a terminal.  The working group decided that use of -i is a request
  43009.  for interaction, so when the _d_e_s_t_i_n_a_t_i_o_n path exists, the utility takes
  43010.  instructions from whatever responds to standard input.
  43011.  
  43012.  The _r_e_n_a_m_e() function is able to move directories within the same file
  43013.  system.  Some historical versions of mv have been able to move             1
  43014.  directories, but not to a different file system.  The working group felt
  43015.  that this was an annoying inconsistency, so the standard requires
  43016.  directories to be movable even across file systems.  There is no -R
  43017.  option to confirm that moving a directory is actually intended, since
  43018.  such an option was not required for moving directories in historical
  43019.  practice.  Requiring the application to specify it sometimes, depending
  43020.  on the destination, seemed just as inconsistent.  The semantics of the
  43021.  
  43022.  
  43023.                Copyright c 1991 IEEE.  All rights reserved.
  43024.       This is an unapproved IEEE Standards Draft, subject to change.
  43025.  
  43026.  
  43027.  
  43028.  
  43029.  
  43030.  622                                     4 Execution Environment Utilities
  43031.  
  43032.  
  43033.  
  43034.  
  43035.  
  43036.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  43037.  
  43038.  _r_e_n_a_m_e() function were preserved as much as possible.  For example, mv is
  43039.  not permitted to ``rename'' files to or from directories, even though
  43040.  they might be empty and removable.
  43041.  
  43042.  Historic implementations of mv did not exit with a nonzero exit status if
  43043.  they were unable to duplicate any file characteristics when moving a file
  43044.  across file systems, nor did they write a diagnostic message for the
  43045.  user.  The former behavior has been preserved to prevent scripts from
  43046.  breaking; a diagnostic message is now required, however, so that users
  43047.  are alerted that the file characteristics have changed.
  43048.  
  43049.  The exact format of the interactive prompts is unspecified.  Only the
  43050.  general nature of the contents of prompts are specified, because
  43051.  implementations may desire more descriptive prompts than those used on
  43052.  historical implementations.  Therefore, an application not using the -f
  43053.  option or using the -i option relies on the system to provide the most
  43054.  suitable dialogue directly with the user, based on the behavior
  43055.  specified.
  43056.  
  43057.  END_RATIONALE
  43058.  
  43059.  
  43060.  
  43061.  4.44  nohup - Invoke a utility immune to hangups
  43062.  
  43063.  
  43064.  4.44.1  Synopsis
  43065.  
  43066.  nohup  _u_t_i_l_i_t_y [_a_r_g_u_m_e_n_t ...]
  43067.  
  43068.  
  43069.  4.44.2  Description
  43070.  
  43071.  The nohup utility shall invoke the utility named by the _u_t_i_l_i_t_y operand
  43072.  with arguments supplied as the _a_r_g_u_m_e_n_t operands.  At the time the named
  43073.  _u_t_i_l_i_t_y is invoked, the SIGHUP signal shall be set to be ignored.
  43074.  
  43075.  If the standard output is a terminal, all output written by the named
  43076.  _u_t_i_l_i_t_y to its standard output shall be appended to the end of the file
  43077.  nohup.out in the current directory.  If nohup.out cannot be created or
  43078.  opened for appending, the output shall be appended to the end of the file
  43079.  nohup.out in the directory specified by the HOME environment variable.
  43080.  If neither file can be created or opened for appending, _u_t_i_l_i_t_y shall not
  43081.  be invoked.  If a file is created, the file's permission bits shall be
  43082.  set to S_IRUSR | S_IWUSR instead of the default specified in 2.9.1.4.
  43083.  
  43084.  If the standard error is a terminal, all output written by the named
  43085.  _u_t_i_l_i_t_y to its standard error shall be redirected to the same file
  43086.  descriptor as the standard output.
  43087.  
  43088.  
  43089.                Copyright c 1991 IEEE.  All rights reserved.
  43090.       This is an unapproved IEEE Standards Draft, subject to change.
  43091.  
  43092.  
  43093.  
  43094.  
  43095.  
  43096.  4.44 nohup - Invoke a utility immune to hangups                       623
  43097.  
  43098.  
  43099.  
  43100.  
  43101.  
  43102.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  43103.  
  43104.  4.44.3  Options
  43105.  
  43106.  None.
  43107.  
  43108.  
  43109.  4.44.4  Operands
  43110.  
  43111.  The following operands shall be supported by the implementation:
  43112.  
  43113.     _u_t_i_l_i_t_y     The name of a utility that is to be invoked.  If the
  43114.                 _u_t_i_l_i_t_y operand names any of the special built-in
  43115.                 utilities in 3.14, the results are undefined.
  43116.  
  43117.     _a_r_g_u_m_e_n_t    Any string to be supplied as an argument when invoking the
  43118.                 utility named by the _u_t_i_l_i_t_y operand.
  43119.  
  43120.  
  43121.  4.44.5  External Influences
  43122.  
  43123.  
  43124.  4.44.5.1  Standard Input
  43125.  
  43126.  None.
  43127.  
  43128.  4.44.5.2  Input Files
  43129.  
  43130.  None.
  43131.  
  43132.  
  43133.  4.44.5.3  Environment Variables
  43134.  
  43135.  The following environment variables shall affect the execution of nohup:
  43136.  
  43137.     HOME               This variable shall determine the pathname of the
  43138.                        user's home directory:  if the output file
  43139.                        nohup.out cannot be created in the current
  43140.                        directory, the nohup utility shall use the
  43141.                        directory named by HOME to create the file.
  43142.  
  43143.     LANG               This variable shall determine the locale to use for
  43144.                        the locale categories when both LC_ALL and the
  43145.                        corresponding environment variable (beginning with
  43146.                        LC_) do not specify a locale.  See 2.6.
  43147.  
  43148.     LC_ALL             This variable shall determine the locale to be used
  43149.                        to override any values for locale categories
  43150.                        specified by the settings of LANG or any
  43151.                        environment variables beginning with LC_.
  43152.  
  43153.  
  43154.  
  43155.                Copyright c 1991 IEEE.  All rights reserved.
  43156.       This is an unapproved IEEE Standards Draft, subject to change.
  43157.  
  43158.  
  43159.  
  43160.  
  43161.  
  43162.  624                                     4 Execution Environment Utilities
  43163.  
  43164.  
  43165.  
  43166.  
  43167.  
  43168.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  43169.  
  43170.     LC_CTYPE           This variable shall determine the locale for the
  43171.                        interpretation of sequences of bytes of text data
  43172.                        as characters (e.g., single- versus multibyte
  43173.                        characters in arguments).
  43174.  
  43175.     LC_MESSAGES        This variable shall determine the language in which
  43176.                        messages should be written.
  43177.  
  43178.     PATH               This variable shall determine the search path that
  43179.                        shall be used to locate the utility to be invoked.
  43180.                        See 2.6.
  43181.  
  43182.  
  43183.  4.44.5.4  Asynchronous Events
  43184.  
  43185.  The nohup utility shall take the standard action for all signals (see
  43186.  2.11.5.4), except that SIGHUP shall be ignored.
  43187.  
  43188.  
  43189.  4.44.6  External Effects
  43190.  
  43191.  4.44.6.1  Standard Output
  43192.  
  43193.  If the standard output is not a terminal, the standard output of nohup
  43194.  shall be the standard output generated by the execution of the _u_t_i_l_i_t_y
  43195.  specified by the operands.  Otherwise, nothing shall be written to the
  43196.  standard output.
  43197.  
  43198.  
  43199.  4.44.6.2  Standard Error
  43200.  
  43201.  If the standard output is a terminal, a message shall be written to the
  43202.  standard error, indicating the name of the file to which the output is
  43203.  being appended.  The name of the file shall be either nohup.out or
  43204.  $HOME/nohup.out.
  43205.  
  43206.  4.44.6.3  Output Files
  43207.  
  43208.  If the standard output is a terminal, all output written by the named
  43209.  _u_t_i_l_i_t_y to the standard output and standard error is appended to the file
  43210.  nohup.out, which is created if it does not already exist.
  43211.  
  43212.  
  43213.  4.44.7  Extended Description
  43214.  
  43215.  None.
  43216.  
  43217.  
  43218.  
  43219.  
  43220.  
  43221.                Copyright c 1991 IEEE.  All rights reserved.
  43222.       This is an unapproved IEEE Standards Draft, subject to change.
  43223.  
  43224.  
  43225.  
  43226.  
  43227.  
  43228.  4.44 nohup - Invoke a utility immune to hangups                       625
  43229.  
  43230.  
  43231.  
  43232.  
  43233.  
  43234.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  43235.  
  43236.  4.44.8  Exit Status
  43237.  
  43238.  The nohup utility shall exit with one of the following values:
  43239.  
  43240.     126   The utility specified by _u_t_i_l_i_t_y was found but could not be       1
  43241.           invoked.                                                          1
  43242.  
  43243.     127   An error occurred in the nohup utility or the utility specified   1
  43244.           by _u_t_i_l_i_t_y could not be found.                                    1
  43245.  
  43246.  Otherwise, the exit status of nohup shall be that of the utility
  43247.  specified by the _u_t_i_l_i_t_y operand.
  43248.  
  43249.  
  43250.  4.44.9  Consequences of Errors
  43251.  
  43252.  Default.
  43253.  
  43254.  BEGIN_RATIONALE
  43255.  
  43256.  
  43257.  4.44.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  43258.  
  43259.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  43260.  
  43261.  It is frequently desirable to apply nohup to pipelines or lists of
  43262.  commands.  This can be done by placing pipelines and command lists in a
  43263.  single file; this file can then be invoked as a utility, and the nohup
  43264.  applies to everything in the file.
  43265.  
  43266.  Alternatively, the following command can be used to apply nohup to a
  43267.  complex command:
  43268.  
  43269.        nohup sh -c '_c_o_m_p_l_e_x-_c_o_m_m_a_n_d-_l_i_n_e'
  43270.  
  43271.  The 4.3BSD version ignores SIGTERM and SIGHUP, and if ./nohup.out cannot
  43272.  be used, it fails instead of trying to use $HOME/nohup.out.
  43273.  
  43274.  The command, env, nohup, and xargs utilities have been specified to use
  43275.  exit code 127 if an error occurs so that applications can distinguish      1
  43276.  ``failure to find a utility'' from ``invoked utility exited with an error  1
  43277.  indication.''  The value 127 was chosen because it is not commonly used    1
  43278.  for other meanings; most utilities use small values for ``normal error
  43279.  conditions'' and the values above 128 can be confused with termination
  43280.  due to receipt of a signal.  The value 126 was chosen in a similar manner  1
  43281.  to indicate that the utility could be found, but not invoked.  Some        1
  43282.  scripts produce meaningful error messages differentiating the 126 and 127  1
  43283.  cases.  The distinction between exit codes 126 and 127 is based on         2
  43284.  KornShell practice that uses 127 when all attempts to _e_x_e_c the utility     2
  43285.  
  43286.  
  43287.                Copyright c 1991 IEEE.  All rights reserved.
  43288.       This is an unapproved IEEE Standards Draft, subject to change.
  43289.  
  43290.  
  43291.  
  43292.  
  43293.  
  43294.  626                                     4 Execution Environment Utilities
  43295.  
  43296.  
  43297.  
  43298.  
  43299.  
  43300.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  43301.  
  43302.  fail with [ENOENT], and uses 126 when any attempt to _e_x_e_c the utility      2
  43303.  fails for any other reason.                                                2
  43304.  
  43305.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  43306.  
  43307.  The csh utility has a built-in version of nohup that acts differently
  43308.  than this.
  43309.  
  43310.  The term _u_t_i_l_i_t_y is used, rather than _c_o_m_m_a_n_d, to highlight the fact that
  43311.  shell compound commands, pipelines, special built-ins, etc., cannot be
  43312.  used directly.  However, _u_t_i_l_i_t_y includes user application programs and
  43313.  shell scripts, not just the standard utilities.
  43314.  
  43315.  Historical versions of the nohup utility use default file creation
  43316.  semantics.  Some more recent versions use the permissions specified here
  43317.  as an added security precaution.
  43318.  
  43319.  Some historical implementations ignore SIGQUIT in addition to SIGHUP;
  43320.  others ignore SIGTERM.  An earlier draft allowed, but did not require,
  43321.  SIGQUIT to be ignored.  Several members of the balloting group objected,
  43322.  saying that nohup should only modify the handling of SIGHUP as required
  43323.  by this specification.
  43324.  
  43325.  END_RATIONALE
  43326.  
  43327.  
  43328.  
  43329.  4.45  od - Dump files in various formats
  43330.  
  43331.  
  43332.  4.45.1  Synopsis
  43333.  
  43334.  od  [-v] [-A _a_d_d_r_e_s_s__b_a_s_e] [-j _s_k_i_p] [-N _c_o_u_n_t] [-t _t_y_p_e__s_t_r_i_n_g] ...
  43335.      [_f_i_l_e ...]
  43336.  
  43337.  
  43338.  4.45.2  Description
  43339.  
  43340.  The od utility shall write the contents of its input files to standard
  43341.  output in a user-specified format.
  43342.  
  43343.  
  43344.  4.45.3  Options
  43345.  
  43346.  The od utility shall conform to the utility argument syntax guidelines
  43347.  described in 2.10.2, except that the order of presentation of the -t
  43348.  options is significant.
  43349.  
  43350.  
  43351.  
  43352.  
  43353.                Copyright c 1991 IEEE.  All rights reserved.
  43354.       This is an unapproved IEEE Standards Draft, subject to change.
  43355.  
  43356.  
  43357.  
  43358.  
  43359.  
  43360.  4.45 od - Dump files in various formats                               627
  43361.  
  43362.  
  43363.  
  43364.  
  43365.  
  43366.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  43367.  
  43368.  The following options shall be supported by the implementation:
  43369.  
  43370.     -A _a_d_d_r_e_s_s__b_a_s_e
  43371.                 Specify the input offset base (see 4.45.7).  The
  43372.                 _a_d_d_r_e_s_s__b_a_s_e option argument shall be a character.  The
  43373.                 characters d, o, and x shall specify that the offset base
  43374.                 shall be written in decimal, octal, or hexadecimal,
  43375.                 respectively.  The character n shall specify that the
  43376.                 offset shall not be written.
  43377.  
  43378.     -j _s_k_i_p     Jump over _s_k_i_p bytes from the beginning of the input.  The
  43379.                 od utility shall read or seek past the first _s_k_i_p bytes in
  43380.                 the concatenated input files.  If the combined input is
  43381.                 not at least _s_k_i_p bytes long, the od utility shall write a
  43382.                 diagnostic message to standard error and exit with a
  43383.                 nonzero exit status.
  43384.  
  43385.                 By default, the _s_k_i_p option-argument shall be interpreted
  43386.                 as a decimal number.  With a leading 0x or 0X, the offset
  43387.                 shall be interpreted as a hexadecimal number; otherwise,
  43388.                 with a leading 0, the offset shall be interpreted as an
  43389.                 octal number.  Appending the character b, k, or m to
  43390.                 offset shall cause it to be interpreted as a multiple of
  43391.                 512, 1024, or 1048576 bytes, respectively.
  43392.  
  43393.     -N _c_o_u_n_t    Format no more than _c_o_u_n_t bytes of input.  By default,
  43394.                 _c_o_u_n_t shall be interpreted as a decimal number.  With a
  43395.                 leading 0x or 0X, _c_o_u_n_t shall be interpreted as a
  43396.                 hexadecimal number; otherwise, with a leading 0, it shall
  43397.                 be interpreted as an octal number.  If _c_o_u_n_t bytes of
  43398.                 input (after successfully skipping, if -j _s_k_i_p is
  43399.                 specified) are not available, it shall not be considered
  43400.                 an error; the od utility shall format the input that is
  43401.                 available.
  43402.  
  43403.     -t _t_y_p_e__s_t_r_i_n_g
  43404.                 Specify one or more output types (see 4.45.7).  The
  43405.                 _t_y_p_e__s_t_r_i_n_g option-argument shall be a string specifying
  43406.                 the types to be used when writing the input data.  The
  43407.                 string shall consist of the type specification characters
  43408.                 a, c, d, f, o, u, and x, specifying named character,
  43409.                 character, signed decimal, floating point, octal, unsigned
  43410.                 decimal, and hexadecimal, respectively.  The type
  43411.                 specification characters d, f, o, u, and x can be followed
  43412.                 by an optional unsigned decimal integer that specifies the
  43413.                 number of bytes to be transformed by each instance of the
  43414.                 output type.  The type specification character f can be
  43415.                 followed by an optional F, D, or L indicating that the
  43416.                 conversion should be applied to an item of type _f_l_o_a_t,
  43417.  
  43418.  
  43419.                Copyright c 1991 IEEE.  All rights reserved.
  43420.       This is an unapproved IEEE Standards Draft, subject to change.
  43421.  
  43422.  
  43423.  
  43424.  
  43425.  
  43426.  628                                     4 Execution Environment Utilities
  43427.  
  43428.  
  43429.  
  43430.  
  43431.  
  43432.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  43433.  
  43434.                 _d_o_u_b_l_e, or _l_o_n_g _d_o_u_b_l_e, respectively.  The type
  43435.                 specification characters d, o, u, and x can be followed by
  43436.                 an optional C, S, I, or L indicating that the conversion
  43437.                 should be applied to an item of type _c_h_a_r, _s_h_o_r_t, _i_n_t, or
  43438.                 _l_o_n_g, respectively.  Multiple types can be concatenated
  43439.                 within the same _t_y_p_e__s_t_r_i_n_g and multiple -t options can be
  43440.                 specified.  Output lines shall be written for each type
  43441.                 specified in the order in which the type specification
  43442.                 characters are specified.
  43443.  
  43444.     -v          Write all input data.  Without the -v option, any number
  43445.                 of groups of output lines, which would be identical to the
  43446.                 immediately preceding group of output lines (except for
  43447.                 the byte offsets), shall be replaced with a line
  43448.                 containing only an asterisk (*).
  43449.  
  43450.  
  43451.  4.45.4  Operands
  43452.  
  43453.  The following operands shall be supported by the implementation:
  43454.  
  43455.     _f_i_l_e        A pathname of a file to be written.  If no file operands
  43456.                 are specified, the standard input shall be used.  The
  43457.                 results are unspecified if the first character of _f_i_l_e is
  43458.                 a plus-sign (+) or the first character of the first file
  43459.                 operand is numeric, unless at least one of the -A, -j, -N,
  43460.                 or -t options is specified.
  43461.  
  43462.  
  43463.  4.45.5  External Influences
  43464.  
  43465.  
  43466.  4.45.5.1  Standard Input
  43467.  
  43468.  The standard input shall be used only if no _f_i_l_e operands are specified.
  43469.  See Input Files.
  43470.  
  43471.  4.45.5.2  Input Files
  43472.  
  43473.  The input files can be any file type.
  43474.  
  43475.  
  43476.  4.45.5.3  Environment Variables
  43477.  
  43478.  The following environment variables shall affect the execution of od:
  43479.  
  43480.     LANG               This variable shall determine the locale to use for
  43481.                        the locale categories when both LC_ALL and the
  43482.                        corresponding environment variable (beginning with
  43483.                        LC_) do not specify a locale.  See 2.6.
  43484.  
  43485.                Copyright c 1991 IEEE.  All rights reserved.
  43486.       This is an unapproved IEEE Standards Draft, subject to change.
  43487.  
  43488.  
  43489.  
  43490.  
  43491.  
  43492.  4.45 od - Dump files in various formats                               629
  43493.  
  43494.  
  43495.  
  43496.  
  43497.  
  43498.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  43499.  
  43500.     LC_ALL             This variable shall determine the locale to be used
  43501.                        to override any values for locale categories
  43502.                        specified by the settings of LANG or any
  43503.                        environment variables beginning with LC_.
  43504.  
  43505.     LC_CTYPE           This variable shall determine the locale for the
  43506.                        interpretation of sequences of bytes of text data
  43507.                        as characters (e.g., single- versus multibyte
  43508.                        characters in arguments and input files).
  43509.  
  43510.     LC_MESSAGES        This variable shall determine the language in which
  43511.                        messages should be written.
  43512.  
  43513.     LC_NUMERIC         This variable shall determine the locale for
  43514.                        selecting the radix character used when writing
  43515.                        floating-point formatted output.
  43516.  
  43517.  
  43518.  4.45.5.4  Asynchronous Events
  43519.  
  43520.  Default.
  43521.  
  43522.  
  43523.  4.45.6  External Effects
  43524.  
  43525.  4.45.6.1  Standard Output
  43526.  
  43527.  See 4.45.7.
  43528.  
  43529.  
  43530.  4.45.6.2  Standard Error
  43531.  
  43532.  Used only for diagnostic messages.                                         2
  43533.  
  43534.  4.45.6.3  Output Files
  43535.  
  43536.  None.
  43537.  
  43538.  
  43539.  4.45.7  Extended Description
  43540.  
  43541.  The od utility shall copy sequentially each input file to standard
  43542.  output, transforming the input data according to the output types
  43543.  specified by the -t option(s).  If no output type is specified, the
  43544.  default output shall be as if -t o2 had been specified.
  43545.  
  43546.  The number of bytes transformed by the output type specifier c may be
  43547.  variable depending on the LC_CTYPE category.
  43548.  
  43549.  
  43550.  
  43551.                Copyright c 1991 IEEE.  All rights reserved.
  43552.       This is an unapproved IEEE Standards Draft, subject to change.
  43553.  
  43554.  
  43555.  
  43556.  
  43557.  
  43558.  630                                     4 Execution Environment Utilities
  43559.  
  43560.  
  43561.  
  43562.  
  43563.  
  43564.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  43565.  
  43566.  The default number of bytes transformed by output type specifiers d, f,
  43567.  o, u, and x shall correspond to the various C-language types as follows.   1
  43568.  If the c89 compiler is present on the system, these specifiers shall       1
  43569.  correspond to the sizes used by default in that compiler.  Otherwise,      1
  43570.  these sizes are implementation defined.                                    1
  43571.  
  43572.      - For the type specifier characters d, o, u, and x, the default
  43573.        number of bytes shall correspond to the size of the underlying
  43574.        implementation's basic integral data type.  For these specifier
  43575.        characters, the implementation shall support values of the optional
  43576.        number of bytes to be converted corresponding to the number of
  43577.        bytes in the C-language types _c_h_a_r, _s_h_o_r_t, _i_n_t, and _l_o_n_g. These
  43578.        numbers can also be specified by an application as the characters
  43579.        C, S, I, and L, respectively.  The byte order used when
  43580.        interpreting numeric values is implementation defined, but shall
  43581.        correspond to the order in which a constant of the corresponding
  43582.        type is stored in memory on the system.
  43583.  
  43584.      - For the type specifier character f, the default number of bytes
  43585.        shall correspond to the number of bytes in the underlying
  43586.        implementation's basic double precision floating point data type.
  43587.        The implementation shall support values of the optional number of
  43588.        bytes to be converted corresponding to the number of bytes in the
  43589.        C-language types _f_l_o_a_t, _d_o_u_b_l_e, and _l_o_n_g _d_o_u_b_l_e. These numbers can
  43590.        also be specified by an application as the characters F, D, and L,
  43591.        respectively.
  43592.  
  43593.  The type specifier character a specifies that bytes shall be interpreted
  43594.  as named characters from the International Reference Version (IRV) of
  43595.  ISO/IEC 646 {1}.  Only the least significant seven bits of each byte
  43596.  shall be used for this type specification.  Bytes with the values listed
  43597.  in Table 4-8 shall be written using the corresponding names for those
  43598.  characters.
  43599.  
  43600.  The type specifier character c specifies that bytes shall be interpreted
  43601.  as characters specified by the current setting of the LC_CTYPE locale
  43602.  category.  Characters listed in Table 2-15 (see 2.12) shall be written as
  43603.  the corresponding escape sequences, except that backslash shall be
  43604.  written as a single backslash and a NUL shall be written as \0.  Other
  43605.  nonprintable characters shall be written as one three-digit octal number
  43606.  for each byte in the character.  If the size of a byte on the system is    1
  43607.  greater than nine bits, the format used for nonprintable characters is     1
  43608.  implementation-defined.  Printable multibyte characters shall be written   1
  43609.  in the area corresponding to the first byte of the character; the two-
  43610.  character sequence ** shall be written in the area corresponding to each
  43611.  remaining byte in the character, as an indication that the character is
  43612.  continued.
  43613.  
  43614.  
  43615.  
  43616.  
  43617.                Copyright c 1991 IEEE.  All rights reserved.
  43618.       This is an unapproved IEEE Standards Draft, subject to change.
  43619.  
  43620.  
  43621.  
  43622.  
  43623.  
  43624.  4.45 od - Dump files in various formats                               631
  43625.  
  43626.  
  43627.  
  43628.  
  43629.  
  43630.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  43631.  
  43632.  
  43633.                      Table 4-8  -  od Named Characters
  43634.  __________________________________________________________________________________________________________________________________________________
  43635.       Value   Name   Value   Name   Value     Name      Value   Name
  43636.       _____   ____   _____   ____   _____   _________   _____   ____
  43637.  
  43638.       \000    nul    \001    soh    \002    stx         \003    etx
  43639.       \004    eot    \005    enq    \006    ack     *   \007    bel
  43640.       \010    bs     \011    ht     \012    lf or nl    \013    vt
  43641.       \014    ff     \015    cr     \016    so          \017    si
  43642.       \020    dle    \021    dc1    \022    dc2         \023    dc3
  43643.       \024    dc4    \025    nak    \026    syn         \027    etb
  43644.       \030    can    \031    em     \032    sub         \033    esc
  43645.       \034    fs     \035    gs     \036    rs          \037    us
  43646.       \040    sp     \177    del
  43647.  __________________________________________________________________________________________________________________________________________________
  43648.  NOTE:  The \012 value may be written either as lf or nl.
  43649.  
  43650.  
  43651.  
  43652.  The input data shall be manipulated in blocks, where a block is defined
  43653.  as a multiple of the least common multiple of the number of bytes
  43654.  transformed by the specified output types.  If the least common multiple
  43655.  is greater than 16, the results are unspecified.  Each input block shall
  43656.  be written as transformed by each output type, one per written line, in
  43657.  the order that the output types were specified.  If the input block size
  43658.  is larger than the number of bytes transformed by the output type, the
  43659.  output type shall sequentially transform the parts of the input block and
  43660.  the output from each of the transformations shall be separated by one or
  43661.  more <blank>s.
  43662.  
  43663.  If, as a result of the specification of the -N option or end-of-file
  43664.  being reached on the last input file, input data only partially satisfies
  43665.  an output type, the input shall be extended sufficiently with null bytes
  43666.  to write the last byte of the input.
  43667.  
  43668.  Unless -A n is specified, the first output line produced for each input
  43669.  block shall be preceded by the input offset, cumulative across input
  43670.  files, of the next byte to be written.  The format of the input offset is
  43671.  unspecified; however, it shall not contain any <blank>s, shall start at
  43672.  the first character of the output line, and shall be followed by one or
  43673.  more <blank>s.  In addition, the offset of the byte following the last
  43674.  byte written shall be written after all the input data has been
  43675.  processed, but shall not be followed by any <blank>s.
  43676.  
  43677.  If no -A option is specified, the input offset base is unspecified.
  43678.  
  43679.  
  43680.  
  43681.  
  43682.  
  43683.                Copyright c 1991 IEEE.  All rights reserved.
  43684.       This is an unapproved IEEE Standards Draft, subject to change.
  43685.  
  43686.  
  43687.  
  43688.  
  43689.  
  43690.  632                                     4 Execution Environment Utilities
  43691.  
  43692.  
  43693.  
  43694.  
  43695.  
  43696.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  43697.  
  43698.  4.45.8  Exit Status
  43699.  
  43700.  The od utility shall exit with one of the following values:
  43701.  
  43702.      0    All input files were processed successfully.
  43703.  
  43704.     >0    An error occurred.
  43705.  
  43706.  
  43707.  4.45.9  Consequences of Errors
  43708.  
  43709.  Default.
  43710.  
  43711.  BEGIN_RATIONALE
  43712.  
  43713.  
  43714.  4.45.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  43715.  
  43716.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  43717.  
  43718.  If a file containing 128 bytes with decimal values zero through 127, in
  43719.  increasing order, is supplied as standard input to the command:
  43720.  
  43721.        od -A d -t a
  43722.  
  43723.  on an implementation using an input block size of 16 bytes, the standard
  43724.  output, independent of the current locale setting, would be similar to:
  43725.  
  43726.      0000000 nul soh stx etx eot enq ack bel  bs  ht  nl  vt  ff  cr  so  si
  43727.      0000016 dle dc1 dc2 dc3 dc4 nak syn etb can  em sub esc  fs  gs  rs  us
  43728.      0000032  sp   !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /
  43729.      0000048   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?
  43730.      0000064   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O
  43731.      0000080   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _
  43732.      0000096   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o
  43733.      0000112   p   q   r   s   t   u   v   w   x   y   z   {   |   }     del
  43734.      0000128                                                           ~
  43735.  
  43736.  Note that this standard allows nl or lf to be used as the name for the
  43737.  ISO/IEC 646 {1} IRV character with decimal value 10.  The IRV names this
  43738.  character lf (line feed), but traditional implementations on which
  43739.  POSIX.2 are based have referred to this character as newline (nl) and the
  43740.  POSIX Locale character set symbolic name for the corresponding character
  43741.  is <newline>.
  43742.  
  43743.  The command:
  43744.  
  43745.        od -A o -t o2x2x -n 18
  43746.  
  43747.  
  43748.  
  43749.                Copyright c 1991 IEEE.  All rights reserved.
  43750.       This is an unapproved IEEE Standards Draft, subject to change.
  43751.  
  43752.  
  43753.  
  43754.  
  43755.  
  43756.  4.45 od - Dump files in various formats                               633
  43757.  
  43758.  
  43759.  
  43760.  
  43761.  
  43762.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  43763.  
  43764.  on a system with 32-bit words and an implementation using an input block
  43765.  size of 16 bytes could write 18 bytes in approximately the following
  43766.  format:
  43767.  
  43768.        0000000 032056 031440 041123 042040 052516 044530 020043 031464
  43769.                  342e   3320   4253   4420   554e   4958   2023   3334
  43770.                     342e3320      42534420      554e4958      20233334
  43771.        0000020 032472
  43772.                  353a
  43773.                     353a0000
  43774.        0000022
  43775.  
  43776.  The command:
  43777.  
  43778.        od -A d -t f -t o4 -t x4 -n 24 -j 0x15
  43779.  
  43780.  on a system with 64-bit doubles (for example, the IEEE Std 754 double
  43781.  precision floating point format) would skip 21 bytes of input data and
  43782.  then write 24 bytes in approximately the following format:
  43783.  
  43784.        0000000    1.00000000000000e+00    1.57350000000000e+01
  43785.                07774000000 00000000000 10013674121 35341217270
  43786.                   3ff00000    00000000    402f7851    eb851eb8
  43787.        0000016    1.40668230000000e+02
  43788.                10030312542 04370303230
  43789.                   40619562    23e18698
  43790.        0000024
  43791.  
  43792.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  43793.  
  43794.  The od utility has gone through several names in previous drafts,
  43795.  including hd, xd, and most recently hexdump.  There were several
  43796.  objections to all of these based on the following reasons:
  43797.  
  43798.      - The hd and xd names conflicted with existing utilities that behaved
  43799.        differently.
  43800.  
  43801.      - The hexdump description was much more complex than needed for a
  43802.        simple dump utility.
  43803.  
  43804.      - The od utility has been available on all traditional
  43805.        implementations and there was no need to create a new name for a
  43806.        utility so similar to the existing od utility.
  43807.  
  43808.  The original reasons for not standardizing historical od were also fairly
  43809.  widespread.  Those reasons are given below along with rationale
  43810.  explaining why the developers of this standard believe that this version
  43811.  does not suffer from the indicated problem:
  43812.  
  43813.  
  43814.  
  43815.                Copyright c 1991 IEEE.  All rights reserved.
  43816.       This is an unapproved IEEE Standards Draft, subject to change.
  43817.  
  43818.  
  43819.  
  43820.  
  43821.  
  43822.  634                                     4 Execution Environment Utilities
  43823.  
  43824.  
  43825.  
  43826.  
  43827.  
  43828.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  43829.  
  43830.      - The BSD and System V versions of od have diverged and the
  43831.        intersection of features provided by both does not meet the needs
  43832.        of the user community.  In fact, the System V version only provides
  43833.        a mechanism for dumping octal bytes and _s_h_o_r_ts, signed and unsigned
  43834.        decimal _s_h_o_r_ts, hexadecimal _s_h_o_r_ts, and ASCII characters.  BSD
  43835.        added the ability to dump _f_l_o_a_ts, _d_o_u_b_l_es, named ASCII characters,
  43836.        and octal, signed decimal, unsigned decimal, and hexadecimal _l_o_n_gs.
  43837.        The version presented here provides more normalized forms for
  43838.        dumping bytes, _s_h_o_r_ts, _i_n_ts, and _l_o_n_gs in octal, signed decimal,
  43839.        unsigned decimal, and hexadecimal; _f_l_o_a_t, _d_o_u_b_l_e, and _l_o_n_g _d_o_u_b_l_e;
  43840.        and named ASCII as well as current locale characters.
  43841.  
  43842.      - It would not be possible to come up with a compatible superset of
  43843.        the BSD and System V flags that met the requirements of this
  43844.        standard.  The historical default od output is the specified
  43845.        default output of this utility.  None of the option letters chosen
  43846.        for this version of od conflict with any of the options to
  43847.        historical versions of od.
  43848.  
  43849.      - On systems with different sizes for _s_h_o_r_t, _i_n_t, and _l_o_n_g, there was
  43850.        no way to ask for dumps of _i_n_ts, even in the BSD version.  The way
  43851.        options are named, there is no easy way to extend the namespace for
  43852.        these problems.  This is why the -t option was added with type
  43853.        specifiers more closely matched to the _p_r_i_n_t_f() formats used in the
  43854.        rest of this standard and the optional field sizes were added to
  43855.        the d, f, o, u, and x type specifiers.  It is also one of the
  43856.        reasons why the historical practice was not mandated as a required
  43857.        obsolescent form of od.  (Although the old versions of od are not
  43858.        listed as an obsolescent form, implementations are urged to
  43859.        continue to recognize the old forms they have recognized for a few
  43860.        years.)  The a, c, f, o, and x types match the meaning of the
  43861.        corresponding format characters in the historical implementations
  43862.        of od except for the default sizes of the fields converted.  The d
  43863.        format is signed in this specification to match the _p_r_i_n_t_f()
  43864.        notation.  (Historical versions of od used d as a synonym for u in
  43865.        this version.  The System V implementation uses s for signed
  43866.        decimal; BSD uses i for signed decimal and s for null terminated
  43867.        strings.)  Other than d and u, all of the type specifiers match
  43868.        format characters in the historical BSD version of od.
  43869.  
  43870.        The sizes of the C-language types _c_h_a_r, _s_h_o_r_t, _i_n_t, _l_o_n_g, _f_l_o_a_t,
  43871.        _d_o_u_b_l_e, and _l_o_n_g _d_o_u_b_l_e are used even though it is recognized that
  43872.        there may be zero or more than one compiler for the C language on
  43873.        an implementation and that they may use different sizes for some of
  43874.        these types.  [For example, one compiler might use 2-byte _s_h_o_r_t_s,
  43875.        2-byte _i_n_t_s, and 4-byte _l_o_n_g_s while another compiler (or an option
  43876.        to the same compiler) uses 2-byte _s_h_o_r_t_s, 4-byte _i_n_t_s, and 4-byte
  43877.        _l_o_n_g_s.] Nonetheless, there has to be a basic size known by the
  43878.        implementation for these types, corresponding to the values
  43879.  
  43880.  
  43881.                Copyright c 1991 IEEE.  All rights reserved.
  43882.       This is an unapproved IEEE Standards Draft, subject to change.
  43883.  
  43884.  
  43885.  
  43886.  
  43887.  
  43888.  4.45 od - Dump files in various formats                               635
  43889.  
  43890.  
  43891.  
  43892.  
  43893.  
  43894.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  43895.  
  43896.        reported by invocations of the getconf utility (see 4.26) when
  43897.        called with _s_y_s_t_e_m__v_a_r operands UCHAR_MAX, USHORT_MAX, UINT_MAX,
  43898.        and ULONG_MAX for the types _c_h_a_r, _s_h_o_r_t, _i_n_t, and _l_o_n_g,
  43899.        respectively.  There are similar constants required by the
  43900.        C Standard {7}, but not required by POSIX.1 {8} or POSIX.2.  They
  43901.        are FLT_MANT_DIG, DBL_MANT_DIG, and LDBL_MANT_DIG for the types
  43902.        _f_l_o_a_t, _d_o_u_b_l_e, and _l_o_n_g _d_o_u_b_l_e, respectively.  If the optional c89
  43903.        utility (see A.1) is provided by the implementation and used as
  43904.        specified by this standard, these are the sizes that would be
  43905.        provided.  If an option is used that specifies different sizes for
  43906.        these types, there is no guarantee that the od utility will be able
  43907.        to correctly interpret binary data output by such a program.
  43908.  
  43909.        POSIX.2 requires that the numeric values of these lengths be
  43910.        recognized by the od utility and that symbolic forms also be
  43911.        recognized.  Thus a portable application can always look at an
  43912.        array of _u_n_s_i_g_n_e_d _l_o_n_g data elements using od -t uL.
  43913.  
  43914.      - The method of specifying the format for the address field based on
  43915.        specifying a starting offset in a file unnecessarily tied the two
  43916.        together.  The -A option now specifies the address base and the -S
  43917.        option specifies a starting offset.  Applications are warned not to
  43918.        use filenames starting with + or a first operand starting with a
  43919.        numeric character so that the old functionality can be maintained
  43920.        by implementations, unless they specify one of the new options
  43921.        specified by POSIX.2.  To guarantee that one of these filenames
  43922.        will always be interpreted as a file name, an application could
  43923.        always specify the address base format with the -A option.
  43924.  
  43925.      - It would be hard to break the dependence on US ASCII to get an
  43926.        internationalized utility.  It does not seem to be any harder for
  43927.        od to dump characters in the current locale than it is for the ed
  43928.        or sed l commands.  The c type specifier does this with no problem
  43929.        and is completely compatible with the historical implementations of
  43930.        the c format character when the current locale uses a superset of
  43931.        ISO/IEC 646 {1} as a code set.  The a type specifier (from the BSD
  43932.        a format character) was left as a portable means to dump ASCII [or
  43933.        more correctly ISO/IEC 646 {1} (IRV)] so that headers produced by
  43934.        pax could be deciphered even on systems that do not use ISO/IEC 646
  43935.        {1} as a subset of their base code set.
  43936.  
  43937.  The use of ** as an indication of continuation of a multibyte character
  43938.  in c specifier output was chosen based on seeing an implementation that
  43939.  uses this method.  The continuation bytes have to be marked in a way that
  43940.  will not be ambiguous with another single- or multibyte character.
  43941.  
  43942.  An earlier draft used -S and -n, respectively, for the -j and -N options
  43943.  in this draft.  These were changed to avoid conflicts with historical
  43944.  implementations.
  43945.  
  43946.  
  43947.                Copyright c 1991 IEEE.  All rights reserved.
  43948.       This is an unapproved IEEE Standards Draft, subject to change.
  43949.  
  43950.  
  43951.  
  43952.  
  43953.  
  43954.  636                                     4 Execution Environment Utilities
  43955.  
  43956.  
  43957.  
  43958.  
  43959.  
  43960.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  43961.  
  43962.  END_RATIONALE
  43963.  
  43964.  
  43965.  
  43966.  4.46  paste - Merge corresponding or subsequent lines of files
  43967.  
  43968.  
  43969.  4.46.1  Synopsis
  43970.  
  43971.  paste  [-s] [-d _l_i_s_t] _f_i_l_e ...
  43972.  
  43973.  
  43974.  4.46.2  Description
  43975.  
  43976.  The paste utility shall concatenate the corresponding lines of the given
  43977.  input files, and write the resulting lines to standard output.
  43978.  
  43979.  The default operation of paste shall concatenate the corresponding lines
  43980.  of the input files.  The <newline> character of every line except the
  43981.  line from the last input file shall be replaced with a <tab> character.
  43982.  
  43983.  If an end-of-file condition is detected on one or more input files, but
  43984.  not all input files, paste shall behave as though empty lines were read
  43985.  from the file(s) on which end-of-file was detected, unless the -s option
  43986.  is specified.
  43987.  
  43988.  
  43989.  4.46.3  Options
  43990.  
  43991.  The paste utility shall conform to the utility argument syntax guidelines
  43992.  described in 2.10.2.
  43993.  
  43994.  The following options shall be supported by the implementation:
  43995.  
  43996.     -d _l_i_s_t     Unless a backslash character appears in _l_i_s_t, each          2
  43997.                 character in _l_i_s_t is an element specifying a delimiter      2
  43998.                 character.  If a backslash character appears in _l_i_s_t, the   2
  43999.                 backslash character and one or more characters following    2
  44000.                 it are an element specifying a delimiter character as       2
  44001.                 described below.  These elements specify one or more        2
  44002.                 delimiters to use, instead of the default <tab>, to         2
  44003.                 replace the <newline> character of the input lines.  The    2
  44004.                 elements in _l_i_s_t shall be used circularly; i.e., when the   2
  44005.                 list is exhausted the first element from the list shall be  2
  44006.                 re-used.  When the -s option is specified:
  44007.  
  44008.                  - The last <newline> character in a file shall not be
  44009.                    modified.
  44010.  
  44011.  
  44012.  
  44013.                Copyright c 1991 IEEE.  All rights reserved.
  44014.       This is an unapproved IEEE Standards Draft, subject to change.
  44015.  
  44016.  
  44017.  
  44018.  
  44019.  
  44020.  4.46 paste - Merge corresponding or subsequent lines of files         637
  44021.  
  44022.  
  44023.  
  44024.  
  44025.  
  44026.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  44027.  
  44028.                  - The delimiter shall be reset to the first element of
  44029.                    list after each _f_i_l_e operand is processed.
  44030.  
  44031.                 When the -s option is not specified:
  44032.  
  44033.                  - The <newline> characters in the file specified by the
  44034.                    last _f_i_l_e operand shall not be modified.
  44035.  
  44036.                  - The delimiter shall be reset to the first element of
  44037.                    list each time a line is processed from each file.
  44038.  
  44039.                 If a backslash character appears in _l_i_s_t, it and the
  44040.                 character following it shall be used to represent the
  44041.                 following delimiter characters:
  44042.  
  44043.                    \n    <newline> character
  44044.  
  44045.                    \t    <tab> character
  44046.  
  44047.                    \\    backslash character
  44048.  
  44049.                    \0    Empty string (not a null character).  If \0 is
  44050.                          immediately followed by the character x, the
  44051.                          character X, or any character defined by the
  44052.                          LC_CTYPE digit keyword (see 2.5.2.1), the results
  44053.                          are unspecified.
  44054.  
  44055.                 If any other characters follow the backslash, the results
  44056.                 are unspecified.
  44057.  
  44058.     -s          Concatenate all of the lines of each separate input file
  44059.                 in command line order.  The <newline> character of every
  44060.                 line except the last line in each input file shall be
  44061.                 replaced with the <tab> character, unless otherwise
  44062.                 specified by the -d option.
  44063.  
  44064.  
  44065.  4.46.4  Operands
  44066.  
  44067.  The following operand shall be supported by the implementation:
  44068.  
  44069.     _f_i_l_e        A pathname of an input file.  If - is specified for one or
  44070.                 more of the _f_i_l_es, the standard input shall be used; the
  44071.                 standard input shall be read one line at a time,
  44072.                 circularly, for each instance of -.  Implementations shall
  44073.                 support pasting of at least 12 _f_i_l_e operands.
  44074.  
  44075.  
  44076.  
  44077.  
  44078.  
  44079.                Copyright c 1991 IEEE.  All rights reserved.
  44080.       This is an unapproved IEEE Standards Draft, subject to change.
  44081.  
  44082.  
  44083.  
  44084.  
  44085.  
  44086.  638                                     4 Execution Environment Utilities
  44087.  
  44088.  
  44089.  
  44090.  
  44091.  
  44092.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  44093.  
  44094.  4.46.5  External Influences
  44095.  
  44096.  
  44097.  4.46.5.1  Standard Input
  44098.  
  44099.  The standard input shall be used only if one or more _f_i_l_e operands is -.
  44100.  See Input Files.
  44101.  
  44102.  4.46.5.2  Input Files
  44103.  
  44104.  The input files shall be text files, except that line lengths shall be
  44105.  unlimited.
  44106.  
  44107.  
  44108.  4.46.5.3  Environment Variables
  44109.  
  44110.  The following environment variables shall affect the execution of paste:
  44111.  
  44112.     LANG               This variable shall determine the locale to use for
  44113.                        the locale categories when both LC_ALL and the
  44114.                        corresponding environment variable (beginning with
  44115.                        LC_) do not specify a locale.  See 2.6.
  44116.  
  44117.     LC_ALL             This variable shall determine the locale to be used
  44118.                        to override any values for locale categories
  44119.                        specified by the settings of LANG or any
  44120.                        environment variables beginning with LC_.
  44121.  
  44122.     LC_CTYPE           This variable shall determine the locale for the
  44123.                        interpretation of sequences of bytes of text data
  44124.                        as characters (e.g., single- versus multibyte
  44125.                        characters in arguments and input files).
  44126.  
  44127.     LC_MESSAGES        This variable shall determine the language in which
  44128.                        messages should be written.
  44129.  
  44130.  4.46.5.4  Asynchronous Events
  44131.  
  44132.  Default.
  44133.  
  44134.  
  44135.  4.46.6  External Effects
  44136.  
  44137.  
  44138.  
  44139.  
  44140.  
  44141.  
  44142.  
  44143.  
  44144.  
  44145.                Copyright c 1991 IEEE.  All rights reserved.
  44146.       This is an unapproved IEEE Standards Draft, subject to change.
  44147.  
  44148.  
  44149.  
  44150.  
  44151.  
  44152.  4.46 paste - Merge corresponding or subsequent lines of files         639
  44153.  
  44154.  
  44155.  
  44156.  
  44157.  
  44158.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  44159.  
  44160.  4.46.6.1  Standard Output
  44161.  
  44162.  Concatenated lines of input files shall be separated by the <tab>
  44163.  character (or other characters under the control of the -d option) and
  44164.  terminated by a <newline> character.
  44165.  
  44166.  
  44167.  4.46.6.2  Standard Error
  44168.  
  44169.  Used only for diagnostic messages.
  44170.  
  44171.  4.46.6.3  Output Files
  44172.  
  44173.  None.
  44174.  
  44175.  
  44176.  4.46.7  Extended Description
  44177.  
  44178.  None.
  44179.  
  44180.  
  44181.  4.46.8  Exit Status
  44182.  
  44183.  The paste utility shall exit with one of the following values:
  44184.  
  44185.      0    Successful completion.
  44186.  
  44187.     >0    An error occurred.
  44188.  
  44189.  
  44190.  4.46.9  Consequences of Errors
  44191.  
  44192.  If one or more input files cannot be opened when the -s option is not
  44193.  specified, a diagnostic message shall be written to standard error, but
  44194.  no output shall be written to standard output.  If the -s option is
  44195.  specified, the paste utility shall provide the default behavior described
  44196.  in 2.11.9.
  44197.  
  44198.  BEGIN_RATIONALE
  44199.  
  44200.  
  44201.  4.46.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  44202.  
  44203.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  44204.  
  44205.  When the escape sequences of the _l_i_s_t option-argument are used in a shell
  44206.  script, they must be quoted; otherwise, the shell treats the \ as a
  44207.  special character.
  44208.  
  44209.  
  44210.  
  44211.                Copyright c 1991 IEEE.  All rights reserved.
  44212.       This is an unapproved IEEE Standards Draft, subject to change.
  44213.  
  44214.  
  44215.  
  44216.  
  44217.  
  44218.  640                                     4 Execution Environment Utilities
  44219.  
  44220.  
  44221.  
  44222.  
  44223.  
  44224.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  44225.  
  44226.  Write out a directory in four columns:
  44227.  
  44228.        ls | paste - - - -
  44229.  
  44230.  Combine pairs of lines from a file into single lines:
  44231.  
  44232.        paste -s -d "\t\n" file
  44233.  
  44234.  Portable applications should only use the specific backslash escaped
  44235.  delimiters presented in this standard.  Historical implementations treat
  44236.  \x, where x is not in this list, as x, but future implementations are
  44237.  free to expand this list to recognize other common escapes similar to
  44238.  those accepted by printf and other standard utilities.
  44239.  
  44240.  Most of the standard utilities work on text files.  The cut utility can
  44241.  be used to turn files with arbitrary line lengths into a set of text
  44242.  files containing the same data.  The paste utility can be used to create
  44243.  (or recreate) files with arbitrary line lengths.  For example, if file
  44244.  contains long lines:
  44245.  
  44246.        cut -b 1-500 -n file > file1
  44247.        cut -b 501- -n file > file2
  44248.  
  44249.  creates file1 (a text file) with lines no longer than 500 bytes (plus the
  44250.  <newline> character) and file2 that contains the remainder of the data
  44251.  from file.  (Note that file2 will not be a text file if there are lines
  44252.  in file that are longer than 500 + {LINE_MAX} bytes.)  The original file
  44253.  can be recreated from file1 and file2 using the command:
  44254.  
  44255.        paste -d "\0" file1 file2 > file
  44256.  
  44257.  The commands                                                               2
  44258.  
  44259.        paste -d "\0" ...                                                    2
  44260.        paste -d "" ...                                                      2
  44261.  
  44262.  are not necessarily equivalent; the latter is not specified by POSIX.2     2
  44263.  and may result in an error.  The construct \0 is used to mean ``no         2
  44264.  separator'' because historical versions of paste did not follow the        2
  44265.  syntax guidelines and the command                                          2
  44266.  
  44267.        paste -d"" ...                                                       2
  44268.  
  44269.  could not be handled properly by _g_e_t_o_p_t().                                 2
  44270.  
  44271.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  44272.  
  44273.  Because most of the standards utilities work on text files, cut and paste
  44274.  are required to process lines of arbitrary length as a means of
  44275.  
  44276.  
  44277.                Copyright c 1991 IEEE.  All rights reserved.
  44278.       This is an unapproved IEEE Standards Draft, subject to change.
  44279.  
  44280.  
  44281.  
  44282.  
  44283.  
  44284.  4.46 paste - Merge corresponding or subsequent lines of files         641
  44285.  
  44286.  
  44287.  
  44288.  
  44289.  
  44290.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  44291.  
  44292.  converting long lines from arbitrary sources into text files and
  44293.  converting processed text files back into files with arbitrary line
  44294.  lengths to interface with those applications that require long lines as
  44295.  input.
  44296.  
  44297.  END_RATIONALE
  44298.  
  44299.  
  44300.  
  44301.  4.47  pathchk - Check pathnames
  44302.  
  44303.  
  44304.  4.47.1  Synopsis
  44305.  
  44306.  pathchk  [-p] _p_a_t_h_n_a_m_e ...
  44307.  
  44308.  
  44309.  4.47.2  Description
  44310.  
  44311.  The pathchk utility shall check that one or more pathnames are valid
  44312.  (i.e., they could be used to access or create a file without causing
  44313.  syntax errors) and portable (i.e., no filename truncation will result).
  44314.  More extensive portability checks are provided by the -p option.
  44315.  
  44316.  By default, the pathchk utility shall check each component of each
  44317.  _p_a_t_h_n_a_m_e operand based on the underlying file system.  A diagnostic shall
  44318.  be written for each _p_a_t_h_n_a_m_e operand that:
  44319.  
  44320.      - is longer than {PATH_MAX} bytes (see Pathname Variable Values in
  44321.        POSIX.1 {8} 2.9.5),
  44322.  
  44323.      - contains any component longer than {NAME_MAX} bytes in its
  44324.        containing directory,
  44325.  
  44326.      - contains any component in a directory that is not searchable, or
  44327.  
  44328.      - contains any character in any component that is not valid in its
  44329.        containing directory.
  44330.  
  44331.  The format of the diagnostic message is not specified, but shall indicate
  44332.  the error detected and the corresponding _p_a_t_h_n_a_m_e operand.
  44333.  
  44334.  It shall not be considered an error if one or more components of a
  44335.  _p_a_t_h_n_a_m_e operand do not exist as long as a file matching the pathname
  44336.  specified by the missing components could be created that does not
  44337.  violate any of the checks specified above.
  44338.  
  44339.  
  44340.  
  44341.  
  44342.  
  44343.                Copyright c 1991 IEEE.  All rights reserved.
  44344.       This is an unapproved IEEE Standards Draft, subject to change.
  44345.  
  44346.  
  44347.  
  44348.  
  44349.  
  44350.  642                                     4 Execution Environment Utilities
  44351.  
  44352.  
  44353.  
  44354.  
  44355.  
  44356.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  44357.  
  44358.  4.47.3  Options
  44359.  
  44360.  The pathchk utility shall conform to the utility argument syntax
  44361.  guidelines described in 2.10.2.
  44362.  
  44363.  The following option shall be supported by the implementation:
  44364.  
  44365.     -p          Instead of performing checks based on the underlying file
  44366.                 system, write a diagnostic for each _p_a_t_h_n_a_m_e operand that:
  44367.  
  44368.                  - is longer than {_POSIX_PATH_MAX} bytes (see Minimum
  44369.                    Values in POSIX.1 {8} 2.9.2),
  44370.  
  44371.                  - contains any component longer than {_POSIX_NAME_MAX}
  44372.                    bytes, or
  44373.  
  44374.                  - contains any character in any component that is not in
  44375.                    the portable filename character set (see 2.2.2.111).
  44376.  
  44377.  
  44378.  4.47.4  Operands
  44379.  
  44380.  The following operand shall be supported by the implementation:
  44381.  
  44382.     _p_a_t_h_n_a_m_e    A pathname to be checked.
  44383.  
  44384.  
  44385.  4.47.5  External Influences
  44386.  
  44387.  
  44388.  4.47.5.1  Standard Input
  44389.  
  44390.  None.
  44391.  
  44392.  4.47.5.2  Input Files
  44393.  
  44394.  None.
  44395.  
  44396.  
  44397.  4.47.5.3  Environment Variables
  44398.  
  44399.  The following environment variables shall affect the execution of
  44400.  pathchk:
  44401.  
  44402.     LANG               This variable shall determine the locale to use for
  44403.                        the locale categories when both LC_ALL and the
  44404.                        corresponding environment variable (beginning with
  44405.                        LC_) do not specify a locale.  See 2.6.
  44406.  
  44407.  
  44408.  
  44409.                Copyright c 1991 IEEE.  All rights reserved.
  44410.       This is an unapproved IEEE Standards Draft, subject to change.
  44411.  
  44412.  
  44413.  
  44414.  
  44415.  
  44416.  4.47 pathchk - Check pathnames                                        643
  44417.  
  44418.  
  44419.  
  44420.  
  44421.  
  44422.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  44423.  
  44424.     LC_ALL             This variable shall determine the locale to be used
  44425.                        to override any values for locale categories
  44426.                        specified by the settings of LANG or any
  44427.                        environment variables beginning with LC_.
  44428.  
  44429.     LC_CTYPE           This variable shall determine the locale for the
  44430.                        interpretation of sequences of bytes of text data
  44431.                        as characters (e.g., single- versus multibyte
  44432.                        characters in arguments).
  44433.  
  44434.     LC_MESSAGES        This variable shall determine the language in which
  44435.                        messages should be written.
  44436.  
  44437.  
  44438.  4.47.5.4  Asynchronous Events
  44439.  
  44440.  Default.
  44441.  
  44442.  
  44443.  4.47.6  External Effects
  44444.  
  44445.  4.47.6.1  Standard Output
  44446.  
  44447.  None.
  44448.  
  44449.  
  44450.  4.47.6.2  Standard Error
  44451.  
  44452.  Used only for diagnostic messages.
  44453.  
  44454.  4.47.6.3  Output Files
  44455.  
  44456.  None.
  44457.  
  44458.  
  44459.  4.47.7  Extended Description
  44460.  
  44461.  None.
  44462.  
  44463.  
  44464.  4.47.8  Exit Status
  44465.  
  44466.  The pathchk utility shall exit with one of the following values:
  44467.  
  44468.      0    All _p_a_t_h_n_a_m_e operands passed all of the checks.
  44469.  
  44470.     >0    An error occurred.
  44471.  
  44472.  
  44473.  
  44474.  
  44475.                Copyright c 1991 IEEE.  All rights reserved.
  44476.       This is an unapproved IEEE Standards Draft, subject to change.
  44477.  
  44478.  
  44479.  
  44480.  
  44481.  
  44482.  644                                     4 Execution Environment Utilities
  44483.  
  44484.  
  44485.  
  44486.  
  44487.  
  44488.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  44489.  
  44490.  4.47.9  Consequences of Errors
  44491.  
  44492.  Default.
  44493.  
  44494.  BEGIN_RATIONALE
  44495.  
  44496.  
  44497.  4.47.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  44498.  
  44499.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  44500.  
  44501.  To verify that all pathnames in an imported data interchange archive are
  44502.  legitimate and unambiguous on the current system:
  44503.  
  44504.        pax -f archive | xargs pathchk                                       1
  44505.        if [ $? -eq 0 ]
  44506.        then
  44507.                pax -r -f archive
  44508.        else
  44509.                echo Investigate problems before importing files.
  44510.                exit 1
  44511.        fi
  44512.  
  44513.  To verify that all files in the current directory hierarchy could be
  44514.  moved to any POSIX.1 {8} conforming system that also supports the pax
  44515.  utility:
  44516.  
  44517.        find . -print | xargs pathchk -p
  44518.        if [ $? -eq 0 ]
  44519.        then
  44520.                pax -w -f archive .
  44521.        else
  44522.                echo Portable archive cannot be created.
  44523.                exit 1
  44524.        fi
  44525.  
  44526.  To verify that a user-supplied pathname names a readable file and that
  44527.  the application can create a file extending the given path without
  44528.  truncation and without overwriting any existing file:
  44529.  
  44530.  
  44531.  
  44532.  
  44533.  
  44534.  
  44535.  
  44536.  
  44537.  
  44538.  
  44539.  
  44540.  
  44541.                Copyright c 1991 IEEE.  All rights reserved.
  44542.       This is an unapproved IEEE Standards Draft, subject to change.
  44543.  
  44544.  
  44545.  
  44546.  
  44547.  
  44548.  4.47 pathchk - Check pathnames                                        645
  44549.  
  44550.  
  44551.  
  44552.  
  44553.  
  44554.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  44555.  
  44556.        case $- in
  44557.                *C*)    reset="";;
  44558.                *)      reset="set +C"
  44559.                        set -C;;
  44560.        esac
  44561.        test -r "$path" && pathchk "$path.out" &&
  44562.                rm "$path.out" > "$path.out"
  44563.        if [ $? -ne 0 ]; then
  44564.                printf "%s: %s not found or %s.out fails \                   1
  44565.        creation checks.\n" $0 "$path" "$path"                               1
  44566.                $reset  # reset the noclobber option in case a trap          1
  44567.                        # on EXIT depends on it                              1
  44568.                exit 1
  44569.        fi
  44570.        $reset
  44571.        PROCESSING < "$path" > "$path.out"
  44572.  
  44573.  The following assumptions are made in this example:
  44574.  
  44575.      (1)  PROCESSING represents the code that will be used by the
  44576.           application to use $path once it is verified that $path.out will
  44577.           work as intended.
  44578.  
  44579.      (2)  The state of the _n_o_c_l_o_b_b_e_r option is unknown when this code is
  44580.           invoked and should be set on exit to the state it was in when
  44581.           this code was invoked.  (The reset variable is used in this
  44582.           example to restore the initial state.)
  44583.  
  44584.      (3)  Note the usage of rm "$path.out" > "$path.out":
  44585.  
  44586.            (a)  The pathchk command has already verified, at this point,
  44587.                 that $path.out will not be truncated.
  44588.  
  44589.            (b)  With the _n_o_c_l_o_b_b_e_r option set, the shell will verify that
  44590.                 $path.out does not already exist before invoking rm.
  44591.  
  44592.            (c)  If the shell succeeded in creating $path.out, rm will
  44593.                 remove it so that the application can create the file
  44594.                 again in the PROCESSING step.
  44595.  
  44596.            (d)  If the PROCESSING step wants the file to already exist
  44597.                 when it is invoked, the
  44598.  
  44599.                       rm "$path.out" > "$path.out"
  44600.  
  44601.                 should be replaced with
  44602.  
  44603.                       > "$path.out"
  44604.  
  44605.  
  44606.  
  44607.                Copyright c 1991 IEEE.  All rights reserved.
  44608.       This is an unapproved IEEE Standards Draft, subject to change.
  44609.  
  44610.  
  44611.  
  44612.  
  44613.  
  44614.  646                                     4 Execution Environment Utilities
  44615.  
  44616.  
  44617.  
  44618.  
  44619.  
  44620.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  44621.  
  44622.                 which will verify that the file did not already exist, but
  44623.                 leave $path.out in place for use by PROCESSING.
  44624.  
  44625.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  44626.  
  44627.  The pathchk utility is new, commissioned for this standard.  It, along
  44628.  with the set -C (_n_o_c_l_o_b_b_e_r) option added to the shell, replaces the
  44629.  mktemp, validfnam, and create utilities that appeared in earlier drafts.
  44630.  All of these utilities were attempts to solve a few common problems:
  44631.  
  44632.      - Verify the validity (for several different definitions of
  44633.        ``valid'') of a pathname supplied by a user, generated by an
  44634.        application, or imported from an external source,
  44635.  
  44636.      - Atomically create a file, and
  44637.  
  44638.      - Perform various string handling functions to generate a temporary
  44639.        file name.
  44640.  
  44641.  The test utility (see 4.62) can be used to determine if a given pathname
  44642.  names an existing file; it will not, however, give any indication of
  44643.  whether or not any component of the pathname was truncated in a directory
  44644.  where the {_POSIX_NO_TRUNC} feature (see Execution-Time Symbolic
  44645.  Constants for Portability Specification in POSIX.1 {8} 2.9.4) is not in
  44646.  effect.  The pathchk utility provided here does not check for file
  44647.  existence; it performs checks to determine if a pathname does exist or
  44648.  could be created with no pathname component truncation.
  44649.  
  44650.  The _n_o_c_l_o_b_b_e_r option added to the shell (see 3.14.11) can be used to
  44651.  atomically create a file.  As with all file creation semantics in
  44652.  POSIX.1 {8}, it guarantees atomic creation, but still depends on
  44653.  applications to agree on conventions and cooperate on the use of files
  44654.  after they have been created.  The create utility, included in one
  44655.  earlier draft, provided checking and atomic creation in a single
  44656.  invocation of the utility; these are orthogonal issues and need not be
  44657.  grouped into a single utility.  Note that the _n_o_c_l_o_b_b_e_r option also
  44658.  provides a way of creating a lock for process synchronization; since it
  44659.  provides an atomic create, there is no race between a test for existence
  44660.  and the following creation if it did not exist.
  44661.  
  44662.  Having a function like _t_m_p_n_a_m() in the C Standard {7} is important in
  44663.  many high-level languages.  The shell programming language, however, has
  44664.  built-in string manipulation facilities, making it very easy to construct
  44665.  temporary file names.  The names needed obviously depend on the
  44666.  application, but are frequently of a form similar to
  44667.  
  44668.        $TMPDIR/_a_p_p_l_i_c_a_t_i_o_n__a_b_b_r_e_v_i_a_t_i_o_n$$._s_u_f_f_i_x
  44669.  
  44670.  
  44671.  
  44672.  
  44673.                Copyright c 1991 IEEE.  All rights reserved.
  44674.       This is an unapproved IEEE Standards Draft, subject to change.
  44675.  
  44676.  
  44677.  
  44678.  
  44679.  
  44680.  4.47 pathchk - Check pathnames                                        647
  44681.  
  44682.  
  44683.  
  44684.  
  44685.  
  44686.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  44687.  
  44688.  In cases where there is likely to be contention for a given suffix, a
  44689.  simple shell for or while loop can be used with the shell _n_o_c_l_o_b_b_e_r
  44690.  option to create a file without risk of collisions, as long as
  44691.  applications trying to use the same filename namespace are cooperating on
  44692.  the use of files after they have been created.
  44693.  
  44694.  END_RATIONALE
  44695.  
  44696.  
  44697.  
  44698.  4.48  pax - Portable archive interchange
  44699.  
  44700.  
  44701.  4.48.1  Synopsis
  44702.  
  44703.  pax  [-cdnv] [-f _a_r_c_h_i_v_e] [-s _r_e_p_l_s_t_r] ...  [_p_a_t_t_e_r_n ...]                  1
  44704.  
  44705.  pax  -r [-cdiknuv] [-f _a_r_c_h_i_v_e] [-o _o_p_t_i_o_n_s] ...  [-p _s_t_r_i_n_g] ...          1
  44706.       [-s _r_e_p_l_s_t_r] ...  [_p_a_t_t_e_r_n ...]                                       1
  44707.  pax  -w [-dituvX] [-b _b_l_o_c_k_s_i_z_e] [ [-a] [-f _a_r_c_h_i_v_e] ] [-o _o_p_t_i_o_n_s] ...    1
  44708.       [-s _r_e_p_l_s_t_r] ...  [-x _f_o_r_m_a_t] [_f_i_l_e ...]
  44709.  
  44710.  pax  -r -w [-diklntuvX] [-p _s_t_r_i_n_g] ...  [-s _r_e_p_l_s_t_r] ...  [_f_i_l_e ...]
  44711.       _d_i_r_e_c_t_o_r_y
  44712.  
  44713.  
  44714.  4.48.2  Description
  44715.  
  44716.  The pax utility shall read, write, and write lists of the members of
  44717.  archive files and copy directory hierarchies.  A variety of archive
  44718.  formats shall be supported; see the -x _f_o_r_m_a_t option description under
  44719.  4.48.3.
  44720.  
  44721.  The action to be taken depends on the presence of the -r and -w options:
  44722.  
  44723.      (1)  When neither the -r option nor the -w option is specified, pax
  44724.           shall write the names of the members of the archive file read
  44725.           from the standard input, with pathnames matching the specified
  44726.           patterns, to standard output.  If a named file is of type
  44727.           directory, the file hierarchy rooted at that file shall be
  44728.           written out as well.
  44729.  
  44730.      (2)  When the -r option is specified, but the -w option is not, pax
  44731.           shall extract the members of the archive file read from the
  44732.           standard input, with pathnames matching the specified patterns.
  44733.           If an extracted file is of type directory, the file hierarchy
  44734.           rooted at that file shall be extracted as well.  The extracted
  44735.           files shall be created relative to the current file hierarchy.
  44736.  
  44737.  
  44738.  
  44739.                Copyright c 1991 IEEE.  All rights reserved.
  44740.       This is an unapproved IEEE Standards Draft, subject to change.
  44741.  
  44742.  
  44743.  
  44744.  
  44745.  
  44746.  648                                     4 Execution Environment Utilities
  44747.  
  44748.  
  44749.  
  44750.  
  44751.  
  44752.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  44753.  
  44754.           The ownership, access and modification times, and file mode of    1
  44755.           the restored files are discussed under the -p option.             1
  44756.  
  44757.      (3)  When the -w option is specified and the -r option is not, pax
  44758.           shall write the contents of the file operands to the standard
  44759.           output in an archive format.  If no _f_i_l_e operands are specified,
  44760.           a list of files to copy, one per line, shall be read from the
  44761.           standard input.  A file of type directory shall include all of
  44762.           the files in the file hierarchy rooted at the file.
  44763.  
  44764.      (4)  When both the -r and -w options are specified, pax shall copy
  44765.           the file operands to the destination directory.
  44766.  
  44767.           If no _f_i_l_e operands are specified, a list of files to copy, one
  44768.           per line, shall be read from the standard input.  A file of type
  44769.           directory shall include all of the files in the file hierarchy
  44770.           rooted at the file.
  44771.  
  44772.           The effect of the copy shall be as if the copied files were
  44773.           written to an archive file and then subsequently extracted,
  44774.           except that there may be hard links between the original and the
  44775.           copied files.  If the destination directory is a subdirectory of
  44776.           one of the files to be copied, the results are unspecified.  If
  44777.           the destination directory is a file of a type not defined by
  44778.           POSIX.1 {8}, the results are implementation defined; otherwise
  44779.           it shall be an error for the file named by the directory operand
  44780.           not to exist, not be writable by the user, or not be a file of
  44781.           type directory.
  44782.  
  44783.  If, when the -r option is specified, intermediate directories are
  44784.  necessary to extract an archive member, pax shall perform actions
  44785.  equivalent to the POSIX.1 {8} _m_k_d_i_r() function, called with the following
  44786.  arguments:
  44787.  
  44788.      - The intermediate directory used as the _p_a_t_h argument.
  44789.  
  44790.      - The value of the bitwise inclusive OR of S_IRWXU, S_IRWXG, and
  44791.        S_IRWXO as the _m_o_d_e argument.
  44792.  
  44793.  If any specified _p_a_t_t_e_r_n or _f_i_l_e operands are not matched by at least one
  44794.  file or archive member, pax shall write a diagnostic message to standard
  44795.  error for each one that did not match and exit with a nonzero exit
  44796.  status.
  44797.  
  44798.  The supported archive formats shall be automatically detected on input.
  44799.  The default output archive format shall be implementation defined.
  44800.  
  44801.  A single archive can span multiple files.  The pax utility shall
  44802.  determine, in an implementation-defined manner, what file to read or
  44803.  
  44804.  
  44805.                Copyright c 1991 IEEE.  All rights reserved.
  44806.       This is an unapproved IEEE Standards Draft, subject to change.
  44807.  
  44808.  
  44809.  
  44810.  
  44811.  
  44812.  4.48 pax - Portable archive interchange                               649
  44813.  
  44814.  
  44815.  
  44816.  
  44817.  
  44818.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  44819.  
  44820.  write as the next file.
  44821.  
  44822.  If the selected archive format supports the specification of linked
  44823.  files, it shall be an error if these files cannot be linked when the
  44824.  archive is extracted.  Any of the various names in the archive that        1
  44825.  represent a file can be used to select the file for extraction.            1
  44826.  
  44827.  
  44828.  4.48.3  Options
  44829.  
  44830.  The pax utility shall conform to the utility argument syntax guidelines
  44831.  described in 2.10.2, except that the order of presentation of the -s
  44832.  options is significant.
  44833.  
  44834.  The following options shall be supported by the implementation:
  44835.  
  44836.     -r          Read an archive file from standard input.
  44837.  
  44838.     -w          Write files to the standard output in the specified
  44839.                 archive format.
  44840.  
  44841.     -a          Append files to the end of the archive.  It is              1
  44842.                 implementation defined which devices on the system support  1
  44843.                 appending.  Additional file formats unspecified by this     1
  44844.                 standard may impose restrictions on appending.              1
  44845.  
  44846.     -b _b_l_o_c_k_s_i_z_e                                                            1
  44847.                 Block the output at a positive decimal integer number of
  44848.                 bytes per write to the archive file.  Devices and archive
  44849.                 formats may impose restrictions on blocking.  Blocking
  44850.                 shall be automatically determined on input.  Conforming
  44851.                 POSIX.2 applications shall not specify a _b_l_o_c_k_s_i_z_e value    1
  44852.                 larger than 32256.  Default blocking when creating          1
  44853.                 archives depends on the archive format.  (See the -x
  44854.                 option below.)
  44855.  
  44856.     -c          Match all file or archive members except those specified
  44857.                 by the _p_a_t_t_e_r_n or _f_i_l_e operands.
  44858.  
  44859.     -d          Cause files of type directory being copied or archived or
  44860.                 archive members of type directory being extracted to match
  44861.                 only the file or archive member itself and not the file
  44862.                 hierarchy rooted at the file.
  44863.  
  44864.     -f _a_r_c_h_i_v_e  Specify the pathname of the input or output archive,
  44865.                 overriding the default standard input (when neither the -r
  44866.                 option nor the -w option is specified, or the -r option is
  44867.                 specified and the -w option is not) or standard output
  44868.                 (when the -w option is specified and the -r option is
  44869.  
  44870.  
  44871.                Copyright c 1991 IEEE.  All rights reserved.
  44872.       This is an unapproved IEEE Standards Draft, subject to change.
  44873.  
  44874.  
  44875.  
  44876.  
  44877.  
  44878.  650                                     4 Execution Environment Utilities
  44879.  
  44880.  
  44881.  
  44882.  
  44883.  
  44884.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  44885.  
  44886.                 not).
  44887.  
  44888.     -i          Interactively rename files or archive members.  For each
  44889.                 archive member matching a _p_a_t_t_e_r_n operand or file matching
  44890.                 a _f_i_l_e operand, a prompt shall be written to the file
  44891.                 /dev/tty.  The prompt shall contain the name of the file
  44892.                 or archive member, but the format is otherwise
  44893.                 unspecified.  A line shall then be read from /dev/tty.  If  1
  44894.                 this line is blank, the file or archive member shall be     1
  44895.                 skipped.  If this line consists of a single period, the
  44896.                 file or archive member shall be processed with no
  44897.                 modification to its name.  Otherwise, its name shall be
  44898.                 replaced with the contents of the line.  The pax utility
  44899.                 shall immediately exit with a nonzero exit status if end-
  44900.                 of-file is encountered when reading a response or if
  44901.                 /dev/tty cannot be opened for reading and writing.
  44902.  
  44903.     -k          Prevent the overwriting of existing files.
  44904.  
  44905.     -l          (The letter ell.)  Link files.  When both the -r and -w
  44906.                 options are specified, hard links shall be made between
  44907.                 the source and destination file hierarchies whenever
  44908.                 possible.
  44909.  
  44910.     -n          Select the first archive member that matches each _p_a_t_t_e_r_n
  44911.                 operand.  No more than one archive member shall be matched
  44912.                 for each pattern (although members of type directory shall
  44913.                 still match the file hierarchy rooted at that file).
  44914.  
  44915.     -o _o_p_t_i_o_n_s  Provide information to the implementation to modify the     1
  44916.                 algorithm for extracting or writing files that is specific  1
  44917.                 to the file format specified by -x.  This version of this   1
  44918.                 standard does not specify any such options and a Strictly   1
  44919.                 Conforming POSIX.2 Application shall not use the -o         1
  44920.                 option.                                                     1
  44921.  
  44922.                 NOTE:  It is expected that future versions of POSIX.2 will  1
  44923.                 offer additional file formats and this option will be used  1
  44924.                 by POSIX.2 and other POSIX standards to specify such        1
  44925.                 features as international file-name and file codeset        1
  44926.                 translations, security, accounting, etc., related to each   1
  44927.                 additional format.                                          1
  44928.  
  44929.     -p _s_t_r_i_n_g   Specify one or more file characteristic options
  44930.                 (privileges).  The _s_t_r_i_n_g option-argument shall be a
  44931.                 string specifying file characteristics to be retained or
  44932.                 discarded on extraction.  The string shall consist of the
  44933.                 specification characters a, e, m, o, and p, and/or other,
  44934.                 implementation-defined, characters.  Multiple
  44935.  
  44936.  
  44937.                Copyright c 1991 IEEE.  All rights reserved.
  44938.       This is an unapproved IEEE Standards Draft, subject to change.
  44939.  
  44940.  
  44941.  
  44942.  
  44943.  
  44944.  4.48 pax - Portable archive interchange                               651
  44945.  
  44946.  
  44947.  
  44948.  
  44949.  
  44950.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  44951.  
  44952.                 characteristics can be concatenated within the same string
  44953.                 and multiple -p options can be specified.  The meaning of
  44954.                 the specification characters are as follows:
  44955.  
  44956.                    a     Do not preserve file access times.
  44957.  
  44958.                    e     Preserve the user ID, group ID, file mode bits     1
  44959.                          (see 2.2.2.60), access time, modification time,    1
  44960.                          and any other, implementation-defined, file        1
  44961.                          characteristics.                                   1
  44962.  
  44963.                    m     Do not preserve file modification times.
  44964.  
  44965.                    o     Preserve the user ID and group ID.
  44966.  
  44967.                    p     Preserve the file mode bits.  Other,               1
  44968.                          implementation-defined file-mode attributes may    1
  44969.                          be preserved.                                      1
  44970.  
  44971.                 In the preceding list, ``preserve'' indicates that an
  44972.                 attribute stored in the archive shall be given to the
  44973.                 extracted file, subject to the permissions of the invoking  1
  44974.                 process; otherwise, the attribute shall be determined as    1
  44975.                 part of the normal file creation action (see 2.9.1.4).      1
  44976.  
  44977.                 If neither the e nor the o specification character is
  44978.                 specified, or the user ID and group ID are not preserved
  44979.                 for any reason, pax shall not set the S_ISUID and S_ISGID
  44980.                 bits of the file mode.
  44981.  
  44982.                 If the preservation of any of these items fails for any
  44983.                 reason, pax shall write a diagnostic message to standard
  44984.                 error.  Failure to preserve these items shall affect the
  44985.                 final exit status, but shall not cause the extracted file
  44986.                 to be deleted.
  44987.  
  44988.                 If file-characteristic letters in any of the _s_t_r_i_n_g
  44989.                 option-arguments are duplicated or conflict with each
  44990.                 other, the one(s) given last shall take precedence.  For
  44991.                 example, if -p eme is specified, file modification times
  44992.                 shall be preserved.
  44993.  
  44994.     -s _r_e_p_l_s_t_r  Modify file or archive member names named by _p_a_t_t_e_r_n or
  44995.                 _f_i_l_e operands according to the substitution expression
  44996.                 _r_e_p_l_s_t_r, using the syntax of the ed utility (see 4.20).
  44997.                 The concepts of ``address'' and ``line'' are meaningless
  44998.                 in the context of the pax utility, and shall not be
  44999.                 supplied.  The format shall be:
  45000.  
  45001.  
  45002.  
  45003.                Copyright c 1991 IEEE.  All rights reserved.
  45004.       This is an unapproved IEEE Standards Draft, subject to change.
  45005.  
  45006.  
  45007.  
  45008.  
  45009.  
  45010.  652                                     4 Execution Environment Utilities
  45011.  
  45012.  
  45013.  
  45014.  
  45015.  
  45016.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  45017.  
  45018.                       -s /_o_l_d/_n_e_w/[gp]
  45019.  
  45020.                 where as in ed, _o_l_d is a basic regular expression and _n_e_w
  45021.                 can contain an ampersand, \_n (where _n is a digit)
  45022.                 backreferences, or subexpression matching.  The _o_l_d string
  45023.                 shall also be permitted to contain <newline> characters.
  45024.  
  45025.                 Any nonnull character can be used as a delimiter (/ shown
  45026.                 here).  Multiple -s expressions can be specified; the
  45027.                 expressions shall be applied in the order specified,
  45028.                 terminating with the first successful substitution.  The
  45029.                 optional trailing g shall be as defined in the ed utility.
  45030.                 The optional trailing p shall cause successful
  45031.                 substitutions to be written to standard error.  File or
  45032.                 archive member names that substitute to the empty string
  45033.                 shall be ignored when reading and writing archives.
  45034.  
  45035.     -t          Cause the access times of the archived files to be the
  45036.                 same as they were before being read by pax.
  45037.  
  45038.     -u          Ignore files that are older (having a less recent file
  45039.                 modification time) than a pre-existing file or archive
  45040.                 member with the same name.  If the -r option is specified
  45041.                 and the -w option is not specified, an archive member with
  45042.                 the same name as a file in the file system shall be
  45043.                 extracted if the archive member is newer than the file.
  45044.                 If the -w option is specified and the -r option is not
  45045.                 specified, an archive file member with the same name as a
  45046.                 file in the file system shall be superseded if the file is
  45047.                 newer than the archive member.  It is unspecified if this
  45048.                 is accomplished by actual replacement in the archive or by
  45049.                 appending to the archive.  If both the -r and -w options
  45050.                 are specified, the file in the destination hierarchy shall
  45051.                 be replaced by the file in the source hierarchy or by a
  45052.                 link to the file in the source hierarchy if the file in
  45053.                 the source hierarchy is newer.
  45054.  
  45055.     -v          Produce a verbose table of contents (see 4.48.6.1) if
  45056.                 neither the -r option nor the -w option is specified.
  45057.                 Otherwise, list archive member pathnames to standard error
  45058.                 (see 4.48.6.2).
  45059.  
  45060.     -x _f_o_r_m_a_t   Specify the output archive format.  The pax utility shall
  45061.                 recognize the following formats:
  45062.  
  45063.                    cpio     The extended cpio interchange format specified
  45064.                             in POSIX.1 {8} 10.1.2.  The default _b_l_o_c_k_s_i_z_e   1
  45065.                             for this format for character special archive   1
  45066.                             files shall be 5120.  Implementations shall     1
  45067.  
  45068.  
  45069.                Copyright c 1991 IEEE.  All rights reserved.
  45070.       This is an unapproved IEEE Standards Draft, subject to change.
  45071.  
  45072.  
  45073.  
  45074.  
  45075.  
  45076.  4.48 pax - Portable archive interchange                               653
  45077.  
  45078.  
  45079.  
  45080.  
  45081.  
  45082.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  45083.  
  45084.                             support all _b_l_o_c_k_s_i_z_e values less than or       1
  45085.                             equal to 32256 that are multiples of 512.
  45086.  
  45087.                    ustar    The extended tar interchange format specified
  45088.                             in POSIX.1 {8} 10.1.1.  The default _b_l_o_c_k_s_i_z_e   1
  45089.                             for this format for character special archive   1
  45090.                             files shall be 10240.  Implementations shall    1
  45091.                             support all _b_l_o_c_k_s_i_z_e values less than or       1
  45092.                             equal to 32256 that are multiples of 512.
  45093.  
  45094.                 Implementation-defined formats shall specify a default
  45095.                 block size as well as any other block sizes supported for
  45096.                 character special archive files.
  45097.  
  45098.                 Any attempt to append to an archive file in a format
  45099.                 different from the existing archive format shall cause pax
  45100.                 to exit immediately with a nonzero exit status.
  45101.  
  45102.     -X          When traversing the file hierarchy specified by a
  45103.                 pathname, pax shall not descend into directories that have
  45104.                 a different device ID [_s_t__d_e_v, see POSIX.1 {8} _s_t_a_t()].
  45105.  
  45106.  The options that operate on the names of files or archive members (-c,     1
  45107.  -i, -n, -s, -u, and -v) shall interact as follows.  When the -r option is  1
  45108.  specified and the -w option is not (archive members are being extracted),  1
  45109.  the archive members shall be ``selected,'' based on the user-specified     1
  45110.  _p_a_t_t_e_r_n operands as modified by the -c, -n, and -u options.  Then, any -s
  45111.  and -i options shall modify, in that order, the names of the selected
  45112.  files.  The -v option shall write names resulting from these
  45113.  modifications.
  45114.  
  45115.  When the -w option is specified (files are being archived), the files
  45116.  shall be selected based on the user-specified pathnames as modified by
  45117.  the -n and -u options.  Then, any -s and -i options shall, in that order,
  45118.  modify the names of these selected files.  The -v option shall write
  45119.  names resulting from these modifications.                                  1
  45120.  
  45121.  If both the -u and -n options are specified, pax shall not consider a
  45122.  file selected unless it is newer than the file to which it is compared.
  45123.  
  45124.  
  45125.  4.48.4  Operands
  45126.  
  45127.  The following operands shall be supported by the implementation:
  45128.  
  45129.     _d_i_r_e_c_t_o_r_y   The destination directory pathname for copies when both
  45130.                 the -r and -w options are specified.
  45131.  
  45132.  
  45133.  
  45134.  
  45135.                Copyright c 1991 IEEE.  All rights reserved.
  45136.       This is an unapproved IEEE Standards Draft, subject to change.
  45137.  
  45138.  
  45139.  
  45140.  
  45141.  
  45142.  654                                     4 Execution Environment Utilities
  45143.  
  45144.  
  45145.  
  45146.  
  45147.  
  45148.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  45149.  
  45150.     _f_i_l_e        A pathname of a file to be copied or archived.
  45151.  
  45152.     _p_a_t_t_e_r_n     A pattern matching one or more pathnames of archive
  45153.                 members.  A pattern shall be given in the name-generating
  45154.                 notation of the pattern matching notation in 3.13,
  45155.                 including the filename expansion rules in 3.13.3.  The      1
  45156.                 default, if no _p_a_t_t_e_r_n is specified, is to select all       1
  45157.                 members in the archive.
  45158.  
  45159.  
  45160.  4.48.5  External Influences
  45161.  
  45162.  
  45163.  4.48.5.1  Standard Input
  45164.  
  45165.  If the -w option is specified, the standard input shall be used only if
  45166.  no _f_i_l_e operands are specified.  It shall be a text file containing a
  45167.  list of pathnames, one per line, without leading or trailing <blank>s.
  45168.  
  45169.  If neither the -f nor -w options are specified, the standard input shall
  45170.  be an archive file.  (See 4.48.5.2.)
  45171.  
  45172.  Otherwise, the standard input shall not be used.
  45173.  
  45174.  4.48.5.2  Input Files
  45175.  
  45176.  The input file named by the _a_r_c_h_i_v_e option-argument, or standard input
  45177.  when the archive is read from there, shall be a file formatted according
  45178.  to one of the specifications in POSIX.1 {8} 10.1, or some other,
  45179.  implementation-defined, format.
  45180.  
  45181.  The file /dev/tty shall be used to write prompts and read responses.
  45182.  
  45183.  
  45184.  4.48.5.3  Environment Variables
  45185.  
  45186.  The following environment variables shall affect the execution of pax:
  45187.  
  45188.     LANG               This variable shall determine the locale to use for
  45189.                        the locale categories when both LC_ALL and the
  45190.                        corresponding environment variable (beginning with
  45191.                        LC_) do not specify a locale.  See 2.6.
  45192.  
  45193.     LC_ALL             This variable shall determine the locale to be used
  45194.                        to override any values for locale categories
  45195.                        specified by the settings of LANG or any
  45196.                        environment variables beginning with LC_.
  45197.  
  45198.  
  45199.  
  45200.  
  45201.                Copyright c 1991 IEEE.  All rights reserved.
  45202.       This is an unapproved IEEE Standards Draft, subject to change.
  45203.  
  45204.  
  45205.  
  45206.  
  45207.  
  45208.  4.48 pax - Portable archive interchange                               655
  45209.  
  45210.  
  45211.  
  45212.  
  45213.  
  45214.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  45215.  
  45216.     LC_COLLATE         This variable shall determine the locale for the
  45217.                        behavior of ranges, equivalence classes, and
  45218.                        multicharacter collating elements used in the
  45219.                        pattern matching expressions for the _p_a_t_t_e_r_n
  45220.                        operand, the basic regular expression for the -s
  45221.                        option, and the extended regular expression defined
  45222.                        for the yesexpr locale keyword in the LC_MESSAGES
  45223.                        category.
  45224.  
  45225.     LC_CTYPE           This variable shall determine the locale for the
  45226.                        interpretation of sequences of bytes of text data
  45227.                        as characters (e.g., single- versus multibyte
  45228.                        characters in arguments and input files) and the
  45229.                        behavior of character classes within regular
  45230.                        expressions and pattern matching.
  45231.  
  45232.     LC_MESSAGES        This variable shall determine the processing of
  45233.                        affirmative responses and the language in which
  45234.                        messages should be written.
  45235.  
  45236.     LC_TIME            This variable shall determine the format and
  45237.                        contents of date and time strings when the -v
  45238.                        option is specified.
  45239.  
  45240.  
  45241.  4.48.5.4  Asynchronous Events
  45242.  
  45243.  Default.
  45244.  
  45245.  
  45246.  4.48.6  External Effects
  45247.  
  45248.  4.48.6.1  Standard Output
  45249.  
  45250.  If the -w option is specified and neither the -f nor -r options are
  45251.  specified, the standard output shall be the archive formatted according
  45252.  to one of the specifications in POSIX.1 {8} 10.1, or some other
  45253.  implementation-defined format.  (See -x _f_o_r_m_a_t under 4.48.3.)
  45254.  
  45255.  If neither the -r option nor the -w option is specified, the table of
  45256.  contents of the selected archive members shall be written to standard
  45257.  output using the following format:                                         1
  45258.  
  45259.        "%s\n", <_p_a_t_h_n_a_m_e>
  45260.  
  45261.  If neither the -r option nor the -w option is specified, but the -v
  45262.  option is specified, the table of contents of the selected archive
  45263.  members shall be written to standard output using the following formats:
  45264.  
  45265.  
  45266.  
  45267.                Copyright c 1991 IEEE.  All rights reserved.
  45268.       This is an unapproved IEEE Standards Draft, subject to change.
  45269.  
  45270.  
  45271.  
  45272.  
  45273.  
  45274.  656                                     4 Execution Environment Utilities
  45275.  
  45276.  
  45277.  
  45278.  
  45279.  
  45280.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  45281.  
  45282.  For pathnames representing hard links to previous members of the archive:
  45283.  
  45284.        "%sW==W%s\n", <_l_s -_l _l_i_s_t_i_n_g>, <_l_i_n_k_n_a_m_e>
  45285.  
  45286.  For all other pathnames:
  45287.  
  45288.        "%s\n", <_l_s -_l _l_i_s_t_i_n_g>
  45289.  
  45290.  where <_l_s -_l _l_i_s_t_i_n_g> shall be the format specified by the ls utility
  45291.  (see 4.39) with the -l option.  When writing pathnames in this format, it
  45292.  is unspecified what is written for fields for which the underlying
  45293.  archive format does not have the correct information, although the
  45294.  correct number of <blank>-separated fields shall be written.
  45295.  
  45296.  When writing a table of contents of selected archive members, standard
  45297.  output shall not be buffered more than a line at a time.
  45298.  
  45299.  
  45300.  4.48.6.2  Standard Error
  45301.  
  45302.  If either or both of the -r option and the -w option are specified as
  45303.  well as the -v option, pax shall write the pathnames it processes to the
  45304.  standard error output using the following format:                          1
  45305.  
  45306.        "%s\n", <_p_a_t_h_n_a_m_e>
  45307.  
  45308.  These pathnames shall be written as soon as processing is begun on the
  45309.  file or archive member, and shall be flushed to standard error.  The
  45310.  trailing <newline>, which shall not be buffered, shall be written when
  45311.  the file has been read or written.
  45312.  
  45313.  If the -s option is specified, and the replacement string has a trailing
  45314.  p, substitutions shall be written to standard error in the following
  45315.  format:
  45316.  
  45317.        "%sW>>W%s\n", <_o_r_i_g_i_n_a_l _p_a_t_h_n_a_m_e>, <_n_e_w _p_a_t_h_n_a_m_e>                    2
  45318.  
  45319.  In all operating modes of pax (see 4.48.2), optional messages of
  45320.  unspecified format concerning the input archive format and volume number,
  45321.  the number of files, blocks, volumes, and media parts as well as other
  45322.  diagnostic messages may be written to standard error.
  45323.  
  45324.  In all formats, for both standard output and standard error, it is
  45325.  unspecified how nonprintable characters in pathnames or linknames are
  45326.  written.
  45327.  
  45328.  
  45329.  
  45330.  
  45331.  
  45332.  
  45333.                Copyright c 1991 IEEE.  All rights reserved.
  45334.       This is an unapproved IEEE Standards Draft, subject to change.
  45335.  
  45336.  
  45337.  
  45338.  
  45339.  
  45340.  4.48 pax - Portable archive interchange                               657
  45341.  
  45342.  
  45343.  
  45344.  
  45345.  
  45346.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  45347.  
  45348.  4.48.6.3  Output Files
  45349.  
  45350.  If the -r option is specified, the extracted or copied output files shall
  45351.  be of the archived file type.
  45352.  
  45353.  If the -w option is specified, but the -r option is not, the output file
  45354.  named by the -f option argument shall be a file formatted according to
  45355.  one of the specifications in POSIX.1 {8} 10.1, or some other,
  45356.  implementation-defined, format.
  45357.  
  45358.  
  45359.  4.48.7  Extended Description
  45360.  
  45361.  None.
  45362.  
  45363.  
  45364.  4.48.8  Exit Status
  45365.  
  45366.  The pax utility shall exit with one of the following values:
  45367.  
  45368.      0    All files were processed successfully.
  45369.  
  45370.     >0    An error occurred.
  45371.  
  45372.  
  45373.  4.48.9  Consequences of Errors
  45374.  
  45375.  If pax cannot create a file or a link when reading an archive or cannot
  45376.  find a file when writing an archive, or cannot preserve the user ID,
  45377.  group ID, or file mode when the -p option is specified, a diagnostic
  45378.  message shall be written to standard error and a nonzero exit status
  45379.  shall be returned, but processing shall continue.  In the case where pax
  45380.  cannot create a link to a file, pax shall not, by default, create a
  45381.  second copy of the file.
  45382.  
  45383.  If the extraction of a file from an archive is prematurely terminated by
  45384.  a signal or error, pax may have only partially extracted the file or (if
  45385.  the -n option was not specified) may have extracted a file of the same
  45386.  name as that specified by the user, but which is not the file the user
  45387.  wanted.  Additionally, the file modes of extracted directories may have
  45388.  additional bits from the S_IRWXU mask set as well as incorrect
  45389.  modification and access times.
  45390.  
  45391.  BEGIN_RATIONALE
  45392.  
  45393.  
  45394.  
  45395.  
  45396.  
  45397.  
  45398.  
  45399.                Copyright c 1991 IEEE.  All rights reserved.
  45400.       This is an unapproved IEEE Standards Draft, subject to change.
  45401.  
  45402.  
  45403.  
  45404.  
  45405.  
  45406.  658                                     4 Execution Environment Utilities
  45407.  
  45408.  
  45409.  
  45410.  
  45411.  
  45412.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  45413.  
  45414.  4.48.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  45415.  
  45416.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  45417.  
  45418.  The following command:
  45419.  
  45420.        pax -w -f /dev/rmt/1m .
  45421.  
  45422.  copies the contents of the current directory to tape drive 1, medium
  45423.  density (assuming historical System V device naming procedures.  The
  45424.  historical BSD device name would be /dev/rmt9).
  45425.  
  45426.  The following commands:
  45427.  
  45428.        mkdir _n_e_w_d_i_r
  45429.        pax -rw _o_l_d_d_i_r _n_e_w_d_i_r
  45430.  
  45431.  copy the _o_l_d_d_i_r directory hierarchy to _n_e_w_d_i_r.
  45432.  
  45433.        pax -r -s ',^//*usr//*,,' -f a.pax
  45434.  
  45435.  reads the archive a.pax, with all files rooted in ``/usr'' in the archive
  45436.  extracted relative to the current directory.
  45437.  
  45438.  The -p (privileges) option was invented to reconcile differences between   1
  45439.  historical tar and cpio implementations.  In particular, the two           1
  45440.  utilities used -m in diametrically opposed ways.  The -p option also       1
  45441.  provides a consistent means of extending the ways in which future file     1
  45442.  attributes can be addressed, such as for enhanced security systems or      1
  45443.  high-performance files.  Although it may seem complex, there are really    1
  45444.  two modes that will be most commonly used:                                 1
  45445.  
  45446.     -p e     ``Preserve everything.''  This would be used by the            1
  45447.              historical super-user, someone with all the appropriate        1
  45448.              privileges, to preserve all aspects of the files as they are   1
  45449.              recorded in the archive.  The e flag is the sum of o and p,    1
  45450.              and other implementation-defined attributes.                   1
  45451.  
  45452.     -p p     ``Preserve'' the file mode bits.  This would be used by the    1
  45453.              user with regular privileges who wished to preserve aspects    1
  45454.              of the file other than the ownership.  The file times are      1
  45455.              preserved by default, but two other flags are offered to       1
  45456.              disable these and use the time of extraction.                  1
  45457.  
  45458.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  45459.  
  45460.  The description of pax was adopted from a command written by Glenn Fowler
  45461.  of AT&T.  It is a new utility, commissioned for this standard.
  45462.  
  45463.  
  45464.  
  45465.                Copyright c 1991 IEEE.  All rights reserved.
  45466.       This is an unapproved IEEE Standards Draft, subject to change.
  45467.  
  45468.  
  45469.  
  45470.  
  45471.  
  45472.  4.48 pax - Portable archive interchange                               659
  45473.  
  45474.  
  45475.  
  45476.  
  45477.  
  45478.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  45479.  
  45480.  The table of contents output is written to standard output to facilitate
  45481.  pipeline processing.
  45482.  
  45483.  The output archive formats required are those defined in POSIX.1 {8};
  45484.  others, such as the historical tar format, may be added as an extension.
  45485.  
  45486.  The one pathname per line format of standard input precludes pathnames
  45487.  containing <newline>s.  Although such pathnames violate the portable
  45488.  filename guidelines, they may exist and their presence may inhibit usage
  45489.  of pax within shell scripts.  This problem is inherited from historical
  45490.  archive programs.  The problem can be avoided by listing filename
  45491.  arguments on the command line instead of on standard input.
  45492.  
  45493.  An earlier draft had hard links displaying for all pathnames.  This was    1
  45494.  removed because it complicates the output of the non -v case and does not  1
  45495.  match historical cpio usage.  The hard-link information is available in    1
  45496.  the -v display.                                                            1
  45497.  
  45498.  The working group realizes that the presence of symbolic links will
  45499.  affect certain pax operations.  Historical practice, in both System V and
  45500.  BSD-based systems, is that the physical traversal of the file hierarchy
  45501.  shall be the default, and an option is provided to cause the utility to
  45502.  do a logical traversal, that is, follow symbolic links.  Historical
  45503.  practice has not been so consistent as to what option is used to cause
  45504.  the logical traversal; BSD systems have used -h (cp and tar) and -L (ls),
  45505.  while the _S_V_I_D specifies -L (cpio and ls).  Given this inconsistency, the
  45506.  -L option is recommended.
  45507.  
  45508.  The archive formats described in POSIX.1 {8} have certain restrictions
  45509.  that have been brought along from historical usage.  For example, there
  45510.  are restrictions on the length of pathnames stored in the archive.  When
  45511.  pax is used in -rw mode, copying directory hierarchies, there is no
  45512.  stated dependency on these archive formats.  Therefore, such restrictions
  45513.  should not apply.
  45514.  
  45515.  The POSIX.2 working group is currently devising a new archive format to    1
  45516.  be published in a revision or amendment to this standard.  It is expected  1
  45517.  that the ustar and cpio formats then will be retired from a future         1
  45518.  version of POSIX.1 {8}.  This new format will address all restrictions     1
  45519.  and new requirements for security labeling, etc.  The pax utility should
  45520.  be upward-compatible enough to handle any such changes.  The reason that
  45521.  the default -x _f_o_r_m_a_t output format is implementation defined is to
  45522.  reserve the default format for this new standard interface.  The -o        1
  45523.  option was devised to provide means of controlling the many aspects of     1
  45524.  international and security concerns without expending the entire alphabet  1
  45525.  of option letters for this, and possibly other, file formats.  The -o      1
  45526.  string is meant to be specific for each -x format.  Control of various     1
  45527.  file permissions and attributes that can be expressed in a binary way      1
  45528.  will continue to use the -p (permissions) option; the -o will be reserved  1
  45529.  
  45530.  
  45531.                Copyright c 1991 IEEE.  All rights reserved.
  45532.       This is an unapproved IEEE Standards Draft, subject to change.
  45533.  
  45534.  
  45535.  
  45536.  
  45537.  
  45538.  660                                     4 Execution Environment Utilities
  45539.  
  45540.  
  45541.  
  45542.  
  45543.  
  45544.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  45545.  
  45546.  for more involved requirements and will probably take a                    1
  45547.  
  45548.        pax -o name=value,name=value -o name=value                           1
  45549.  
  45550.  approach.                                                                  1
  45551.  
  45552.  The fundamental difference in how cpio and tar viewed the world was in
  45553.  the way directories were treated.  The cpio utility did not treat
  45554.  directories differently from other files, and to select a directory and
  45555.  its contents required that each file in the hierarchy be explicitly
  45556.  specified.  For tar, a directory matched every file in the file hierarchy
  45557.  it rooted.
  45558.  
  45559.  The pax utility offers both interfaces; by default, directories map into
  45560.  the file hierarchy they root.  The -d option causes pax to skip any file
  45561.  not explicitly referenced, as cpio traditionally did.  The tar-_s_t_y_l_e
  45562.  behavior was chosen as the default because it was believed that this was
  45563.  the more common usage, and because tar is the more commonly available
  45564.  interface, as it was historically provided on both System V and BSD
  45565.  implementations.  Because a file may be matched more than once without
  45566.  causing it to be selected multiple times, the traditional usage of piping
  45567.  an ls or find to the archive command works as always.
  45568.  
  45569.  The Data Interchange Format specification of POSIX.1 {8} requires that
  45570.  processes with ``appropriate privileges'' shall always restore the
  45571.  ownership and permissions of extracted files exactly as archived.  If
  45572.  viewed from the historic equivalence between super-user and ``appropriate
  45573.  privileges,'' there are two problems with this requirement.  First, users
  45574.  running as super-users may unknowingly set dangerous permissions on
  45575.  extracted files.  Second, it is needlessly limiting in that super-users
  45576.  cannot extract files and own them as super-user unless the archive was
  45577.  created by the super-user.  (It should be noted that restoration of
  45578.  ownerships and permissions for the super-user, by default, is historical
  45579.  practice in cpio, but not in tar.)  In order to avoid these two problems,
  45580.  the pax specification has an additional ``privilege'' mechanism, the -p
  45581.  option.  Only a pax invocation with the POSIX.1 {8} privileges needed,
  45582.  and which has the -p option set using the e specification character, has
  45583.  the ``appropriate privilege'' to restore full ownership and permission
  45584.  information.
  45585.  
  45586.  Note also that POSIX.1 {8} 10.1 requires that the file ownership and
  45587.  access permissions shall be set, on extraction, in the same fashion as
  45588.  the POSIX.1 {8} _c_r_e_a_t() function when provided the mode stored in the
  45589.  archive.  This means that the file creation mask of the user is applied
  45590.  to the file permissions.
  45591.  
  45592.  The default _b_l_o_c_k_s_i_z_e value of 5120 for cpio was selected because it is
  45593.  one of the standard block-size values for cpio, set when the -B option is
  45594.  specified.  (The other default block-size value for cpio is 512, and this
  45595.  
  45596.  
  45597.                Copyright c 1991 IEEE.  All rights reserved.
  45598.       This is an unapproved IEEE Standards Draft, subject to change.
  45599.  
  45600.  
  45601.  
  45602.  
  45603.  
  45604.  4.48 pax - Portable archive interchange                               661
  45605.  
  45606.  
  45607.  
  45608.  
  45609.  
  45610.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  45611.  
  45612.  was felt to be too small.)  The default block value of 10240 for tar was
  45613.  selected as that is the standard block-size value for BSD tar.  The        1
  45614.  maximum block size of 32256 (215-512) is the largest multiple of 512 that  1
  45615.  fits into a signed 16-bit tape controller transfer register.  There are    1
  45616.  known limitations in some historic system that would prevent larger        1
  45617.  blocks from being accepted.  Historic values were chosen to make           1
  45618.  compatibility with existing scripts using dd or similar utilities to
  45619.  manipulate archives more likely.  Also, default block sizes for any file
  45620.  type other than character special has been deleted from the standard as
  45621.  unimportant and not likely to affect the structure of the resulting
  45622.  archive.
  45623.  
  45624.  Implementations are permitted to modify the block-size value based on the
  45625.  archive format or the device to which the archive is being written.  This
  45626.  is to provide implementations the opportunity to take advantage of
  45627.  special types of devices, and should not be used without a great deal of
  45628.  consideration as it will almost certainly decrease archive portability.
  45629.  
  45630.  The -n option in early drafts had three effects; the first was to cause
  45631.  special characters in patterns to not be treated specially.  The second
  45632.  was to cause only the first file that matched a pattern to be extracted.
  45633.  The third was to cause pax to write a diagnostic message to standard
  45634.  error when no file was found matching a specified pattern.  Only the
  45635.  second behavior is retained by POSIX.2, for many reasons.  First, it is
  45636.  in general a bad idea for a single option to have multiple effects.
  45637.  Second, the ability to make pattern matching characters act as normal
  45638.  characters is useful for other parts of pax than just file extraction.
  45639.  Third, a finer degree of control over the special characters is useful,
  45640.  because users may wish to normalize only a single special character in a
  45641.  single file name.  Fourth, given a more general escape mechanism, the
  45642.  previous behavior of the -n option can be easily obtained using the -s
  45643.  option or a sed script.  Finally, writing a diagnostic message when a
  45644.  pattern specified by the user is unmatched by any file is useful behavior
  45645.  in all cases.
  45646.  
  45647.  There are two methods of copying subtrees in POSIX.2.  The other method
  45648.  is described as part of the cp utility (see 4.13).  Both methods are
  45649.  historical practice:  cp provides a simpler, more intuitive interface,
  45650.  while pax offers a finer granularity of control.  Each provides
  45651.  additional functionality to the other; in particular, pax maintains the
  45652.  hard-link structure of the hierarchy, while cp does not.  It is the
  45653.  intention of the working group that the results be similar (using
  45654.  appropriate option combinations in both utilities).  The results are not
  45655.  required to be identical; there seemed insufficient gain to applications
  45656.  to balance the difficulty of implementations having to guarantee that the
  45657.  results would be exactly identical.
  45658.  
  45659.  A single archive may span more than one file.  See POSIX.1 {8} 10.1.3.
  45660.  While POSIX.1 {8} only refers to reading the archive file, it is
  45661.  
  45662.  
  45663.                Copyright c 1991 IEEE.  All rights reserved.
  45664.       This is an unapproved IEEE Standards Draft, subject to change.
  45665.  
  45666.  
  45667.  
  45668.  
  45669.  
  45670.  662                                     4 Execution Environment Utilities
  45671.  
  45672.  
  45673.  
  45674.  
  45675.  
  45676.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  45677.  
  45678.  reasonable that the format utility may also determine, in an
  45679.  implementation-defined manner, the next file to write.  It is suggested
  45680.  that implementations provide informative messages to the user on the
  45681.  standard error whenever the archive file is changed.
  45682.  
  45683.  The -d option (do not create intermediate directories not listed in the
  45684.  archive) found in previous drafts of this standard was originally
  45685.  provided as a complement to the historic -d option of cpio.  It has been
  45686.  deleted.
  45687.  
  45688.  The -s option in earlier drafts specified a subset of the substitution
  45689.  command from the ed utility.  As there was no reason for only a subset to
  45690.  be supported, the -s option is now compatible with the current ed
  45691.  specification.  Since the delimiter can be any nonnull character, the
  45692.  following usage with single spaces is valid:
  45693.  
  45694.        pax -s " foo bar " ...
  45695.  
  45696.  The -t option (specify an implementation-defined identifier naming an
  45697.  input or output device) found in earlier drafts has been deleted because
  45698.  it is not historical practice and of limited utility.  In particular,
  45699.  historic versions of neither cpio nor tar had the concept of devices that
  45700.  were not mapped into the file system; if the devices are mapped into the
  45701.  file system, the -f option is sufficient.
  45702.  
  45703.  The -o and -p options found in previous versions of this standard have
  45704.  been renamed to be -p and -t, respectively, to correspond more closely
  45705.  with the historic tar and cp utilities.
  45706.  
  45707.  The default behavior of pax with regard to file modification times is the
  45708.  same as historical implementations of tar.  It is not the historical
  45709.  behavior of cpio.
  45710.  
  45711.  Because the -i option uses /dev/tty, utilities without a controlling
  45712.  terminal will not be able to use this option.
  45713.  
  45714.  The -y option, found in earlier drafts, has been deleted because a line
  45715.  containing a single period for the -i option has equivalent
  45716.  functionality.  The special lines for the -i option (a single period and
  45717.  the empty line) are historical practice in cpio.
  45718.  
  45719.  In earlier drafts, an -e _c_h_a_r_m_a_p option was included to increase           1
  45720.  portability of files between systems using different coded character       1
  45721.  sets.  This option was omitted because it was apparent that consensus      1
  45722.  could not be formed for it.  It was an interface without implementation    1
  45723.  experience and overloaded the charmap file concept to provide additional   1
  45724.  uses its original authors had not intended.  The developers of POSIX.2     1
  45725.  will consider other mechanisms for transporting files with nonportable     1
  45726.  names as they develop the new interchange format, described earlier.       1
  45727.  
  45728.  
  45729.                Copyright c 1991 IEEE.  All rights reserved.
  45730.       This is an unapproved IEEE Standards Draft, subject to change.
  45731.  
  45732.  
  45733.  
  45734.  
  45735.  
  45736.  4.48 pax - Portable archive interchange                               663
  45737.  
  45738.  
  45739.  
  45740.  
  45741.  
  45742.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  45743.  
  45744.  The -k option was added to address international concerns about the
  45745.  dangers involved in the character set transformations of -e (if the
  45746.  target character set were different than the source, the file names might
  45747.  be transformed into names matching existing files) and was made more
  45748.  general to also protect files transferred between file systems with
  45749.  different {NAME_MAX} values (truncating a filename on a smaller system
  45750.  might also inadvertently overwrite existing files).  As stated, it
  45751.  prevents any overwriting, even if the target file is older than the
  45752.  source, which is seen as a generally useful feature anyway.
  45753.  
  45754.  It is almost certain that appropriate privileges will be required for pax
  45755.  to accomplish parts of this specification.  Specifically, creating files
  45756.  of type block special or character special, restoring file access times
  45757.  unless the files are owned by the user (the -t option), or preserving
  45758.  file owner, group, and mode (the -p option) will all probably require
  45759.  appropriate privileges.
  45760.  
  45761.  Some of the file characteristics referenced in this specification may not
  45762.  be supported by some archive formats.  For example, neither the tar nor
  45763.  cpio formats contain the file access time.  For this reason, the e
  45764.  specification character has been provided, intended to cause all file
  45765.  characteristics specified in the archive to be retained.
  45766.  
  45767.  It is required that extracted directories, by default, have their access
  45768.  and modification times and permissions set to the values specified in the
  45769.  archive.  This has obvious problems in that the directories are almost
  45770.  certainly modified after being extracted and that directory permissions
  45771.  may not permit file creation.  One possible solution is to create
  45772.  directories with the mode specified in the archive, as modified by the
  45773.  _u_m_a_s_k of the user, plus sufficient permissions to allow file creation.
  45774.  After all files have been extracted, pax would then reset the access and
  45775.  modification times and permissions as necessary.
  45776.  
  45777.  When the -r option is specified, and the -w option is not,
  45778.  implementations are permitted to overwrite files when the archive has
  45779.  multiple members with the same name.  This may fail, of course, if
  45780.  permissions on the first version of the file do not permit it to be
  45781.  overwritten.
  45782.  
  45783.  END_RATIONALE
  45784.  
  45785.  
  45786.  
  45787.  
  45788.  
  45789.  
  45790.  
  45791.  
  45792.  
  45793.  
  45794.  
  45795.                Copyright c 1991 IEEE.  All rights reserved.
  45796.       This is an unapproved IEEE Standards Draft, subject to change.
  45797.  
  45798.  
  45799.  
  45800.  
  45801.  
  45802.  664                                     4 Execution Environment Utilities
  45803.  
  45804.  
  45805.  
  45806.  
  45807.  
  45808.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  45809.  
  45810.  4.49  pr - Print files
  45811.  
  45812.  
  45813.  4.49.1  Synopsis
  45814.  
  45815.  
  45816.  pr  [+_p_a_g_e] [-_c_o_l_u_m_n] [-adFmrt] [-e[_c_h_a_r][_g_a_p]] [-h _h_e_a_d_e_r]
  45817.      [-i[_c_h_a_r][_g_a_p]] [-l _l_i_n_e_s] [-n[_c_h_a_r][_w_i_d_t_h]] [-o _o_f_f_s_e_t] [-s[_c_h_a_r]]
  45818.      [-w _w_i_d_t_h] [_f_i_l_e ...]
  45819.  
  45820.  
  45821.  4.49.2  Description
  45822.  
  45823.  The pr utility is a printing and pagination filter.  If multiple input
  45824.  files are specified, each shall be read, formatted, and written to
  45825.  standard output.  By default, the input shall be separated into 66-line
  45826.  pages, each with:
  45827.  
  45828.      - A 5-line header that includes the page number, date, time, and the   1
  45829.        pathname of the file.                                                1
  45830.  
  45831.      - A 5-line trailer consisting of blank lines.                          1
  45832.  
  45833.  If standard output is associated with a terminal, diagnostic messages
  45834.  shall be deferred until the pr utility has completed processing.
  45835.  
  45836.  When options specifying multicolumn output are specified, output text
  45837.  columns shall be of equal width; input lines that do not fit into a text
  45838.  column shall be truncated.  By default, text columns shall be separated
  45839.  with at least one <blank>.
  45840.  
  45841.  
  45842.  4.49.3  Options
  45843.  
  45844.  The pr utility shall conform to the utility argument syntax guidelines
  45845.  described in 2.10.2, except that:  the _p_a_g_e option has a '+' delimiter;
  45846.  _p_a_g_e and _c_o_l_u_m_n can be multidigit numbers; some of the option-arguments
  45847.  are optional; and some of the option-arguments cannot be specified as
  45848.  separate arguments from the preceding option letter.  In particular, the
  45849.  -s option does not allow the option letter to be separated from its
  45850.  argument, and the options -e, -i, and -n require that both arguments, if
  45851.  present, not be separated from the option letter.
  45852.  
  45853.  The following options shall be supported by the implementation.  In the
  45854.  following option descriptions, _c_o_l_u_m_n, _l_i_n_e_s, _o_f_f_s_e_t, _p_a_g_e, and _w_i_d_t_h are  1
  45855.  positive decimal integers; _g_a_p is a nonnegative decimal integer.           1
  45856.  
  45857.  
  45858.  
  45859.  
  45860.  
  45861.                Copyright c 1991 IEEE.  All rights reserved.
  45862.       This is an unapproved IEEE Standards Draft, subject to change.
  45863.  
  45864.  
  45865.  
  45866.  
  45867.  
  45868.  4.49 pr - Print files                                                 665
  45869.  
  45870.  
  45871.  
  45872.  
  45873.  
  45874.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  45875.  
  45876.     +_p_a_g_e       Begin output at page number _p_a_g_e of the formatted input.
  45877.  
  45878.     -_c_o_l_u_m_n     Produce output that is _c_o_l_u_m_n_s wide (default shall be 1)
  45879.                 and is written down each column in the order in which the
  45880.                 text is received from the input file.  This option should
  45881.                 not be used with -m.  The options -e and -i shall be
  45882.                 assumed for multiple text-column output.  Whether or not
  45883.                 text columns are balanced is unspecified, but a text
  45884.                 column shall never exceed the length of the page (see the
  45885.                 -l option).  When used with -t, use the minimum number of
  45886.                 lines to write the output.
  45887.  
  45888.     -a          Modify the effect of the -_c_o_l_u_m_n option so that the         1
  45889.                 columns are filled across the page in a round-robin order   1
  45890.                 (e.g., when _c_o_l_u_m_n is 2, the first input line heads column  1
  45891.                 1, the second heads column 2, the third is the second line  1
  45892.                 in column 1, etc.).                                         1
  45893.  
  45894.     -d          Produce output that is double-spaced; append an extra
  45895.                 <newline> following every <newline> found in the input.
  45896.  
  45897.     -e[_c_h_a_r][_g_a_p]
  45898.                 Expand each input <tab> to the next greater column          1
  45899.                 position specified by the formula _n*_g_a_p+1, where _n is an    1
  45900.                 integer > 0.  If _g_a_p is zero or is omitted, it shall        1
  45901.                 default to 8.  All <tab> characters in the input shall be
  45902.                 expanded into the appropriate number of <space>s.  If any
  45903.                 nondigit character, _c_h_a_r, is specified, it shall be used
  45904.                 as the input tab character.
  45905.  
  45906.     -F          Use a <form-feed> character for new pages, instead of the
  45907.                 default behavior that uses a sequence of <newline>
  45908.                 characters.
  45909.  
  45910.     -h _h_e_a_d_e_r   Use the string _h_e_a_d_e_r to replace the contents of the _f_i_l_e   1
  45911.                 operand in the page header.  See 4.49.6.1.                  1
  45912.  
  45913.     -i[_c_h_a_r][_g_a_p]
  45914.                 In output, replace multiple <space>s with <tab>s wherever
  45915.                 two or more adjacent <space>s reach column positions
  45916.                 _g_a_p+1, 2*_g_a_p+1, 3*_g_a_p+1, etc.  If _g_a_p is zero or is
  45917.                 omitted, default <tab> settings at every eighth column
  45918.                 position shall be assumed.  If any nondigit character,
  45919.                 _c_h_a_r, is specified, it shall be used as the output <tab>
  45920.                 character.
  45921.  
  45922.     -l _l_i_n_e_s    Override the 66-line default and reset the page length to
  45923.                 _l_i_n_e_s. If _l_i_n_e_s is not greater than the sum of both the     1
  45924.                 header and trailer depths (in lines), the pr utility shall
  45925.  
  45926.  
  45927.                Copyright c 1991 IEEE.  All rights reserved.
  45928.       This is an unapproved IEEE Standards Draft, subject to change.
  45929.  
  45930.  
  45931.  
  45932.  
  45933.  
  45934.  666                                     4 Execution Environment Utilities
  45935.  
  45936.  
  45937.  
  45938.  
  45939.  
  45940.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  45941.  
  45942.                 suppress both the header and trailer, as if the -t option
  45943.                 were in effect.
  45944.  
  45945.     -m          Merge files.  Standard output shall be formatted so the pr
  45946.                 utility writes one line from each file specified by a _f_i_l_e
  45947.                 operand, side by side into text columns of equal fixed
  45948.                 widths, in terms of the number of column positions.
  45949.                 Implementations shall support merging of at least nine
  45950.                 _f_i_l_e operands.
  45951.  
  45952.     -n[_c_h_a_r][_w_i_d_t_h]
  45953.                 Provide _w_i_d_t_h-digit line numbering (default for _w_i_d_t_h
  45954.                 shall be 5).  The number shall occupy the first _w_i_d_t_h       1
  45955.                 column positions of each text column of default output or
  45956.                 each line of -m output.  If _c_h_a_r (any nondigit character)
  45957.                 is given, it shall be appended to the line number to
  45958.                 separate it from whatever follows (default for _c_h_a_r shall
  45959.                 be a <tab>).
  45960.  
  45961.     -o _o_f_f_s_e_t   Each line of output shall be preceded by offset <space>s.
  45962.                 If the -o option is not specified, the default offset
  45963.                 shall be zero.  The space taken shall be in addition to
  45964.                 the output line width (see -w option below).
  45965.  
  45966.     -r          Write no diagnostic reports on failure to open files.
  45967.  
  45968.     -s[_c_h_a_r]    Separate text columns by the single character _c_h_a_r instead
  45969.                 of by the appropriate number of <space>s (default for _c_h_a_r
  45970.                 shall be the <tab> character).
  45971.  
  45972.     -t          Write neither the five-line identifying header nor the
  45973.                 five-line trailer usually supplied for each page.  Quit
  45974.                 writing after the last line of each file without spacing
  45975.                 to the end of the page.
  45976.  
  45977.     -w _w_i_d_t_h    Set the width of the line to _w_i_d_t_h column positions for
  45978.                 multiple text-column output only.  If the -w option is not
  45979.                 specified and the -s option is not specified, the default
  45980.                 width shall be 72.  If the -w option is not specified and
  45981.                 the -s option is specified, the default width shall be
  45982.                 512.
  45983.  
  45984.                 For single column output, input lines shall not be
  45985.                 truncated.
  45986.  
  45987.  
  45988.  
  45989.  
  45990.  
  45991.  
  45992.  
  45993.                Copyright c 1991 IEEE.  All rights reserved.
  45994.       This is an unapproved IEEE Standards Draft, subject to change.
  45995.  
  45996.  
  45997.  
  45998.  
  45999.  
  46000.  4.49 pr - Print files                                                 667
  46001.  
  46002.  
  46003.  
  46004.  
  46005.  
  46006.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  46007.  
  46008.  4.49.4  Operands
  46009.  
  46010.  The following operand shall be supported by the implementation:
  46011.  
  46012.     _f_i_l_e        A pathname of a file to be written.  If no _f_i_l_e operands
  46013.                 are specified, or if a _f_i_l_e operand is -, the standard
  46014.                 input shall be used.
  46015.  
  46016.  
  46017.  4.49.5  External Influences
  46018.  
  46019.  
  46020.  4.49.5.1  Standard Input
  46021.  
  46022.  The standard input shall be used only if no _f_i_l_e operands are specified,
  46023.  or if a _f_i_l_e operand is -.  See Input Files.
  46024.  
  46025.  4.49.5.2  Input Files
  46026.  
  46027.  The input files shall be text files.
  46028.  
  46029.  
  46030.  4.49.5.3  Environment Variables
  46031.  
  46032.  The following environment variables shall affect the execution of pr:
  46033.  
  46034.     LANG               This variable shall determine the locale to use for
  46035.                        the locale categories when both LC_ALL and the
  46036.                        corresponding environment variable (beginning with
  46037.                        LC_) do not specify a locale.  See 2.6.
  46038.  
  46039.     LC_ALL             This variable shall determine the locale to be used
  46040.                        to override any values for locale categories
  46041.                        specified by the settings of LANG or any
  46042.                        environment variables beginning with LC_.
  46043.  
  46044.     LC_CTYPE           This variable shall determine the locale for the
  46045.                        interpretation of sequences of bytes of text data
  46046.                        as characters (e.g., single- versus multibyte
  46047.                        characters in arguments and input files) and which
  46048.                        characters are defined as printable (character
  46049.                        class print).  Nonprintable characters still shall
  46050.                        be written to standard output, but shall be not
  46051.                        counted for the purpose for column-width and line-
  46052.                        length calculations.
  46053.  
  46054.     LC_MESSAGES        This variable shall determine the language in which
  46055.                        messages should be written.
  46056.  
  46057.  
  46058.  
  46059.                Copyright c 1991 IEEE.  All rights reserved.
  46060.       This is an unapproved IEEE Standards Draft, subject to change.
  46061.  
  46062.  
  46063.  
  46064.  
  46065.  
  46066.  668                                     4 Execution Environment Utilities
  46067.  
  46068.  
  46069.  
  46070.  
  46071.  
  46072.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  46073.  
  46074.     LC_TIME            This variable shall determine the format of the
  46075.                        date and time for use in writing header lines.
  46076.  
  46077.     TZ                 This variable shall determine the time zone for use
  46078.                        in writing header lines.
  46079.  
  46080.  
  46081.  4.49.5.4  Asynchronous Events
  46082.  
  46083.  If pr receives an interrupt while writing to a terminal, it shall flush
  46084.  all accumulated error messages to the screen before terminating.
  46085.  
  46086.  
  46087.  4.49.6  External Effects
  46088.  
  46089.  4.49.6.1  Standard Output
  46090.  
  46091.  The pr utility output shall be a paginated version of the original file
  46092.  (or files).  This pagination shall be accomplished using either <form-
  46093.  feed>s or a sequence of <newline>s, as controlled by the -F option.  Page
  46094.  headers shall be generated unless the -t option is specified.  The page
  46095.  headers shall be of the form:
  46096.  
  46097.        "\n\n%s %s Page %d\n\n\n", <_o_u_t_p_u_t _o_f _d_a_t_e>, <_f_i_l_e>,
  46098.        <_p_a_g_e _n_u_m_b_e_r>
  46099.  
  46100.  In the POSIX Locale, the <_o_u_t_p_u_t _o_f _d_a_t_e> field, representing the date
  46101.  and time of last modification of the input file (or the current date and
  46102.  time if the input file is standard input), shall be equivalent to the
  46103.  output of the following command as it would appear if executed at the
  46104.  given time:
  46105.  
  46106.        date "+%b %e %H:%M %Y"
  46107.  
  46108.  without the trailing <newline>, if the page being written is from
  46109.  standard input.  If the page being written is not from standard input, in
  46110.  the POSIX Locale, the same format shall be used, but the time used shall
  46111.  be the modification time of the file corresponding to _f_i_l_e instead of the
  46112.  current time.  When the LC_TIME locale category is not set to the POSIX
  46113.  Locale, a different format and order of presentation of this field may be
  46114.  used.
  46115.  
  46116.  If the standard input is used instead of a _f_i_l_e operand, the <_f_i_l_e> field
  46117.  shall be replaced by a null string.
  46118.  
  46119.  If the -h option is specified, the _f_i_l_e field shall be replaced by the
  46120.  _h_e_a_d_e_r argument.
  46121.  
  46122.  
  46123.  
  46124.  
  46125.                Copyright c 1991 IEEE.  All rights reserved.
  46126.       This is an unapproved IEEE Standards Draft, subject to change.
  46127.  
  46128.  
  46129.  
  46130.  
  46131.  
  46132.  4.49 pr - Print files                                                 669
  46133.  
  46134.  
  46135.  
  46136.  
  46137.  
  46138.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  46139.  
  46140.  4.49.6.2  Standard Error
  46141.  
  46142.  Used only for diagnostic messages.
  46143.  
  46144.  
  46145.  4.49.6.3  Output Files
  46146.  
  46147.  None.
  46148.  
  46149.  
  46150.  4.49.7  Extended Description
  46151.  
  46152.  None.
  46153.  
  46154.  
  46155.  4.49.8  Exit Status
  46156.  
  46157.  The pr utility shall exit with one of the following values:
  46158.  
  46159.      0    All files were written successfully.
  46160.  
  46161.     >0    An error occurred.
  46162.  
  46163.  
  46164.  4.49.9  Consequences of Errors
  46165.  
  46166.  Default.
  46167.  
  46168.  BEGIN_RATIONALE
  46169.  
  46170.  
  46171.  4.49.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  46172.  
  46173.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  46174.  
  46175.  To print a numbered list of all files in the current directory:
  46176.  
  46177.        ls -a | pr -n -h "Files in $(pwd)."
  46178.  
  46179.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  46180.  
  46181.  This utility is one of those that does not follow the Utility Syntax
  46182.  Guidelines because of its historical origins.  The working group could
  46183.  have added new options that obeyed the guidelines (and marked the old
  46184.  options _o_b_s_o_l_e_s_c_e_n_t) or devised an entirely new utility; there are
  46185.  examples of both actions in this standard.  For this utility, it chose to
  46186.  leave some of the options as they are because of their heavy usage by      1
  46187.  existing applications.  However, due to interest in the international
  46188.  community, the developers of the standard have agreed to provide an
  46189.  alternative syntax for the next version of this standard that conforms to
  46190.  
  46191.                Copyright c 1991 IEEE.  All rights reserved.
  46192.       This is an unapproved IEEE Standards Draft, subject to change.
  46193.  
  46194.  
  46195.  
  46196.  
  46197.  
  46198.  670                                     4 Execution Environment Utilities
  46199.  
  46200.  
  46201.  
  46202.  
  46203.  
  46204.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  46205.  
  46206.  the spirit of the Utility Syntax Guidelines.  This new syntax will be
  46207.  accompanied by the existing syntax, marked as obsolescent.  System
  46208.  implementors are encouraged to develop and promulgate a new syntax for
  46209.  pr, perhaps using a different utility name, that can be adopted for the
  46210.  next version of this standard.
  46211.  
  46212.  Implementations are required to accept option arguments to the -h, -l,
  46213.  -o, and -w options whether presented as part of the same argument or as a
  46214.  separate argument to pr, as suggested by the utility syntax guidelines.
  46215.  The -n and -s options, however, are specified as in historical practice
  46216.  because they are frequently specified without their optional arguments.
  46217.  If a <blank> were allowed before the option-argument in these cases, a
  46218.  file operand could mistakenly be interpreted as an option-argument in
  46219.  historical applications.
  46220.  
  46221.  Historical implementations of the pr utility have differed in the action
  46222.  taken for the -f option.  BSD uses it as described here for the -F
  46223.  option; System V uses it to change trailing <newline>s on each page to a
  46224.  <form-feed> and, if standard output is a TTY device, sends an <alert> to
  46225.  standard error and reads a line from /dev/tty before the first page.
  46226.  Draft 9 incorrectly specified part of the System V behavior, raising
  46227.  several ballot objections.  There were strong arguments from both sides
  46228.  of this issue concerning existing practice and additional arguments
  46229.  against the System V -f behavior, on the grounds that it was not a
  46230.  modular design to have the behavior of an option change depending on
  46231.  where output is directed.  Therefore, the -f option is not specified and
  46232.  the -F option has been added.
  46233.  
  46234.  The -p option was omitted since it represents a purely interactive usage.  1
  46235.  
  46236.  The <_o_u_t_p_u_t _o_f _d_a_t_e> field in the -l format is specified only for the
  46237.  POSIX Locale.  As noted, the format can be different in other locales.
  46238.  No mechanism for defining this is present in this standard, as the
  46239.  appropriate vehicle is a messaging system; i.e., the format should be
  46240.  specified as a ``message.''
  46241.  
  46242.  END_RATIONALE
  46243.  
  46244.  
  46245.  
  46246.  
  46247.  
  46248.  
  46249.  
  46250.  
  46251.  
  46252.  
  46253.  
  46254.  
  46255.  
  46256.  
  46257.                Copyright c 1991 IEEE.  All rights reserved.
  46258.       This is an unapproved IEEE Standards Draft, subject to change.
  46259.  
  46260.  
  46261.  
  46262.  
  46263.  
  46264.  4.49 pr - Print files                                                 671
  46265.  
  46266.  
  46267.  
  46268.  
  46269.  
  46270.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  46271.  
  46272.  4.50  printf - Write formatted output
  46273.  
  46274.  
  46275.  4.50.1  Synopsis
  46276.  
  46277.  
  46278.  printf  _f_o_r_m_a_t [_a_r_g_u_m_e_n_t ...]
  46279.  
  46280.  
  46281.  4.50.2  Description
  46282.  
  46283.  The printf utility shall write formatted operands to the standard output.
  46284.  The _a_r_g_u_m_e_n_t operands shall be formatted under control of the _f_o_r_m_a_t
  46285.  operand.
  46286.  
  46287.  
  46288.  4.50.3  Options
  46289.  
  46290.  None.
  46291.  
  46292.  
  46293.  4.50.4  Operands
  46294.  
  46295.  The following operands shall be supported by the implementation:
  46296.  
  46297.     _f_o_r_m_a_t      A string describing the format to use to write the
  46298.                 remaining operands; see 4.50.7.
  46299.  
  46300.     _a_r_g_u_m_e_n_t    The strings to be written to standard output, under the
  46301.                 control of _f_o_r_m_a_t; see 4.50.7.
  46302.  
  46303.  
  46304.  4.50.5  External Influences
  46305.  
  46306.  4.50.5.1  Standard Input
  46307.  
  46308.  None.
  46309.  
  46310.  
  46311.  4.50.5.2  Input Files
  46312.  
  46313.  None.
  46314.  
  46315.  4.50.5.3  Environment Variables
  46316.  
  46317.  The following environment variables shall affect the execution of printf:
  46318.  
  46319.  
  46320.  
  46321.  
  46322.  
  46323.                Copyright c 1991 IEEE.  All rights reserved.
  46324.       This is an unapproved IEEE Standards Draft, subject to change.
  46325.  
  46326.  
  46327.  
  46328.  
  46329.  
  46330.  672                                     4 Execution Environment Utilities
  46331.  
  46332.  
  46333.  
  46334.  
  46335.  
  46336.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  46337.  
  46338.     LANG               This variable shall determine the locale to use for
  46339.                        the locale categories when both LC_ALL and the
  46340.                        corresponding environment variable (beginning with
  46341.                        LC_) do not specify a locale.  See 2.6.
  46342.  
  46343.     LC_ALL             This variable shall determine the locale to be used
  46344.                        to override any values for locale categories
  46345.                        specified by the settings of LANG or any
  46346.                        environment variables beginning with LC_.
  46347.  
  46348.     LC_CTYPE           This variable shall determine the locale for the
  46349.                        interpretation of sequences of bytes of text data
  46350.                        as characters (e.g., single- versus multibyte
  46351.                        characters in arguments).
  46352.  
  46353.     LC_MESSAGES        This variable shall determine the language in which
  46354.                        messages should be written.
  46355.  
  46356.     LC_NUMERIC         This variable shall determine the locale for
  46357.                        numeric formatting.  It shall affect the format of
  46358.                        numbers written using the e, E, f, g, and G
  46359.                        conversion characters (if supported).
  46360.  
  46361.  
  46362.  4.50.5.4  Asynchronous Events
  46363.  
  46364.  Default.
  46365.  
  46366.  
  46367.  4.50.6  External Effects
  46368.  
  46369.  4.50.6.1  Standard Output
  46370.  
  46371.  See 4.50.7.
  46372.  
  46373.  
  46374.  4.50.6.2  Standard Error
  46375.  
  46376.  Used only for diagnostic messages.
  46377.  
  46378.  4.50.6.3  Output Files
  46379.  
  46380.  None.
  46381.  
  46382.  
  46383.  
  46384.  
  46385.  
  46386.  
  46387.  
  46388.  
  46389.                Copyright c 1991 IEEE.  All rights reserved.
  46390.       This is an unapproved IEEE Standards Draft, subject to change.
  46391.  
  46392.  
  46393.  
  46394.  
  46395.  
  46396.  4.50 printf - Write formatted output                                  673
  46397.  
  46398.  
  46399.  
  46400.  
  46401.  
  46402.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  46403.  
  46404.  4.50.7  Extended Description
  46405.  
  46406.  The _f_o_r_m_a_t operand shall be used as the _f_o_r_m_a_t string described in 2.12
  46407.  with the following exceptions:
  46408.  
  46409.      (1)  A <space> character in the format string, in any context other
  46410.           than a flag of a conversion specification, shall be treated as
  46411.           an ordinary character that is copied to the output.
  46412.  
  46413.      (2)  A W character in the format string shall be treated as a W
  46414.           character, not as a <space>.
  46415.  
  46416.      (3)  In addition to the escape sequences shown in Table 2-15 (see
  46417.           2.12), \_d_d_d, where _d_d_d is a one-, two-, or three-digit octal
  46418.           number, shall be written as a byte with the numeric value
  46419.           specified by the octal number.
  46420.  
  46421.      (4)  The implementation shall not precede or follow output from the d
  46422.           or u conversion specifications with <blank>s not specified by
  46423.           the _f_o_r_m_a_t operand.
  46424.  
  46425.      (5)  The implementation shall not precede output from the o
  46426.           conversion specification with zeroes not specified by the _f_o_r_m_a_t
  46427.           operand.
  46428.  
  46429.      (6)  The e, E, f, g, and G conversion specifications need not be
  46430.           supported.
  46431.  
  46432.      (7)  An additional conversion character, b, shall be supported as
  46433.           follows.  The argument shall be taken to be a string that may
  46434.           contain backslash-escape sequences.  The following backslash-
  46435.           escape sequences shall be supported:
  46436.  
  46437.            (a)  The escape sequences listed in Table 2-15, which shall be
  46438.                 converted to the characters they represent;
  46439.  
  46440.            (b)  \0_d_d_d, where _d_d_d is a zero-, one-, two-, or three-digit
  46441.                 octal number that shall be converted to a byte with the
  46442.                 numeric value specified by the octal number;
  46443.  
  46444.            (c)  \c, which shall not be written and shall cause printf to
  46445.                 ignore any remaining characters in the string operand
  46446.                 containing it, any remaining string operands, and any
  46447.                 additional characters in the _f_o_r_m_a_t operand.
  46448.  
  46449.           The interpretation of a backslash followed by any other sequence
  46450.           of characters is unspecified.
  46451.  
  46452.  
  46453.  
  46454.  
  46455.                Copyright c 1991 IEEE.  All rights reserved.
  46456.       This is an unapproved IEEE Standards Draft, subject to change.
  46457.  
  46458.  
  46459.  
  46460.  
  46461.  
  46462.  674                                     4 Execution Environment Utilities
  46463.  
  46464.  
  46465.  
  46466.  
  46467.  
  46468.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  46469.  
  46470.           Bytes from the converted string shall be written until the end
  46471.           of the string or the number of bytes indicated by the precision
  46472.           specification is reached.  If the precision is omitted, it shall
  46473.           be taken to be infinite, so all bytes up to the end of the
  46474.           converted string shall be written.
  46475.  
  46476.      (8)  For each specification that consumes an argument, the next
  46477.           argument operand shall be evaluated and converted to the
  46478.           appropriate type for the conversion as specified below.
  46479.  
  46480.      (9)  The _f_o_r_m_a_t operand shall be reused as often as necessary to
  46481.           satisfy the argument operands.  Any extra c or s conversion
  46482.           specifications shall be evaluated as if a null string argument
  46483.           were supplied; other extra conversion specifications shall be
  46484.           evaluated as if a zero argument were supplied.  If the _f_o_r_m_a_t
  46485.           operand contains no conversion specifications and _a_r_g_u_m_e_n_t
  46486.           operands are present, the results are unspecified.
  46487.  
  46488.     (10)  If a character sequence in the _f_o_r_m_a_t operand begins with a %
  46489.           character, but does not form a valid conversion specification,
  46490.           the behavior is unspecified.
  46491.  
  46492.  The _a_r_g_u_m_e_n_t operands shall be treated as strings if the corresponding
  46493.  conversion character is b, c, or s; otherwise, it shall be evaluated as a
  46494.  C constant, as described by the C Standard {7}, with the following
  46495.  extensions:
  46496.  
  46497.      - A leading plus or minus sign shall be allowed.
  46498.  
  46499.      - If the leading character is a single- or double-quote, the value
  46500.        shall be the numeric value in the underlying code set of the
  46501.        character following the single- or double-quote.
  46502.  
  46503.  If an argument operand cannot be completely converted into an internal
  46504.  value appropriate to the corresponding conversion specification, a
  46505.  diagnostic message shall be written to standard error and the utility
  46506.  shall not exit with a zero exit status, but shall continue processing any
  46507.  remaining operands and shall write the value accumulated at the time the
  46508.  error was detected to standard output.
  46509.  
  46510.  
  46511.  4.50.8  Exit Status
  46512.  
  46513.  The printf utility shall exit with one of the following values:
  46514.  
  46515.      0    Successful completion.
  46516.  
  46517.     >0    An error occurred.
  46518.  
  46519.  
  46520.  
  46521.                Copyright c 1991 IEEE.  All rights reserved.
  46522.       This is an unapproved IEEE Standards Draft, subject to change.
  46523.  
  46524.  
  46525.  
  46526.  
  46527.  
  46528.  4.50 printf - Write formatted output                                  675
  46529.  
  46530.  
  46531.  
  46532.  
  46533.  
  46534.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  46535.  
  46536.  4.50.9  Consequences of Errors
  46537.  
  46538.  Default.
  46539.  
  46540.  BEGIN_RATIONALE
  46541.  
  46542.  
  46543.  4.50.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  46544.  
  46545.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  46546.  
  46547.  To alert the user and then print and read a series of prompts:
  46548.  
  46549.        printf "\aPlease fill in the following: \nName: "
  46550.        read name
  46551.        printf "Phone number: "
  46552.        read phone
  46553.  
  46554.  To read out a list of right and wrong answers from a file, calculate the
  46555.  percentage right, and print them out.  The numbers are right-justified
  46556.  and separated by a single <tab>.  The percentage is written to one
  46557.  decimal place of accuracy.
  46558.  
  46559.        while read right wrong ; do
  46560.           percent=$(echo "scale=1;($right*100)/($right+$wrong)" | bc)
  46561.           printf "%2d right\t%2d wrong\t(%s%%)\n" \
  46562.                   $right $wrong $percent
  46563.        done < database_file
  46564.  
  46565.  The command:
  46566.  
  46567.        printf "%5d%4d\n" 1 21 321 4321 54321
  46568.  
  46569.  produces:
  46570.  
  46571.            1  21
  46572.          3214321
  46573.        54321   0
  46574.  
  46575.  Note that the _f_o_r_m_a_t operand is used three times to print all of the
  46576.  given strings and that a 0 was supplied by printf to satisfy the last %4d
  46577.  conversion specification.
  46578.  
  46579.  The printf utility is required to notify the user when conversion errors
  46580.  are detected while producing numeric output; thus, the following results
  46581.  would be expected on an implementation with 32-bit twos-complement
  46582.  integers when %d is specified as the _f_o_r_m_a_t operand:
  46583.  
  46584.  
  46585.  
  46586.  
  46587.                Copyright c 1991 IEEE.  All rights reserved.
  46588.       This is an unapproved IEEE Standards Draft, subject to change.
  46589.  
  46590.  
  46591.  
  46592.  
  46593.  
  46594.  676                                     4 Execution Environment Utilities
  46595.  
  46596.  
  46597.  
  46598.  
  46599.  
  46600.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  46601.  
  46602.                   Standard
  46603.      Argument      Output                 Diagnostic Output
  46604.     ___________  ___________  _________________________________________
  46605.     5a           5            printf: "5a" not completely converted
  46606.     9999999999   2147483647   printf: "9999999999" arithmetic overflow
  46607.     -9999999999  -2147483648  printf: "-9999999999" arithmetic overflow
  46608.     ABC          0            printf: "ABC" expected numeric value
  46609.  
  46610.  The diagnostic message format is not specified, but these examples convey
  46611.  the type of information that should be reported.  Note that the value
  46612.  shown on standard output is what would be expected as the return value
  46613.  from the C Standard {7} function _s_t_r_t_o_l().  A similar correspondence
  46614.  exists between %u and _s_t_r_t_o_u_l() and %e, %f, and %g (if the implementation
  46615.  supports floating-point conversions) and _s_t_r_t_o_d().
  46616.  
  46617.  In a locale using ISO/IEC 646 {1} as the underlying code set, the
  46618.  command:
  46619.  
  46620.        printf "%d\n" 3 +3 -3 \'3 \"+3 "'-3"
  46621.  
  46622.  produces:
  46623.  
  46624.             3    Numeric value of constant 3
  46625.             3    Numeric value of constant 3
  46626.             -3   Numeric value of constant -3
  46627.             51   Numeric value of the character ``3'' in
  46628.                  ISO/IEC 646 {1} code set
  46629.             43   Numeric value of the character ``+'' in
  46630.                  ISO/IEC 646 {1} code set
  46631.             45   Numeric value of the character ``-'' in
  46632.                  ISO/IEC 646 {1} code set
  46633.  
  46634.  Note that in a locale with multibyte characters, the value of a character
  46635.  is intended to be the value of the equivalent of the _w_c_h_a_r__t
  46636.  representation of the character as described in C Standard {7}.
  46637.  
  46638.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  46639.  
  46640.  The printf utility was added to provide functionality that has
  46641.  historically been provided by echo.  However, due to irreconcilable
  46642.  differences in the various versions of echo extant, the version in this
  46643.  standard has few special features, leaving those to this new printf
  46644.  utility, which is based on one in the Ninth Edition at AT&T Bell Labs.
  46645.  
  46646.  The Extended Description almost exactly matches the C Standard {7}
  46647.  _p_r_i_n_t_f() function, although it is described in terms of the file format
  46648.  notation in 2.12.
  46649.  
  46650.  
  46651.  
  46652.  
  46653.                Copyright c 1991 IEEE.  All rights reserved.
  46654.       This is an unapproved IEEE Standards Draft, subject to change.
  46655.  
  46656.  
  46657.  
  46658.  
  46659.  
  46660.  4.50 printf - Write formatted output                                  677
  46661.  
  46662.  
  46663.  
  46664.  
  46665.  
  46666.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  46667.  
  46668.  The floating point formatting conversion specifications are not required
  46669.  because all arithmetic in the shell is integer arithmetic.  The awk
  46670.  utility performs floating point calculations and provides its own printf
  46671.  function.  The bc utility can perform arbitrary-precision floating point
  46672.  arithmetic, but doesn't provide extensive formatting capabilities.  (This
  46673.  printf utility cannot really be used to format bc output; it does not
  46674.  support arbitrary precision.)  Implementations are encouraged to support
  46675.  the floating point conversions as an extension.
  46676.  
  46677.  Note that this printf utility, like the C Standard {7} _p_r_i_n_t_f() function
  46678.  on which it is based, makes no special provision for dealing with
  46679.  multibyte characters when using the %c conversion specification or when a
  46680.  precision is specified in a %b or %s conversion specification.
  46681.  Applications should be extremely cautious using either of these features
  46682.  when there are multibyte characters in the character set.
  46683.  
  46684.  Field widths and precisions cannot be specified as '*' since the '*' can
  46685.  be replaced directly in the _f_o_r_m_a_t operand using shell variable
  46686.  substitution.  Implementations can also provide this feature as an
  46687.  extension if they so choose.
  46688.  
  46689.  Hexadecimal character constants as defined in the C Standard {7} are not
  46690.  recognized in the _f_o_r_m_a_t operand because there is no consistent way to
  46691.  detect the end of the constant.  Octal character constants are limited
  46692.  to, at most, three octal digits, but hexadecimal character constants are
  46693.  only terminated by a nonhex-digit character.  In the C Standard {7}, the
  46694.  ## concatenation operator can be used to terminate a constant and follow
  46695.  it with a hexadecimal character to be written.  In the shell,
  46696.  concatenation occurs before the printf utility has a chance to parse the
  46697.  end of the hexadecimal constant.
  46698.  
  46699.  The %b conversion specification is not part of the C Standard {7}; it has
  46700.  been added here as a portable way to process backslash-escapes expanded
  46701.  in string operands as provided by the System V version of the echo
  46702.  utility.  See also the rationale for echo for ways to use printf as a
  46703.  replacement for all of the traditional versions of the echo utility.
  46704.  
  46705.  If an argument cannot be parsed correctly for the corresponding
  46706.  conversion specification, the printf utility is required to report an
  46707.  error.  Thus, overflow and extraneous characters at the end of an
  46708.  argument being used for a numeric conversion are to be reported as
  46709.  errors.  If written in C, the printf utility could use the _s_t_r_t_o_l()
  46710.  function to parse optionally signed numeric arguments, _s_t_r_t_o_u_l() to parse
  46711.  unsigned numeric arguments, and _s_t_r_t_o_d() to parse floating point
  46712.  arguments (if floating point conversions are supported).  It is not
  46713.  considered an error if an argument operand is not completely used for a c
  46714.  or s conversion or if a ``string'' operand's first or second character is
  46715.  used to get the numeric value of a character.
  46716.  
  46717.  
  46718.  
  46719.                Copyright c 1991 IEEE.  All rights reserved.
  46720.       This is an unapproved IEEE Standards Draft, subject to change.
  46721.  
  46722.  
  46723.  
  46724.  
  46725.  
  46726.  678                                     4 Execution Environment Utilities
  46727.  
  46728.  
  46729.  
  46730.  
  46731.  
  46732.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  46733.  
  46734.  END_RATIONALE
  46735.  
  46736.  
  46737.  
  46738.  4.51  pwd - Return working directory name
  46739.  
  46740.  
  46741.  4.51.1  Synopsis
  46742.  
  46743.  pwd
  46744.  
  46745.  
  46746.  4.51.2  Description
  46747.  
  46748.  The pwd utility shall write an absolute pathname of the current working
  46749.  directory to standard output.
  46750.  
  46751.  
  46752.  4.51.3  Options
  46753.  
  46754.  None.
  46755.  
  46756.  
  46757.  4.51.4  Operands
  46758.  
  46759.  None.
  46760.  
  46761.  
  46762.  4.51.5  External Influences
  46763.  
  46764.  
  46765.  4.51.5.1  Standard Input
  46766.  
  46767.  None.
  46768.  
  46769.  4.51.5.2  Input Files
  46770.  
  46771.  None.
  46772.  
  46773.  
  46774.  4.51.5.3  Environment Variables
  46775.  
  46776.  The following environment variables shall affect the execution of pwd:
  46777.  
  46778.     LANG               This variable shall determine the locale to use for
  46779.                        the locale categories when both LC_ALL and the
  46780.                        corresponding environment variable (beginning with
  46781.                        LC_) do not specify a locale.  See 2.6.
  46782.  
  46783.  
  46784.  
  46785.                Copyright c 1991 IEEE.  All rights reserved.
  46786.       This is an unapproved IEEE Standards Draft, subject to change.
  46787.  
  46788.  
  46789.  
  46790.  
  46791.  
  46792.  4.51 pwd - Return working directory name                              679
  46793.  
  46794.  
  46795.  
  46796.  
  46797.  
  46798.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  46799.  
  46800.     LC_ALL             This variable shall determine the locale to be used
  46801.                        to override any values for locale categories
  46802.                        specified by the settings of LANG or any
  46803.                        environment variables beginning with LC_.
  46804.  
  46805.     LC_MESSAGES        This variable shall determine the language in which
  46806.                        messages should be written.
  46807.  
  46808.  
  46809.  4.51.5.4  Asynchronous Events
  46810.  
  46811.  Default.
  46812.  
  46813.  
  46814.  4.51.6  External Effects
  46815.  
  46816.  4.51.6.1  Standard Output
  46817.  
  46818.  The pwd utility output shall be an absolute pathname of the current
  46819.  working directory:
  46820.  
  46821.        "%s\n", <_d_i_r_e_c_t_o_r_y _p_a_t_h_n_a_m_e>
  46822.  
  46823.  
  46824.  4.51.6.2  Standard Error
  46825.  
  46826.  Used only for diagnostic messages.
  46827.  
  46828.  4.51.6.3  Output Files
  46829.  
  46830.  None.
  46831.  
  46832.  
  46833.  4.51.7  Extended Description
  46834.  
  46835.  None.
  46836.  
  46837.  
  46838.  4.51.8  Exit Status
  46839.  
  46840.  The pwd utility shall exit with one of the following values:
  46841.  
  46842.      0    Successful completion.
  46843.  
  46844.     >0    An error occurred.
  46845.  
  46846.  
  46847.  
  46848.  
  46849.  
  46850.  
  46851.                Copyright c 1991 IEEE.  All rights reserved.
  46852.       This is an unapproved IEEE Standards Draft, subject to change.
  46853.  
  46854.  
  46855.  
  46856.  
  46857.  
  46858.  680                                     4 Execution Environment Utilities
  46859.  
  46860.  
  46861.  
  46862.  
  46863.  
  46864.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  46865.  
  46866.  4.51.9  Consequences of Errors
  46867.  
  46868.  If an error is detected, output shall not be written to standard output,
  46869.  a diagnostic message shall be written to standard error, and the exit
  46870.  status shall not be zero.
  46871.  
  46872.  BEGIN_RATIONALE
  46873.  
  46874.  
  46875.  4.51.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  46876.  
  46877.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  46878.  
  46879.  Some implementations have historically provided pwd as a shell special
  46880.  built-in command.
  46881.  
  46882.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  46883.  
  46884.  In most utilities, if an error occurs, partial output may be written to
  46885.  standard output.  This does not happen in historical implementations of
  46886.  pwd.  Because pwd is frequently used in existing shell scripts without
  46887.  checking the exit status, it is important that the historical behavior is
  46888.  required here; therefore, the Consequences of Errors subclause
  46889.  specifically disallows any partial output being written to standard
  46890.  output.
  46891.  
  46892.  END_RATIONALE
  46893.  
  46894.  
  46895.  
  46896.  
  46897.  
  46898.  
  46899.  
  46900.  
  46901.  
  46902.  
  46903.  
  46904.  
  46905.  
  46906.  
  46907.  
  46908.  
  46909.  
  46910.  
  46911.  
  46912.  
  46913.  
  46914.  
  46915.  
  46916.  
  46917.                Copyright c 1991 IEEE.  All rights reserved.
  46918.       This is an unapproved IEEE Standards Draft, subject to change.
  46919.  
  46920.  
  46921.  
  46922.  
  46923.  
  46924.  4.51 pwd - Return working directory name                              681
  46925.  
  46926.  
  46927.  
  46928.  
  46929.  
  46930.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  46931.  
  46932.  4.52  read - Read a line from standard input
  46933.  
  46934.  
  46935.  4.52.1  Synopsis
  46936.  
  46937.  
  46938.  read  [-r] _v_a_r ...
  46939.  
  46940.  
  46941.  4.52.2  Description
  46942.  
  46943.  The read utility shall read a single line from standard input.
  46944.  
  46945.  By default, unless the -r option is specified, backslash (\) shall act as
  46946.  an escape character, as described in 3.2.1.
  46947.  
  46948.  The line shall be split into fields (see the definition in 3.1.3) as in
  46949.  the shell (see 3.6.5); the first field shall be assigned to the first
  46950.  variable _v_a_r, the second field to the second variable _v_a_r, etc.  If there
  46951.  are fewer _v_a_r operands specified than there are fields, the leftover
  46952.  fields and their intervening separators shall be assigned to the last
  46953.  _v_a_r. If there are fewer fields than _v_a_rs, the remaining _v_a_rs shall be set
  46954.  to empty strings.
  46955.  
  46956.  The setting of variables specified by the _v_a_r operands shall affect the
  46957.  current shell execution environment; see 3.12.
  46958.  
  46959.  
  46960.  4.52.3  Options
  46961.  
  46962.  The read utility shall conform to the utility argument syntax guidelines
  46963.  described in 2.10.2.
  46964.  
  46965.  The following option shall be supported by the implementation:
  46966.  
  46967.     -r          Do not treat a backslash character in any special way.
  46968.                 Consider each backslash to be part of the input line.
  46969.  
  46970.  
  46971.  4.52.4  Operands
  46972.  
  46973.  The following operands shall be supported by the implementation:
  46974.  
  46975.     _v_a_r         The name of an existing or nonexisting shell variable.
  46976.  
  46977.  
  46978.  
  46979.  
  46980.  
  46981.  
  46982.  
  46983.                Copyright c 1991 IEEE.  All rights reserved.
  46984.       This is an unapproved IEEE Standards Draft, subject to change.
  46985.  
  46986.  
  46987.  
  46988.  
  46989.  
  46990.  682                                     4 Execution Environment Utilities
  46991.  
  46992.  
  46993.  
  46994.  
  46995.  
  46996.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  46997.  
  46998.  4.52.5  External Influences
  46999.  
  47000.  
  47001.  4.52.5.1  Standard Input
  47002.  
  47003.  The standard input shall be a text file.
  47004.  
  47005.  4.52.5.2  Input Files
  47006.  
  47007.  None.
  47008.  
  47009.  
  47010.  4.52.5.3  Environment Variables
  47011.  
  47012.  The following environment variables shall affect the execution of read:
  47013.  
  47014.     IFS                This variable shall determine the internal field
  47015.                        separators used to delimit fields.  See 3.5.3.
  47016.  
  47017.     LANG               This variable shall determine the locale to use for
  47018.                        the locale categories when both LC_ALL and the
  47019.                        corresponding environment variable (beginning with
  47020.                        LC_) do not specify a locale.  See 2.6.
  47021.  
  47022.     LC_ALL             This variable shall determine the locale to be used
  47023.                        to override any values for locale categories
  47024.                        specified by the settings of LANG or any
  47025.                        environment variables beginning with LC_.  2.6.
  47026.  
  47027.     LC_CTYPE           This variable shall determine the locale for the
  47028.                        interpretation of sequences of bytes of text data
  47029.                        as characters (e.g., single- versus multibyte
  47030.                        characters in arguments).
  47031.  
  47032.     LC_MESSAGES        This variable shall determine the language in which
  47033.                        messages should be written.
  47034.  
  47035.  4.52.5.4  Asynchronous Events
  47036.  
  47037.  Default.
  47038.  
  47039.  
  47040.  4.52.6  External Effects
  47041.  
  47042.  
  47043.  
  47044.  
  47045.  
  47046.  
  47047.  
  47048.  
  47049.                Copyright c 1991 IEEE.  All rights reserved.
  47050.       This is an unapproved IEEE Standards Draft, subject to change.
  47051.  
  47052.  
  47053.  
  47054.  
  47055.  
  47056.  4.52 read - Read a line from standard input                           683
  47057.  
  47058.  
  47059.  
  47060.  
  47061.  
  47062.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  47063.  
  47064.  4.52.6.1  Standard Output
  47065.  
  47066.  None.
  47067.  
  47068.  
  47069.  4.52.6.2  Standard Error
  47070.  
  47071.  Used only for diagnostic messages.
  47072.  
  47073.  4.52.6.3  Output Files
  47074.  
  47075.  None.
  47076.  
  47077.  
  47078.  4.52.7  Extended Description
  47079.  
  47080.  None.
  47081.  
  47082.  
  47083.  4.52.8  Exit Status
  47084.  
  47085.  The read utility shall exit with one of the following values:
  47086.  
  47087.      0    Successful completion.
  47088.  
  47089.     >0    End-of-file was detected or an error occurred.
  47090.  
  47091.  
  47092.  4.52.9  Consequences of Errors
  47093.  
  47094.  Default.
  47095.  
  47096.  BEGIN_RATIONALE
  47097.  
  47098.  
  47099.  4.52.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  47100.  
  47101.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  47102.  
  47103.  The following command:
  47104.  
  47105.        while read -r xx yy
  47106.        do
  47107.                printf "%s %s\n" "$yy" "$xx"                                 1
  47108.        done < _i_n_p_u_t__f_i_l_e
  47109.  
  47110.  prints a file with the first field of each line moved to the end of the
  47111.  line.
  47112.  
  47113.  
  47114.  
  47115.                Copyright c 1991 IEEE.  All rights reserved.
  47116.       This is an unapproved IEEE Standards Draft, subject to change.
  47117.  
  47118.  
  47119.  
  47120.  
  47121.  
  47122.  684                                     4 Execution Environment Utilities
  47123.  
  47124.  
  47125.  
  47126.  
  47127.  
  47128.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  47129.  
  47130.  The text in 2.11.5.2 indicates that the results are undefined if an end-
  47131.  of-file is detected following a backslash at the end of a line when -r is
  47132.  not specified.
  47133.  
  47134.  Since read affects the current shell execution environment, it is
  47135.  generally provided as a shell regular built-in.  If it is called in a      1
  47136.  subshell or separate utility execution environment, such as one of the     1
  47137.  following:                                                                 1
  47138.  
  47139.        (read foo)                                                           1
  47140.        nohup read ...                                                       1
  47141.        find . -exec read ... \;                                             1
  47142.  
  47143.  it will not affect the shell variables in the caller's environment.        1
  47144.  
  47145.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  47146.  
  47147.  The read utility has historically been a shell built-in.  It was
  47148.  separated off into its own clause to take advantage of the standard's
  47149.  richer description of functionality at the utility level.
  47150.  
  47151.  The -r option was added to enable read to subsume the purpose of the
  47152.  historical line utility.
  47153.  
  47154.  END_RATIONALE
  47155.  
  47156.  
  47157.  
  47158.  
  47159.  
  47160.  
  47161.  
  47162.  
  47163.  
  47164.  
  47165.  
  47166.  
  47167.  
  47168.  
  47169.  
  47170.  
  47171.  
  47172.  
  47173.  
  47174.  
  47175.  
  47176.  
  47177.  
  47178.  
  47179.  
  47180.  
  47181.                Copyright c 1991 IEEE.  All rights reserved.
  47182.       This is an unapproved IEEE Standards Draft, subject to change.
  47183.  
  47184.  
  47185.  
  47186.  
  47187.  
  47188.  4.52 read - Read a line from standard input                           685
  47189.  
  47190.  
  47191.  
  47192.  
  47193.  
  47194.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  47195.  
  47196.  4.53  rm - Remove directory entries
  47197.  
  47198.  
  47199.  4.53.1  Synopsis
  47200.  
  47201.  
  47202.  rm  [-fiRr] _f_i_l_e ...
  47203.  
  47204.  
  47205.  4.53.2  Description
  47206.  
  47207.  The rm utility shall remove the directory entry specified by each _f_i_l_e
  47208.  argument.
  47209.  
  47210.  If either of the files dot or dot-dot are specified as the basename
  47211.  portion of an operand (i.e., the final pathname component), rm shall
  47212.  write a diagnostic message to standard error and do nothing more with
  47213.  such operands.
  47214.  
  47215.  For each _f_i_l_e the following steps shall be taken:
  47216.  
  47217.      (1)  If the _f_i_l_e does not exist:
  47218.  
  47219.            (a)  If the -f option is not specified, write a diagnostic
  47220.                 message to standard error.
  47221.  
  47222.            (b)  Go on to any remaining _f_i_l_e_s.
  47223.  
  47224.      (2)  If _f_i_l_e is of type directory, the following steps shall be
  47225.           taken:
  47226.  
  47227.            (a)  If neither the -R option nor the -r option is specified,
  47228.                 write a diagnostic message to standard error, do nothing
  47229.                 more with _f_i_l_e, and go on to any remaining files.
  47230.  
  47231.            (b)  If the -f option is not specified, and either the
  47232.                 permissions of _f_i_l_e do not permit writing and the standard
  47233.                 input is a terminal or the -i option is specified, write a
  47234.                 prompt to standard error and read a line from the standard
  47235.                 input.  If the response is not affirmative, do nothing
  47236.                 more with the current file and go on to any remaining
  47237.                 files.
  47238.  
  47239.            (c)  For each entry contained in _f_i_l_e, other than dot or dot-
  47240.                 dot, the four steps listed here [(1)-(4)] shall be taken
  47241.                 with the entry as if it were a _f_i_l_e operand.
  47242.  
  47243.            (d)  If the -i option is specified, write a prompt to standard
  47244.                 error and read a line from the standard input.  If the
  47245.                 response is not affirmative, do nothing more with the
  47246.  
  47247.                Copyright c 1991 IEEE.  All rights reserved.
  47248.       This is an unapproved IEEE Standards Draft, subject to change.
  47249.  
  47250.  
  47251.  
  47252.  
  47253.  
  47254.  686                                     4 Execution Environment Utilities
  47255.  
  47256.  
  47257.  
  47258.  
  47259.  
  47260.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  47261.  
  47262.                 current file, and go on to any remaining files.
  47263.  
  47264.      (3)  If _f_i_l_e is not of type directory, the -f option is not
  47265.           specified, and either the permissions of _f_i_l_e do not permit
  47266.           writing and the standard input is a terminal or the -i option is
  47267.           specified, write a prompt to the standard error and read a line
  47268.           from the standard input.  If the response is not affirmative, do
  47269.           nothing more with the current file and go on to any remaining
  47270.           files.
  47271.  
  47272.      (4)  If the current file is a directory, rm shall perform actions
  47273.           equivalent to the POSIX.1 {8} _r_m_d_i_r() function called with a
  47274.           pathname of the current file used as the _p_a_t_h argument.  If the
  47275.           current file is not a directory, rm shall perform actions
  47276.           equivalent to the POSIX.1 {8} _u_n_l_i_n_k() function called with a
  47277.           pathname of the current file used as the _p_a_t_h argument.
  47278.  
  47279.           If this fails for any reason, rm shall write a diagnostic
  47280.           message to standard error, do nothing more with the current
  47281.           file, and go on to any remaining files.
  47282.  
  47283.  The rm utility shall be able to descend to arbitrary depths in a file
  47284.  hierarchy, and shall not fail due to path length limitations (unless an
  47285.  operand specified by the user exceeds system limitations).
  47286.  
  47287.  
  47288.  4.53.3  Options
  47289.  
  47290.  The rm utility shall conform to the utility argument syntax guidelines     2
  47291.  described in 2.10.2.                                                       2
  47292.  
  47293.  The following options shall be supported by the implementation:
  47294.  
  47295.     -f          Do not prompt for confirmation.  Do not write diagnostic
  47296.                 messages or modify the exit status in the case of
  47297.                 nonexistent operands.  Any previous occurrences of the -i
  47298.                 option shall be ignored.
  47299.  
  47300.     -i          Prompt for confirmation as described in 4.53.2.  Any
  47301.                 previous occurrences of the -f option shall be ignored.
  47302.  
  47303.     -R          Remove file hierarchies.  See 4.53.2.
  47304.  
  47305.     -r          Equivalent to -R.
  47306.  
  47307.  
  47308.  
  47309.  
  47310.  
  47311.  
  47312.  
  47313.                Copyright c 1991 IEEE.  All rights reserved.
  47314.       This is an unapproved IEEE Standards Draft, subject to change.
  47315.  
  47316.  
  47317.  
  47318.  
  47319.  
  47320.  4.53 rm - Remove directory entries                                    687
  47321.  
  47322.  
  47323.  
  47324.  
  47325.  
  47326.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  47327.  
  47328.  4.53.4  Operands
  47329.  
  47330.  The following operand shall be supported by the implementation:
  47331.  
  47332.     _f_i_l_e        A pathname of a directory entry to be removed.
  47333.  
  47334.  
  47335.  4.53.5  External Influences
  47336.  
  47337.  
  47338.  4.53.5.1  Standard Input
  47339.  
  47340.  Used to read an input line in response to each prompt specified in
  47341.  4.53.6.1.  Otherwise, the standard input shall not be used.
  47342.  
  47343.  4.53.5.2  Input Files
  47344.  
  47345.  None.
  47346.  
  47347.  
  47348.  4.53.5.3  Environment Variables
  47349.  
  47350.  The following environment variables shall affect the execution of rm:
  47351.  
  47352.     LANG               This variable shall determine the locale to use for
  47353.                        the locale categories when both LC_ALL and the
  47354.                        corresponding environment variable (beginning with
  47355.                        LC_) do not specify a locale.  See 2.6.
  47356.  
  47357.     LC_ALL             This variable shall determine the locale to be used
  47358.                        to override any values for locale categories
  47359.                        specified by the settings of LANG or any
  47360.                        environment variables beginning with LC_.
  47361.  
  47362.     LC_COLLATE         This variable shall determine the locale for the
  47363.                        behavior of ranges, equivalence classes, and
  47364.                        multicharacter collating elements used in the
  47365.                        extended regular expression defined for the yesexpr
  47366.                        locale keyword in the LC_MESSAGES category.
  47367.  
  47368.     LC_CTYPE           This variable shall determine the locale for the
  47369.                        interpretation of sequences of bytes of text data
  47370.                        as characters (e.g., single- versus multibyte
  47371.                        characters in arguments) and the behavior of
  47372.                        character classes within regular expressions used
  47373.                        in the extended regular expression defined for the
  47374.                        yesexpr locale keyword in the LC_MESSAGES category.
  47375.  
  47376.  
  47377.  
  47378.  
  47379.                Copyright c 1991 IEEE.  All rights reserved.
  47380.       This is an unapproved IEEE Standards Draft, subject to change.
  47381.  
  47382.  
  47383.  
  47384.  
  47385.  
  47386.  688                                     4 Execution Environment Utilities
  47387.  
  47388.  
  47389.  
  47390.  
  47391.  
  47392.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  47393.  
  47394.     LC_MESSAGES        This variable shall determine the processing of
  47395.                        affirmative responses and the language in which
  47396.                        messages should be written.
  47397.  
  47398.  
  47399.  4.53.5.4  Asynchronous Events
  47400.  
  47401.  Default.
  47402.  
  47403.  
  47404.  4.53.6  External Effects
  47405.  
  47406.  4.53.6.1  Standard Output
  47407.  
  47408.  None.
  47409.  
  47410.  
  47411.  4.53.6.2  Standard Error
  47412.  
  47413.  Prompts shall be written to standard error under the conditions specified
  47414.  in 4.53.2 and 4.53.3.  The prompts shall contain the _f_i_l_e pathname, but
  47415.  their format is otherwise unspecified.  The standard error shall also be
  47416.  used for diagnostic messages.
  47417.  
  47418.  4.53.6.3  Output Files
  47419.  
  47420.  None.
  47421.  
  47422.  
  47423.  4.53.7  Extended Description
  47424.  
  47425.  None.
  47426.  
  47427.  
  47428.  4.53.8  Exit Status
  47429.  
  47430.  The rm utility shall exit with one of the following values:
  47431.  
  47432.      0    If the -f option was not specified, all the named directory
  47433.           entries were removed; otherwise, all the existing named
  47434.           directory entries were removed.
  47435.  
  47436.     >0    An error occurred.
  47437.  
  47438.  
  47439.  
  47440.  
  47441.  
  47442.  
  47443.  
  47444.  
  47445.                Copyright c 1991 IEEE.  All rights reserved.
  47446.       This is an unapproved IEEE Standards Draft, subject to change.
  47447.  
  47448.  
  47449.  
  47450.  
  47451.  
  47452.  4.53 rm - Remove directory entries                                    689
  47453.  
  47454.  
  47455.  
  47456.  
  47457.  
  47458.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  47459.  
  47460.  4.53.9  Consequences of Errors
  47461.  
  47462.  Default.
  47463.  
  47464.  BEGIN_RATIONALE
  47465.  
  47466.  
  47467.  4.53.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  47468.  
  47469.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  47470.  
  47471.  The _S_V_I_D requires that systems do not permit the removal of the last link
  47472.  to an executable binary file that is being executed.  Thus, the rm
  47473.  utility can fail to remove such files.
  47474.  
  47475.  The -i option causes rm to prompt and read the standard input even if the
  47476.  standard input is not a terminal, but in the absence of -i the mode
  47477.  prompting is not done when the standard input is not a terminal.           1
  47478.  
  47479.  For absolute clarity, paragraphs (2)(b) and (3) in 4.53.2, describing
  47480.  rm'_s behavior when prompting for confirmation, should be interpreted in
  47481.  the following manner:
  47482.  
  47483.        if ((NOT f_option) AND
  47484.                ((not_writable AND input_is_terminal) OR i_option))
  47485.  
  47486.  It is forbidden to remove the names dot and dot-dot in order to avoid the
  47487.  consequences of inadvertently doing something like:
  47488.  
  47489.        rm -r .*
  47490.  
  47491.  The following command
  47492.  
  47493.        rm a.out core
  47494.  
  47495.  removes the directory entries a.out and core.
  47496.  
  47497.  The following command
  47498.  
  47499.        rm -Rf junk
  47500.  
  47501.  removes the directory junk and all its contents, without prompting.
  47502.  
  47503.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  47504.  
  47505.  The exact format of the interactive prompts is unspecified.  Only the
  47506.  general nature of the contents of prompts are specified, because
  47507.  implementations may desire more descriptive prompts than those used on
  47508.  historical implementations.  Therefore, an application not using the -f
  47509.  
  47510.  
  47511.                Copyright c 1991 IEEE.  All rights reserved.
  47512.       This is an unapproved IEEE Standards Draft, subject to change.
  47513.  
  47514.  
  47515.  
  47516.  
  47517.  
  47518.  690                                     4 Execution Environment Utilities
  47519.  
  47520.  
  47521.  
  47522.  
  47523.  
  47524.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  47525.  
  47526.  option, or using the -i option relies on the system to provide the most
  47527.  suitable dialogue directly with the user, based on the behavior
  47528.  specified.
  47529.  
  47530.  The -r option is existing practice on all known systems.  The synonym -R
  47531.  option is provided for consistency with the other utilities in this
  47532.  standard that provide options requesting recursive descent.
  47533.  
  47534.  The behavior of the -f option in historical versions of rm is
  47535.  inconsistent.  In general, along with ``forcing'' the unlink without
  47536.  prompting for permission, it always causes diagnostic messages to be
  47537.  suppressed and the exit status to be unmodified for nonexistent operands
  47538.  and files that cannot be unlinked.  In some versions, however, the -f
  47539.  option suppresses usage messages and system errors as well.  Suppressing
  47540.  such messages is not a service to either shell scripts or users.
  47541.  
  47542.  It is less clear that error messages regarding unlinkable files should be
  47543.  suppressed.  Although this is historical practice, this standard does not
  47544.  permit the -f option to suppress such messages.
  47545.  
  47546.  When given the -r and -i options, historical versions of rm prompt the
  47547.  user twice for each directory, once before removing its contents and once
  47548.  before actually attempting to delete the directory entry that names it.
  47549.  This allows the user to ``prune'' the file hierarchy walk.  Historical
  47550.  versions of rm were inconsistent in that some did not do the former
  47551.  prompt for directories named on the command line and others had obscure
  47552.  prompting behavior when the -i option was specified and the permissions
  47553.  of the file did not permit writing.  The POSIX.2 rm differs little from
  47554.  historic practice, but does require that prompts be consistent.
  47555.  Historical versions of rm were also inconsistent in that prompts were
  47556.  done to both standard output and standard error.  POSIX.2 requires that
  47557.  prompts be done to standard error, for consistency with cp and mv and to
  47558.  allow existing extensions to rm that provide an option to list deleted
  47559.  files on standard output.
  47560.  
  47561.  The rm utility is required to descend to arbitrary depths so that any
  47562.  file hierarchy may be deleted.  This means, for example, that the rm
  47563.  utility cannot run out of file descriptors during its descent, i.e., if
  47564.  the number of file descriptors is limited, rm cannot be implemented in
  47565.  the historical fashion where a file descriptor is used per directory
  47566.  level.  Also, rm is not permitted to fail because of path length
  47567.  restrictions, unless an operand specified by the user is longer than
  47568.  {PATH_MAX}.
  47569.  
  47570.  END_RATIONALE
  47571.  
  47572.  
  47573.  
  47574.  
  47575.  
  47576.  
  47577.                Copyright c 1991 IEEE.  All rights reserved.
  47578.       This is an unapproved IEEE Standards Draft, subject to change.
  47579.  
  47580.  
  47581.  
  47582.  
  47583.  
  47584.  4.53 rm - Remove directory entries                                    691
  47585.  
  47586.  
  47587.  
  47588.  
  47589.  
  47590.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  47591.  
  47592.  4.54  rmdir - Remove directories
  47593.  
  47594.  
  47595.  4.54.1  Synopsis
  47596.  
  47597.  
  47598.  rmdir  [-p] _d_i_r ...
  47599.  
  47600.  
  47601.  4.54.2  Description
  47602.  
  47603.  The rmdir utility shall remove the directory entry specified by each _d_i_r
  47604.  operand, which shall refer to an empty directory.
  47605.  
  47606.  Directories shall be processed in the order specified.  If a directory
  47607.  and a subdirectory of that directory are specified in a single invocation
  47608.  of the rmdir utility, the subdirectory shall be specified before the
  47609.  parent directory so that the parent directory will be empty when the
  47610.  rmdir utility tries to remove it.
  47611.  
  47612.  
  47613.  4.54.3  Options
  47614.  
  47615.  The rmdir utility shall conform to the utility argument syntax guidelines
  47616.  described in 2.10.2.
  47617.  
  47618.  The following option shall be supported by the implementation:
  47619.  
  47620.     -p          Remove all directories in a pathname.  For each _d_i_r
  47621.                 operand:
  47622.  
  47623.                  (1)  The directory entry it names shall be removed.
  47624.  
  47625.                  (2)  If the _d_i_r operand includes more than one pathname
  47626.                       component, effects equivalent to the following
  47627.                       command shall occur:
  47628.  
  47629.                             rmdir -p $(dirname _d_i_r)
  47630.  
  47631.  
  47632.  4.54.4  Operands
  47633.  
  47634.  The following operand shall be supported by the implementation:
  47635.  
  47636.     _d_i_r         A pathname of an empty directory to be removed.
  47637.  
  47638.  
  47639.  
  47640.  
  47641.  
  47642.  
  47643.                Copyright c 1991 IEEE.  All rights reserved.
  47644.       This is an unapproved IEEE Standards Draft, subject to change.
  47645.  
  47646.  
  47647.  
  47648.  
  47649.  
  47650.  692                                     4 Execution Environment Utilities
  47651.  
  47652.  
  47653.  
  47654.  
  47655.  
  47656.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  47657.  
  47658.  4.54.5  External Influences
  47659.  
  47660.  
  47661.  4.54.5.1  Standard Input
  47662.  
  47663.  None.
  47664.  
  47665.  4.54.5.2  Input Files
  47666.  
  47667.  None.
  47668.  
  47669.  
  47670.  4.54.5.3  Environment Variables
  47671.  
  47672.  The following environment variables shall affect the execution of rmdir:
  47673.  
  47674.     LANG               This variable shall determine the locale to use for
  47675.                        the locale categories when both LC_ALL and the
  47676.                        corresponding environment variable (beginning with
  47677.                        LC_) do not specify a locale.  See 2.6.
  47678.  
  47679.     LC_ALL             This variable shall determine the locale to be used
  47680.                        to override any values for locale categories
  47681.                        specified by the settings of LANG or any
  47682.                        environment variables beginning with LC_.
  47683.  
  47684.     LC_CTYPE           This variable shall determine the locale for the
  47685.                        interpretation of sequences of bytes of text data
  47686.                        as characters (e.g., single- versus multibyte
  47687.                        characters in arguments).
  47688.  
  47689.     LC_MESSAGES        This variable shall determine the language in which
  47690.                        messages should be written.
  47691.  
  47692.  4.54.5.4  Asynchronous Events
  47693.  
  47694.  Default.
  47695.  
  47696.  
  47697.  4.54.6  External Effects
  47698.  
  47699.  
  47700.  4.54.6.1  Standard Output
  47701.  
  47702.  None.
  47703.  
  47704.  
  47705.  
  47706.  
  47707.  
  47708.  
  47709.                Copyright c 1991 IEEE.  All rights reserved.
  47710.       This is an unapproved IEEE Standards Draft, subject to change.
  47711.  
  47712.  
  47713.  
  47714.  
  47715.  
  47716.  4.54 rmdir - Remove directories                                       693
  47717.  
  47718.  
  47719.  
  47720.  
  47721.  
  47722.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  47723.  
  47724.  4.54.6.2  Standard Error
  47725.  
  47726.  Used only for diagnostic messages.
  47727.  
  47728.  
  47729.  4.54.6.3  Output Files
  47730.  
  47731.  None.
  47732.  
  47733.  
  47734.  4.54.7  Extended Description
  47735.  
  47736.  None.
  47737.  
  47738.  
  47739.  4.54.8  Exit Status
  47740.  
  47741.  The rmdir utility shall exit with one of the following values:
  47742.  
  47743.      0    Each directory entry specified by a _d_i_r operand was removed
  47744.           successfully.
  47745.  
  47746.     >0    An error occurred.
  47747.  
  47748.  
  47749.  4.54.9  Consequences of Errors
  47750.  
  47751.  Default.
  47752.  
  47753.  BEGIN_RATIONALE
  47754.  
  47755.  
  47756.  4.54.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  47757.  
  47758.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  47759.  
  47760.  On historical System V systems, the -p option also caused a message to be
  47761.  written to the standard output.  The message indicated whether the whole
  47762.  path was removed or part of the path remains for some reason.  The
  47763.  Standard Error subclause requires this diagnostic when the entire path
  47764.  specified by a _d_i_r operand is not removed, but does not allow the status
  47765.  message reporting success to be written as a diagnostic.
  47766.  
  47767.  If a directory a in the current directory is empty except it contains a
  47768.  directory b and a/b is empty except it contains a directory c,
  47769.  
  47770.        rmdir -p a/b/c
  47771.  
  47772.  will remove all three directories.
  47773.  
  47774.  
  47775.                Copyright c 1991 IEEE.  All rights reserved.
  47776.       This is an unapproved IEEE Standards Draft, subject to change.
  47777.  
  47778.  
  47779.  
  47780.  
  47781.  
  47782.  694                                     4 Execution Environment Utilities
  47783.  
  47784.  
  47785.  
  47786.  
  47787.  
  47788.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  47789.  
  47790.  The rmdir utility on System V also included an -s option that suppressed
  47791.  the informational message output by the -p option.  This option has been
  47792.  omitted because the informational message is not specified by POSIX.2.
  47793.  
  47794.  END_RATIONALE
  47795.  
  47796.  
  47797.  
  47798.  4.55  sed - Stream editor
  47799.  
  47800.  
  47801.  4.55.1  Synopsis
  47802.  
  47803.  sed  [-n] _s_c_r_i_p_t [_f_i_l_e ...]
  47804.  
  47805.  sed  [-n] [-e _s_c_r_i_p_t] ...  [-f _s_c_r_i_p_t__f_i_l_e] ...  [_f_i_l_e ...]
  47806.  
  47807.  
  47808.  4.55.2  Description
  47809.  
  47810.  The sed utility is a stream editor that shall read one or more text
  47811.  files, make editing changes according to a script of editing commands,
  47812.  and write the results to standard output.  The script shall be obtained
  47813.  from either the _s_c_r_i_p_t operand string or a combination of the option-
  47814.  arguments from the -e _s_c_r_i_p_t and -f _s_c_r_i_p_t__f_i_l_e options.
  47815.  
  47816.  
  47817.  4.55.3  Options
  47818.  
  47819.  The sed utility shall conform to the utility argument syntax guidelines
  47820.  described in 2.10.2, except that the order of presentation of the -e and
  47821.  -f options is significant.
  47822.  
  47823.  The following options shall be supported by the implementation:
  47824.  
  47825.     -e _s_c_r_i_p_t   Add the editing commands specified by the _s_c_r_i_p_t option-
  47826.                 argument to the end of the script of editing commands.
  47827.                 The _s_c_r_i_p_t option-argument shall have the same properties
  47828.                 as the _s_c_r_i_p_t operand, described in 4.55.4.
  47829.  
  47830.     -f _s_c_r_i_p_t__f_i_l_e
  47831.                 Add the editing commands in the file _s_c_r_i_p_t__f_i_l_e to the
  47832.                 end of the script.
  47833.  
  47834.     -n          Suppress the default output (in which each line, after it
  47835.                 is examined for editing, is written to standard output).
  47836.                 Only lines explicitly selected for output shall be
  47837.                 written.
  47838.  
  47839.  
  47840.  
  47841.                Copyright c 1991 IEEE.  All rights reserved.
  47842.       This is an unapproved IEEE Standards Draft, subject to change.
  47843.  
  47844.  
  47845.  
  47846.  
  47847.  
  47848.  4.55 sed - Stream editor                                              695
  47849.  
  47850.  
  47851.  
  47852.  
  47853.  
  47854.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  47855.  
  47856.  Multiple -e and -f options may be specified.  All commands shall be added
  47857.  to the script in the order specified, regardless of their origin.
  47858.  
  47859.  
  47860.  4.55.4  Operands
  47861.  
  47862.  The following operands shall be supported by the implementation:
  47863.  
  47864.     _f_i_l_e        A pathname of a file whose contents shall be read and
  47865.                 edited.  If multiple _f_i_l_e operands are specified, the
  47866.                 named files shall be read in the order specified and the
  47867.                 concatenation shall be edited.  If no _f_i_l_e operands are
  47868.                 specified, the standard input shall be used.
  47869.  
  47870.     _s_c_r_i_p_t      A string to be used as the script of editing commands.
  47871.                 The application shall not present a _s_c_r_i_p_t that violates
  47872.                 the restrictions of a text file (see 2.2.2.151), except
  47873.                 that the final character need not be a <newline>.
  47874.  
  47875.  
  47876.  4.55.5  External Influences
  47877.  
  47878.  
  47879.  4.55.5.1  Standard Input
  47880.  
  47881.  The standard input shall be used only if no _f_i_l_e operands are specified.
  47882.  See Input Files.
  47883.  
  47884.  4.55.5.2  Input Files
  47885.  
  47886.  The input files shall be text files.  The _s_c_r_i_p_t__f_i_l_es named by the -f
  47887.  option shall consist of editing commands, one per line.
  47888.  
  47889.  
  47890.  4.55.5.3  Environment Variables
  47891.  
  47892.  The following environment variables shall affect the execution of sed:
  47893.  
  47894.     LANG               This variable shall determine the locale to use for
  47895.                        the locale categories when both LC_ALL and the
  47896.                        corresponding environment variable (beginning with
  47897.                        LC_) do not specify a locale.  See 2.6.
  47898.  
  47899.     LC_ALL             This variable shall determine the locale to be used
  47900.                        to override any values for locale categories
  47901.                        specified by the settings of LANG or any
  47902.                        environment variables beginning with LC_.
  47903.  
  47904.  
  47905.  
  47906.  
  47907.                Copyright c 1991 IEEE.  All rights reserved.
  47908.       This is an unapproved IEEE Standards Draft, subject to change.
  47909.  
  47910.  
  47911.  
  47912.  
  47913.  
  47914.  696                                     4 Execution Environment Utilities
  47915.  
  47916.  
  47917.  
  47918.  
  47919.  
  47920.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  47921.  
  47922.     LC_COLLATE         This variable shall determine the locale for the
  47923.                        behavior of ranges, equivalence classes, and
  47924.                        multicharacter collating elements within regular
  47925.                        expressions.
  47926.  
  47927.     LC_CTYPE           This variable shall determine the locale for the
  47928.                        interpretation of sequences of bytes of text data
  47929.                        as characters (e.g., single- versus multibyte
  47930.                        characters in arguments and input files), and the
  47931.                        behavior of character classes within regular
  47932.                        expressions.
  47933.  
  47934.     LC_MESSAGES        This variable shall determine the language in which
  47935.                        messages should be written.
  47936.  
  47937.  
  47938.  4.55.5.4  Asynchronous Events
  47939.  
  47940.  Default.
  47941.  
  47942.  
  47943.  4.55.6  External Effects
  47944.  
  47945.  4.55.6.1  Standard Output
  47946.  
  47947.  The input files shall be written to standard output, with the editing
  47948.  commands specified in the script applied.  If the -n option is specified,
  47949.  only those input lines selected by the script shall be written to
  47950.  standard output.
  47951.  
  47952.  
  47953.  4.55.6.2  Standard Error
  47954.  
  47955.  Used only for diagnostic messages.
  47956.  
  47957.  4.55.6.3  Output Files
  47958.  
  47959.  The output files shall be text files whose formats are dependent on the
  47960.  editing commands given.
  47961.  
  47962.  
  47963.  4.55.7  Extended Description
  47964.  
  47965.  The _s_c_r_i_p_t shall consist of editing commands, one per line, of the
  47966.  following form:
  47967.  
  47968.        [_a_d_d_r_e_s_s[,_a_d_d_r_e_s_s]]_c_o_m_m_a_n_d[_a_r_g_u_m_e_n_t_s]
  47969.  
  47970.  
  47971.  
  47972.  
  47973.                Copyright c 1991 IEEE.  All rights reserved.
  47974.       This is an unapproved IEEE Standards Draft, subject to change.
  47975.  
  47976.  
  47977.  
  47978.  
  47979.  
  47980.  4.55 sed - Stream editor                                              697
  47981.  
  47982.  
  47983.  
  47984.  
  47985.  
  47986.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  47987.  
  47988.  Zero or more <blank>s shall be accepted before the first address and
  47989.  before _c_o_m_m_a_n_d.
  47990.  
  47991.  In default operation, sed cyclically shall copy a line of input, less its  1
  47992.  terminating <newline>, into a _p_a_t_t_e_r_n _s_p_a_c_e (unless there is something     1
  47993.  left after a D command), apply in sequence all commands whose addresses
  47994.  select that pattern space, and at the end of the script copy the pattern
  47995.  space to standard output (except when -n is specified) and delete the
  47996.  pattern space.  Whenever the pattern space is written to standard output   1
  47997.  or a named file, sed shall immediately follow it with a <newline>.         1
  47998.  
  47999.  Some of the commands use a _h_o_l_d _s_p_a_c_e to save all or part of the _p_a_t_t_e_r_n
  48000.  _s_p_a_c_e for subsequent retrieval.  The _p_a_t_t_e_r_n and _h_o_l_d _s_p_a_c_e_s shall each
  48001.  be able to hold at least 8192 bytes.
  48002.  
  48003.  
  48004.  _4._5_5._7._1  sed _A_d_d_r_e_s_s_e_s
  48005.  
  48006.  An address is either empty, a decimal number that counts input lines
  48007.  cumulatively across files, a $ character that addresses the last line of
  48008.  input, or a context address (which consists of a regular expression as
  48009.  described in 4.55.7.2, preceded and followed by a delimiter, usually a
  48010.  slash).
  48011.  
  48012.  A command line with no addresses shall select every pattern space.
  48013.  
  48014.  A command line with one address shall select each pattern space that
  48015.  matches the address.
  48016.  
  48017.  A command line with two addresses shall select the inclusive range from
  48018.  the first pattern space that matches the first address through the next
  48019.  pattern space that matches the second.  (If the second address is a
  48020.  number less than or equal to the line number first selected, only one
  48021.  line shall be selected.)  Starting at the first line following the
  48022.  selected range, sed shall look again for the first address.  Thereafter
  48023.  the process shall be repeated.
  48024.  
  48025.  Editing commands can be applied only to nonselected pattern spaces by use
  48026.  of the negation command ! (see 4.55.7.3).
  48027.  
  48028.  _4._5_5._7._2  sed _R_e_g_u_l_a_r _E_x_p_r_e_s_s_i_o_n_s
  48029.  
  48030.  The sed utility shall support the basic regular expressions described in
  48031.  2.8.3, with the following additions:
  48032.  
  48033.      (1)  In a context address, the construction \_c_R_E_c, where _c is any
  48034.           character other than <backslash> or <newline>, shall be           1
  48035.           identical to /_R_E/.  If the character designated by _c appears
  48036.           following a backslash, then it shall be considered to be that
  48037.  
  48038.  
  48039.                Copyright c 1991 IEEE.  All rights reserved.
  48040.       This is an unapproved IEEE Standards Draft, subject to change.
  48041.  
  48042.  
  48043.  
  48044.  
  48045.  
  48046.  698                                     4 Execution Environment Utilities
  48047.  
  48048.  
  48049.  
  48050.  
  48051.  
  48052.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  48053.  
  48054.           literal character, which shall not terminate the RE.  For
  48055.           example, in the context address \xabc\xdefx, the second x stands
  48056.           for itself, so that the regular expression is abcxdef.
  48057.  
  48058.      (2)  The escape sequence \n shall match a <newline> embedded in the
  48059.           pattern space.  A literal <newline> character shall not be used
  48060.           in the regular expression of a context address or in the
  48061.           substitute command.
  48062.  
  48063.  
  48064.  4.55.7.3  sed Editing Commands
  48065.  
  48066.  In the following list of commands, the maximum number of permissible
  48067.  addresses for each command is indicated by [_0_a_d_d_r], [_1_a_d_d_r], or [_2_a_d_d_r],
  48068.  representing zero, one, or two addresses.
  48069.  
  48070.  The argument _t_e_x_t shall consist of one or more lines.  Each embedded
  48071.  <newline> in the text shall be preceded by a backslash.  Other
  48072.  backslashes in text shall be removed and the following character shall be
  48073.  treated literally.
  48074.  
  48075.  The r and w commands take an optional _r_f_i_l_e (or _w_f_i_l_e) parameter,
  48076.  separated from the command letter by one or more <blank>s;
  48077.  implementations may allow zero separation as an extension.
  48078.  
  48079.  The argument _r_f_i_l_e or the argument _w_f_i_l_e shall terminate the command
  48080.  line.  Each _w_f_i_l_e shall be created before processing begins.
  48081.  Implementations shall support at least nine _w_f_i_l_e arguments in the
  48082.  script; the actual number (_>9) that shall be supported by the
  48083.  implementation is unspecified.  The use of the _w_f_i_l_e parameter shall
  48084.  cause that file to be initially created, if it does not exist, or shall
  48085.  replace the contents of an existing file.
  48086.  
  48087.  The b, r, s, t, w, y, !, and : commands shall accept additional
  48088.  arguments.  The following synopses indicate which arguments shall be
  48089.  separated from the commands by a single <space>.
  48090.  
  48091.  Two of the commands take a _c_o_m_m_a_n_d-_l_i_s_t, which is a list of sed commands
  48092.  separated by <newline>s, as follows:
  48093.  
  48094.        { _c_o_m_m_a_n_d
  48095.        _c_o_m_m_a_n_d
  48096.        ...
  48097.        }
  48098.  
  48099.  The { can be preceded with <blank>s and can be followed with white space.
  48100.  The _c_o_m_m_a_n_d_s can be preceded by white space.  The terminating } shall be
  48101.  preceded by a <newline> and then zero or more <blank>s.
  48102.  
  48103.  
  48104.  
  48105.                Copyright c 1991 IEEE.  All rights reserved.
  48106.       This is an unapproved IEEE Standards Draft, subject to change.
  48107.  
  48108.  
  48109.  
  48110.  
  48111.  
  48112.  4.55 sed - Stream editor                                              699
  48113.  
  48114.  
  48115.  
  48116.  
  48117.  
  48118.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  48119.  
  48120.     [_2_a_d_d_r] {_c_o_m_m_a_n_d-_l_i_s_t
  48121.     }           Execute _c_o_m_m_a_n_d-_l_i_s_t only when the pattern space is
  48122.                 selected.
  48123.  
  48124.     [_1_a_d_d_r]a\
  48125.          _t_e_x_t   Write _t_e_x_t to standard output just before each attempt to   1
  48126.                 fetch a line of input, whether by executing the N command   1
  48127.                 or by beginning a new cycle.                                1
  48128.  
  48129.     [_2_a_d_d_r]b [_l_a_b_e_l]
  48130.                 Branch to the : command bearing the _l_a_b_e_l. If _l_a_b_e_l is not
  48131.                 specified, branch to the end of the script.  The
  48132.                 implementation shall support _l_a_b_e_l_s recognized as unique
  48133.                 up to at least 8 characters; the actual length (_>8) that
  48134.                 shall be supported by the implementation is unspecified.
  48135.                 It is unspecified whether exceeding a label length causes
  48136.                 an error or a silent truncation.
  48137.  
  48138.     [_2_a_d_d_r]c\
  48139.          _t_e_x_t   Delete the pattern space.  With 0 or 1 address or at the
  48140.                 end of a 2-address range, place _t_e_x_t on the output.
  48141.  
  48142.     [_2_a_d_d_r]d    Delete the pattern space and start the next cycle.
  48143.  
  48144.     [_2_a_d_d_r]D    Delete the initial segment of the pattern space through
  48145.                 the first <newline> and start the next cycle.
  48146.  
  48147.     [_2_a_d_d_r]g    Replace the contents of the pattern space by the contents
  48148.                 of the hold space.
  48149.  
  48150.     [_2_a_d_d_r]G    Append to the pattern space a <newline> followed by the     1
  48151.                 contents of the hold space.                                 1
  48152.  
  48153.     [_2_a_d_d_r]h    Replace the contents of the hold space with the contents
  48154.                 of the pattern space.
  48155.  
  48156.     [_2_a_d_d_r]H    Append to the hold space a <newline> followed by the        1
  48157.                 contents of the pattern space.                              1
  48158.  
  48159.     [_1_a_d_d_r]i\
  48160.          _t_e_x_t   Write _t_e_x_t to standard output.                              1
  48161.  
  48162.     [_2_a_d_d_r]l    (The letter ell.)  Write the pattern space to standard
  48163.                 output in a visually unambiguous form.  The characters      1
  48164.                 listed in Table 2-15 (see 2.12) shall be written as the     1
  48165.                 corresponding escape sequence.  Nonprintable characters     1
  48166.                 not in Table 2-15 shall be written as one three-digit       1
  48167.                 octal number (with a preceding <backslash>) for each byte   1
  48168.                 in the character (most significant byte first).  If the     1
  48169.  
  48170.  
  48171.                Copyright c 1991 IEEE.  All rights reserved.
  48172.       This is an unapproved IEEE Standards Draft, subject to change.
  48173.  
  48174.  
  48175.  
  48176.  
  48177.  
  48178.  700                                     4 Execution Environment Utilities
  48179.  
  48180.  
  48181.  
  48182.  
  48183.  
  48184.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  48185.  
  48186.                 size of a byte on the system is greater than nine bits,     1
  48187.                 the format used for nonprintable characters is              1
  48188.                 implementation defined.                                     1
  48189.  
  48190.                 Long lines shall be folded, with the point of folding       1
  48191.                 indicated by writing <backslash><newline>; the length at    1
  48192.                 which folding occurs is unspecified, but should be          1
  48193.                 appropriate for the output device.  The end of each line    1
  48194.                 shall be marked with a $.                                   1
  48195.  
  48196.     [_2_a_d_d_r]n    Write the pattern space to standard output if the default
  48197.                 output has not been suppressed, and replace the pattern
  48198.                 space with the next line of input.
  48199.  
  48200.     [_2_a_d_d_r]N    Append the next line of input to the pattern space, using
  48201.                 an embedded <newline> to separate the appended material
  48202.                 from the original material.  Note that the current line
  48203.                 number changes.
  48204.  
  48205.     [_2_a_d_d_r]p    Write the pattern space to standard output.
  48206.  
  48207.     [_2_a_d_d_r]P    Write the pattern space, up to the first <newline>, to      1
  48208.                 standard output.
  48209.  
  48210.     [_1_a_d_d_r]q    Branch to the end of the script and quit without starting
  48211.                 a new cycle.
  48212.  
  48213.     [_1_a_d_d_r]r _r_f_i_l_e
  48214.                 Copy the contents of _r_f_i_l_e to standard output just before   1
  48215.                 each attempt to fetch a line of input.  If _r_f_i_l_e does not   1
  48216.                 exist or cannot be read, it shall be treated as if it were  1
  48217.                 an empty file, causing no error condition.                  1
  48218.  
  48219.     [_2_a_d_d_r]s/_r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n/_r_e_p_l_a_c_e_m_e_n_t/_f_l_a_g_s
  48220.                 Substitute the _r_e_p_l_a_c_e_m_e_n_t string for instances of the
  48221.                 _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n in the pattern space.  Any character
  48222.                 other than <backslash> or <newline> can be used instead of  1
  48223.                 a slash to delimit the RE and the replacement.  Within the  1
  48224.                 RE and the replacement, the RE delimiter itself can be
  48225.                 used as a literal character if it is preceded by a
  48226.                 backslash.
  48227.  
  48228.                 An ampersand (&) appearing in the _r_e_p_l_a_c_e_m_e_n_t shall be
  48229.                 replaced by the string matching the RE.  The special
  48230.                 meaning of & in this context can be suppressed by
  48231.                 preceding it by backslash.  The characters \_n, where _n is
  48232.                 a digit, shall be replaced by the text matched by the
  48233.                 corresponding backreference expression (see 2.8.3.3).
  48234.  
  48235.  
  48236.  
  48237.                Copyright c 1991 IEEE.  All rights reserved.
  48238.       This is an unapproved IEEE Standards Draft, subject to change.
  48239.  
  48240.  
  48241.  
  48242.  
  48243.  
  48244.  4.55 sed - Stream editor                                              701
  48245.  
  48246.  
  48247.  
  48248.  
  48249.  
  48250.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  48251.  
  48252.                 A line can be split by substituting a <newline> character
  48253.                 into it.  The application shall escape the <newline> in     1
  48254.                 the _r_e_p_l_a_c_e_m_e_n_t by preceding it by backslash.  A            1
  48255.                 substitution shall be considered to have been performed
  48256.                 even if the replacement string is identical to the string
  48257.                 that it replaces.
  48258.  
  48259.                 The value of _f_l_a_g_s shall be zero or more of:
  48260.  
  48261.                    _n        Substitute for the _nth occurrence only of the
  48262.                             _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n found within the pattern
  48263.                             space.
  48264.  
  48265.                    g        Globally substitute for all nonoverlapping
  48266.                             instances of the _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n rather
  48267.                             than just the first one.  If both g and _n are
  48268.                             specified, the results are unspecified.
  48269.  
  48270.                    p        Write the pattern space to standard output if
  48271.                             a replacement was made.
  48272.  
  48273.                    w _w_f_i_l_e  Write.  Append the pattern space to _w_f_i_l_e if a
  48274.                             replacement was made.
  48275.  
  48276.     [_2_a_d_d_r]t [_l_a_b_e_l]
  48277.                 Test.  Branch to the : command bearing the _l_a_b_e_l if any
  48278.                 substitutions have been made since the most recent reading
  48279.                 of an input line or execution of a t.  If _l_a_b_e_l is not
  48280.                 specified, branch to the end of the script.
  48281.  
  48282.     [_2_a_d_d_r]w _w_f_i_l_e
  48283.                 Append [write] the pattern space to _w_f_i_l_e.
  48284.  
  48285.     [_2_a_d_d_r]x    Exchange the contents of the pattern and hold spaces.
  48286.  
  48287.     [_2_a_d_d_r]y/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/
  48288.                 Replace all occurrences of characters in _s_t_r_i_n_g_1 with the
  48289.                 corresponding characters in _s_t_r_i_n_g_2. If the number of
  48290.                 characters in _s_t_r_i_n_g_1 and _s_t_r_i_n_g_2 are not equal, or if any
  48291.                 of the characters in _s_t_r_i_n_g_1 appear more than once, the
  48292.                 results are undefined.  Any character other than            1
  48293.                 <backslash> or <newline> can be used instead of slash to    1
  48294.                 delimit the strings.  Within _s_t_r_i_n_g_1 and _s_t_r_i_n_g_2, the       1
  48295.                 delimiter itself can be used as a literal character if it   1
  48296.                 is preceded by a backslash.                                 1
  48297.  
  48298.  
  48299.  
  48300.  
  48301.  
  48302.  
  48303.                Copyright c 1991 IEEE.  All rights reserved.
  48304.       This is an unapproved IEEE Standards Draft, subject to change.
  48305.  
  48306.  
  48307.  
  48308.  
  48309.  
  48310.  702                                     4 Execution Environment Utilities
  48311.  
  48312.  
  48313.  
  48314.  
  48315.  
  48316.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  48317.  
  48318.     [_2_a_d_d_r]!_c_o_m_m_a_n_d
  48319.     [_2_a_d_d_r]!{_c_o_m_m_a_n_d-_l_i_s_t
  48320.     }           Apply the _c_o_m_m_a_n_d or _c_o_m_m_a_n_d-_l_i_s_t only to the lines that
  48321.                 are not selected by the address(es).
  48322.  
  48323.     [_0_a_d_d_r]:_l_a_b_e_l
  48324.                 This command shall do nothing; it bears a _l_a_b_e_l for the b
  48325.                 and t commands to branch to.
  48326.  
  48327.     [_1_a_d_d_r]=    Write the following to standard output:
  48328.  
  48329.                       "%d\n", <_c_u_r_r_e_n_t _l_i_n_e _n_u_m_b_e_r>                         1
  48330.  
  48331.     [_0_a_d_d_r]     An empty command shall be ignored.
  48332.  
  48333.     [_0_a_d_d_r]#    The # and the remainder of the line shall be ignored
  48334.                 (treated as a comment), with the single exception that if
  48335.                 the first two characters in the file are #n, the default
  48336.                 output shall be suppressed; this shall be the equivalent
  48337.                 of specifying -n on the command line.
  48338.  
  48339.  
  48340.  4.55.8  Exit Status
  48341.  
  48342.  The sed utility shall exit with one of the following values:
  48343.  
  48344.      0    Successful completion.
  48345.  
  48346.     >0    An error occurred.
  48347.  
  48348.  
  48349.  4.55.9  Consequences of Errors
  48350.  
  48351.  Default.
  48352.  
  48353.  BEGIN_RATIONALE
  48354.  
  48355.  
  48356.  4.55.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  48357.  
  48358.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  48359.  
  48360.  See the rationale for cat (4.4.10) for an example sed script.
  48361.  
  48362.  This standard requires implementations to support at least nine distinct
  48363.  _w_f_i_l_e_s, matching historical practice on many implementations.
  48364.  Implementations are encouraged to support more, but portable applications
  48365.  should not exceed this limit.
  48366.  
  48367.  
  48368.  
  48369.                Copyright c 1991 IEEE.  All rights reserved.
  48370.       This is an unapproved IEEE Standards Draft, subject to change.
  48371.  
  48372.  
  48373.  
  48374.  
  48375.  
  48376.  4.55 sed - Stream editor                                              703
  48377.  
  48378.  
  48379.  
  48380.  
  48381.  
  48382.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  48383.  
  48384.  Note that regular expressions match entire strings, not just individual
  48385.  lines, but <newline> is matched by \n in a sed RE; <newline> is not
  48386.  allowed in an RE.  Also note that \n cannot be used to match a <newline>
  48387.  at the end of an input line; <newline>s appear in the pattern space as a
  48388.  result of the N editing command.
  48389.  
  48390.  The exit status codes specified here are different from those in
  48391.  System V.  System V returns 2 for garbled sed commands, but returns zero
  48392.  with its usage message or if the input file could not be opened.  The
  48393.  working group considered this to be a bug.
  48394.  
  48395.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  48396.  
  48397.  The manner in which the l command writes nonprintable characters was
  48398.  changed to avoid the historical backspace-overstrike method and added      1
  48399.  other requirements to achieve unambiguous output.  See the rationale for   1
  48400.  ed (4.20.10) for details of the format chosen, which is the same as that   1
  48401.  chosen for sed.                                                            1
  48402.  
  48403.  The standard requires implementations to provide pattern and hold spaces
  48404.  of at least 8192 bytes, larger than the 4000-byte spaces used by some
  48405.  historical implementations, but less than the 20K byte limit used in an
  48406.  earlier draft.  Implementations are encouraged to dynamically allocate
  48407.  larger pattern and hold spaces as needed.
  48408.  
  48409.  The requirements for acceptance of <blank>s and <space>s in command lines
  48410.  has been made more explicit than in earlier drafts to clearly describe
  48411.  existing practice and remove confusion about the phrase ``protect initial
  48412.  blanks [sic] and tabs from the stripping that is done on every script
  48413.  line'' that appears in much of the historical documentation of the sed
  48414.  utility description of text.  (Not all implementations are known to have   1
  48415.  stripped <blank>s from text lines, although they all have allowed leading  1
  48416.  <blank>s preceding the address on a command line.)                         1
  48417.  
  48418.  The treatment of # comments differs from the _S_V_I_D, which only allows a
  48419.  comment as the first line of the script, but matches BSD-derived
  48420.  implementations.  The comment character is treated as a command and it
  48421.  has the same properties in terms of being accepted with leading <blank>_s;
  48422.  the BSD implementation has historically supported this.
  48423.  
  48424.  Earlier drafts of POSIX.2 required that a _s_c_r_i_p_t__f_i_l_e have at least one
  48425.  noncomment line.  Some historical implementations have behaved in
  48426.  unexpected ways if this were not the case.  The working group felt that
  48427.  this was incorrect behavior, and that application developers should not
  48428.  have to work around this feature.  A correct implementation of POSIX.2
  48429.  shall permit _s_c_r_i_p_t__f_i_l_es that consist only of comment lines.
  48430.  
  48431.  Earlier drafts indicated that if -e and -f options were intermixed, all
  48432.  -e options were processed before any -f options.  This has been changed
  48433.  
  48434.  
  48435.                Copyright c 1991 IEEE.  All rights reserved.
  48436.       This is an unapproved IEEE Standards Draft, subject to change.
  48437.  
  48438.  
  48439.  
  48440.  
  48441.  
  48442.  704                                     4 Execution Environment Utilities
  48443.  
  48444.  
  48445.  
  48446.  
  48447.  
  48448.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  48449.  
  48450.  to process them in the order presented because it matches existing
  48451.  practice and is more intuitive.
  48452.  
  48453.  The treatment of the p flag to the s command differs between System V and
  48454.  BSD-based systems (actually, between Version 7 and 32V) when the default
  48455.  output is suppressed.  In the two examples:
  48456.  
  48457.        echo a | sed    's/a/A/p'
  48458.        echo a | sed -n 's/a/A/p'
  48459.  
  48460.  POSIX.2, BSD, System V documentation, and the _S_V_I_D indicate that the
  48461.  first example should write two lines with A, whereas the second should
  48462.  write one.  Some System V systems write the A only once in both examples,
  48463.  because the p flag is ignored if the -n option is not specified.
  48464.  
  48465.  This is a case of a diametrical difference between systems that could not
  48466.  be reconciled through the compromise of declaring the behavior to be
  48467.  unspecified.  The _S_V_I_D/BSD/32V behavior was adopted for POSIX.2 because:
  48468.  
  48469.      - No known documentation for any historic system describes the
  48470.        interaction between the p flag and the -n option.
  48471.  
  48472.      - The selected behavior is more correct as there is no technical
  48473.        justification for any interaction between the p flag and the -n
  48474.        option.  A relationship between -n and the p flag might imply that
  48475.        they are only used together (when p should be a no-op), but this
  48476.        ignores valid scripts that interrupt the cyclical nature of the
  48477.        processing through the use of the D, d, q, or branching commands.
  48478.        Such scripts rely on the p suffix to write the pattern space
  48479.        because they do not make use of the default output at the
  48480.        ``bottom'' of the script.
  48481.  
  48482.      - Because the -n option makes the p flag a no-op, any interaction
  48483.        would only be useful if sed scripts were written to run both with
  48484.        and without the -n option.  This is believed to be unlikely.  It is
  48485.        even more unlikely that programmers have coded the p flag expecting
  48486.        it to be a no-op.  Because the interaction was not documented, the
  48487.        likelihood of a programmer discovering the interaction and
  48488.        depending on it is further decreased.
  48489.  
  48490.      - Finally, scripts that break under the specified behavior will
  48491.        produce too much output instead of too little, which is easier to
  48492.        diagnose and correct.
  48493.  
  48494.  The form of the substitute command that uses the _n suffix was limited to
  48495.  the first 512 matches in a previous draft.  This limit has been removed
  48496.  because there is no reason an editor processing lines of {LINE_MAX}
  48497.  length should have this restriction.  The command s/a/A/2047 should be
  48498.  able to substitute the 2047th occurrence of a on a line.
  48499.  
  48500.  
  48501.                Copyright c 1991 IEEE.  All rights reserved.
  48502.       This is an unapproved IEEE Standards Draft, subject to change.
  48503.  
  48504.  
  48505.  
  48506.  
  48507.  
  48508.  4.55 sed - Stream editor                                              705
  48509.  
  48510.  
  48511.  
  48512.  
  48513.  
  48514.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  48515.  
  48516.  END_RATIONALE
  48517.  
  48518.  
  48519.  
  48520.  4.56  sh - Shell, the standard command language interpreter
  48521.  
  48522.  
  48523.  4.56.1  Synopsis
  48524.  
  48525.  sh  [-aCefinuvx] [ _c_o_m_m_a_n_d__f_i_l_e [_a_r_g_u_m_e_n_t ...]  ]                          1
  48526.  
  48527.  sh  -c [-aCefinuvx] _c_o_m_m_a_n_d__s_t_r_i_n_g [ _c_o_m_m_a_n_d__n_a_m_e [_a_r_g_u_m_e_n_t ...]  ]        1
  48528.  sh  -s [-aCefinuvx] [_a_r_g_u_m_e_n_t ...]                                         1
  48529.  
  48530.  
  48531.  4.56.2  Description
  48532.  
  48533.  The sh utility is a command language interpreter that shall execute
  48534.  commands read from a command-line string, the standard input, or a
  48535.  specified file.  The commands to be executed shall be expressed in the
  48536.  language described in Section 3.
  48537.  
  48538.  
  48539.  4.56.3  Options
  48540.  
  48541.  The sh utility shall conform to the utility argument syntax guidelines
  48542.  described in 2.10.2.
  48543.  
  48544.  The -a, -C, -e, -f, -n, -u, -v, and -x options are described as part of
  48545.  the set utility in 3.14.11.  The following additional options shall be
  48546.  supported by the implementation:
  48547.  
  48548.     -c          Read commands from the _c_o_m_m_a_n_d__s_t_r_i_n_g operand.  Set the
  48549.                 value of special parameter 0 (see 3.5.2) from the value of
  48550.                 the _c_o_m_m_a_n_d__n_a_m_e operand and the positional parameters
  48551.                 ($1, $2, etc.) in sequence from the remaining _a_r_g_u_m_e_n_t
  48552.                 operands.  No commands shall be read from the standard
  48553.                 input.
  48554.  
  48555.     -i          Specify that the shell is _i_n_t_e_r_a_c_t_i_v_e; see below.  An
  48556.                 implementation may treat specifying the -i option as an
  48557.                 error if the real user ID of the calling process does not
  48558.                 equal the effective user ID or if the real group ID does
  48559.                 not equal the effective user ID.
  48560.  
  48561.     -s          Read commands from the standard input.
  48562.  
  48563.  If there are no operands and the -c option is not specified, the -s
  48564.  option shall be assumed.
  48565.  
  48566.  
  48567.                Copyright c 1991 IEEE.  All rights reserved.
  48568.       This is an unapproved IEEE Standards Draft, subject to change.
  48569.  
  48570.  
  48571.  
  48572.  
  48573.  
  48574.  706                                     4 Execution Environment Utilities
  48575.  
  48576.  
  48577.  
  48578.  
  48579.  
  48580.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  48581.  
  48582.  If the -i option is present, or if there are no operands and the shell's
  48583.  standard input and standard error are attached to a terminal, the shell
  48584.  is considered to be _i_n_t_e_r_a_c_t_i_v_e.  (See 3.1.4.)  The behavior of an
  48585.  interactive shell is not fully specified by this standard.
  48586.  
  48587.  NOTE:  The preceding sentence is expected to change following the
  48588.  eventual approval of the UPE supplement.
  48589.  
  48590.  Implementations may accept the option letters with a leading plus sign
  48591.  (+) instead of a leading hyphen (meaning the reverse case of the option
  48592.  as described in this standard).  A conforming application shall protect
  48593.  its first operand, if it starts with a plus sign, by preceding it with
  48594.  the -- argument that denotes ``end of options.''
  48595.  
  48596.  
  48597.  4.56.4  Operands
  48598.  
  48599.  The following operands shall be supported by the implementation:
  48600.  
  48601.     -           A single hyphen shall be treated as the first operand and
  48602.                 then ignored.  If both - and -- are given as arguments, or
  48603.                 if other operands precede the single hyphen, the results
  48604.                 are undefined.
  48605.  
  48606.     _a_r_g_u_m_e_n_t    The positional parameters ($1, $2, etc.)  shall be set to
  48607.                 _a_r_g_u_m_e_n_t_s, if any.
  48608.  
  48609.     _c_o_m_m_a_n_d__f_i_l_e
  48610.                 The pathname of a file containing commands.  If the         1
  48611.                 pathname contains one or more slash characters, the         1
  48612.                 implementation shall attempt to read that file; the file    1
  48613.                 need not be executable.  If the pathname does not contain   1
  48614.                 a slash character:
  48615.  
  48616.                  - The implementation shall attempt to read that file from
  48617.                    the current working directory; the file need not be
  48618.                    executable.
  48619.  
  48620.                  - If the file is not in the current working directory,
  48621.                    the implementation may perform a search for an
  48622.                    executable file using the value of PATH, as described
  48623.                    in 3.9.1.1.
  48624.  
  48625.                 Special parameter 0 (see 3.5.2) shall be set to the value
  48626.                 of _c_o_m_m_a_n_d__f_i_l_e. If sh is called using a synopsis form
  48627.                 that omits _c_o_m_m_a_n_d__f_i_l_e, special parameter 0 shall be set
  48628.                 to the value of the first argument passed to sh from its
  48629.                 parent (e.g., _a_r_g_v[0] in the C binding), which is normally
  48630.                 a pathname used to execute the sh utility.
  48631.  
  48632.  
  48633.                Copyright c 1991 IEEE.  All rights reserved.
  48634.       This is an unapproved IEEE Standards Draft, subject to change.
  48635.  
  48636.  
  48637.  
  48638.  
  48639.  
  48640.  4.56 sh - Shell, the standard command language interpreter            707
  48641.  
  48642.  
  48643.  
  48644.  
  48645.  
  48646.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  48647.  
  48648.     _c_o_m_m_a_n_d__n_a_m_e
  48649.                 A string assigned to special parameter 0 when executing
  48650.                 the commands in _c_o_m_m_a_n_d__s_t_r_i_n_g. If _c_o_m_m_a_n_d__n_a_m_e is not
  48651.                 specified, special parameter 0 shall be set to the value
  48652.                 of the first argument passed to sh from its parent (e.g.,
  48653.                 _a_r_g_v[0] in the C binding), which is normally a pathname
  48654.                 used to execute the sh utility.
  48655.  
  48656.     _c_o_m_m_a_n_d__s_t_r_i_n_g
  48657.                 A string that shall be interpreted by the shell as one or
  48658.                 more commands, as if the string were the argument to the
  48659.                 function in 7.1.1 [such as the _s_y_s_t_e_m() function in the C
  48660.                 binding].  If the _c_o_m_m_a_n_d__s_t_r_i_n_g operand is an empty        1
  48661.                 string, sh shall exit with a zero exit status.              1
  48662.  
  48663.  
  48664.  4.56.5  External Influences
  48665.  
  48666.  
  48667.  4.56.5.1  Standard Input
  48668.  
  48669.  The standard input shall be used only if:
  48670.  
  48671.      (1)  The -s option is specified, or;
  48672.  
  48673.      (2)  The -c option is not specified and no operands are specified,
  48674.           or;
  48675.  
  48676.      (3)  The script executes one or more commands that require input from
  48677.           standard input (such as a read command that does not redirect
  48678.           its input).
  48679.  
  48680.  See Input Files.
  48681.  
  48682.  When the shell is using standard input and it invokes a command that also
  48683.  uses standard input, the shell shall ensure that the standard input file
  48684.  pointer points directly after the command it has read when the command
  48685.  begins execution.  It shall not read ahead in such a manner that any       1
  48686.  characters intended to be read by the invoked command are consumed by the  1
  48687.  shell (whether interpreted by the shell or not) or that characters that    1
  48688.  are not read by the invoked command are not seen by the shell.  When the   1
  48689.  command expecting to read standard input is started asynchronously by an
  48690.  interactive shell, it is unspecified whether characters are read by the
  48691.  command or interpreted by the shell.
  48692.  
  48693.  If the standard input to sh is a FIFO or terminal device and is set to     1
  48694.  nonblocking reads, then sh shall enable blocking reads on standard input.  1
  48695.  This shall remain in effect when the command completes.                    1
  48696.  
  48697.  
  48698.  
  48699.                Copyright c 1991 IEEE.  All rights reserved.
  48700.       This is an unapproved IEEE Standards Draft, subject to change.
  48701.  
  48702.  
  48703.  
  48704.  
  48705.  
  48706.  708                                     4 Execution Environment Utilities
  48707.  
  48708.  
  48709.  
  48710.  
  48711.  
  48712.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  48713.  
  48714.  4.56.5.2  Input Files
  48715.  
  48716.  The input file shall be a text file, except that line lengths shall be     1
  48717.  unlimited.  If the input file is empty or consists solely of blank lines   1
  48718.  and/or comments, sh shall exit with a zero exit status.                    1
  48719.  
  48720.  
  48721.  4.56.5.3  Environment Variables
  48722.  
  48723.  The following environment variables shall affect the execution of sh:
  48724.  
  48725.     HOME               This variable shall be interpreted as the pathname
  48726.                        of the user's home directory.  The contents of HOME
  48727.                        are used in Tilde Expansion as described in 3.6.1.
  48728.  
  48729.     IFS                _I_n_p_u_t _f_i_e_l_d _s_e_p_a_r_a_t_o_r_s:  a string treated as a list
  48730.                        of characters that shall be used for field
  48731.                        splitting and to split lines into words with the
  48732.                        read command.  See 3.6.5.  If IFS is not set, the
  48733.                        shell shall behave as if the value of IFS were the
  48734.                        <space>, <tab>, and <newline> characters.
  48735.                        Implementations may ignore the value of IFS in the
  48736.                        environment at the time sh is invoked, treating IFS
  48737.                        as if it were not set.
  48738.  
  48739.     LANG               This variable shall determine the locale to use for
  48740.                        the locale categories when both LC_ALL and the
  48741.                        corresponding environment variable (beginning with
  48742.                        LC_) do not specify a locale.  See 2.6.
  48743.  
  48744.     LC_ALL             This variable shall determine the locale to be used
  48745.                        to override any values for locale categories
  48746.                        specified by the settings of LANG or any
  48747.                        environment variables beginning with LC_.
  48748.  
  48749.     LC_COLLATE         This variable shall determine the behavior of range
  48750.                        expressions, equivalence classes, and
  48751.                        multicharacter collating elements within pattern
  48752.                        matching.
  48753.  
  48754.     LC_CTYPE           This variable shall determine the locale for the
  48755.                        interpretation of sequences of bytes of text data
  48756.                        as characters (e.g., single- versus multibyte
  48757.                        characters in arguments and input files), which
  48758.                        characters are defined as letters (character class
  48759.                        alpha), and the behavior of character classes
  48760.                        within pattern matching.
  48761.  
  48762.  
  48763.  
  48764.  
  48765.                Copyright c 1991 IEEE.  All rights reserved.
  48766.       This is an unapproved IEEE Standards Draft, subject to change.
  48767.  
  48768.  
  48769.  
  48770.  
  48771.  
  48772.  4.56 sh - Shell, the standard command language interpreter            709
  48773.  
  48774.  
  48775.  
  48776.  
  48777.  
  48778.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  48779.  
  48780.     LC_MESSAGES        This variable shall determine the language in which
  48781.                        messages should be written.
  48782.  
  48783.     PATH               This variable shall represent a string formatted as
  48784.                        described in 2.6, used to effect command
  48785.                        interpretation.  See 3.9.1.1.
  48786.  
  48787.  
  48788.  4.56.5.4  Asynchronous Events
  48789.  
  48790.  Default.
  48791.  
  48792.  
  48793.  4.56.6  External Effects
  48794.  
  48795.  4.56.6.1  Standard Output
  48796.  
  48797.  See Standard Error.
  48798.  
  48799.  
  48800.  4.56.6.2  Standard Error
  48801.  
  48802.  Except as otherwise stated (by the descriptions of any invoked utilities
  48803.  or in interactive mode), standard error is used only for diagnostic
  48804.  messages.
  48805.  
  48806.  4.56.6.3  Output Files
  48807.  
  48808.  None.
  48809.  
  48810.  
  48811.  4.56.7  Extended Description
  48812.  
  48813.  See Section 3.
  48814.  
  48815.  
  48816.  4.56.8  Exit Status
  48817.  
  48818.  The sh utility shall exit with one of the following values:                1
  48819.  
  48820.         0    The script to be executed consisted solely of zero or more     1
  48821.              blank lines and/or comments.                                   1
  48822.  
  48823.     1-125    A noninteractive shell detected a syntax, redirection, or      1
  48824.              variable assignment error.                                     1
  48825.  
  48826.       127    A specified _c_o_m_m_a_n_d__f_i_l_e could not be found by a               1
  48827.              noninteractive shell.                                          1
  48828.  
  48829.  
  48830.  
  48831.                Copyright c 1991 IEEE.  All rights reserved.
  48832.       This is an unapproved IEEE Standards Draft, subject to change.
  48833.  
  48834.  
  48835.  
  48836.  
  48837.  
  48838.  710                                     4 Execution Environment Utilities
  48839.  
  48840.  
  48841.  
  48842.  
  48843.  
  48844.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  48845.  
  48846.  Otherwise, the shell shall return the exit status of the last command it
  48847.  invoked or attempted to invoke (see also the exit utility in 3.14.7).
  48848.  
  48849.  
  48850.  4.56.9  Consequences of Errors
  48851.  
  48852.  See 3.8.1.
  48853.  
  48854.  BEGIN_RATIONALE
  48855.  
  48856.  
  48857.  4.56.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  48858.  
  48859.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  48860.  
  48861.        sh -c "cat myfile"
  48862.  
  48863.        sh my_shell_cmds
  48864.  
  48865.  The sh utility and the set special built-in utility share a common set of
  48866.  options.  Unlike set, however, the POSIX.2 sh does not specify the use of
  48867.  + as an option flag, because it is not particularly useful (the + variety
  48868.  generally invokes the default behavior) and because _g_e_t_o_p_t() does not
  48869.  support it.  However, since many historical implementations do support
  48870.  the plus, applications will have to guard against the relatively obscure
  48871.  case of a first operand with a leading plus sign.
  48872.  
  48873.  There is a large number of environment variables used by historical
  48874.  implementations of sh that will not be introduced by POSIX.2 until the
  48875.  UPE is completed.
  48876.  
  48877.  The KornShell ignores the contents of IFS upon entry to the script.  A
  48878.  conforming application cannot rely on importing IFS.  One justification
  48879.  for this, beyond security considerations, is to assist possible future
  48880.  shell compilers.  Allowing IFS to be imported from the environment will
  48881.  prevent many optimizations that might otherwise be performed via dataflow
  48882.  analysis of the script itself.
  48883.  
  48884.  The standard input and standard error are the files that determine
  48885.  whether a shell is interactive when -i is not specified.  For example,
  48886.  
  48887.        sh > file      and        sh 2> file
  48888.  
  48889.  create interactive and noninteractive shells, respectively.  Although
  48890.  both accept terminal input, the results of error conditions will be
  48891.  different, as described in 3.8.1; in the second example a redirection
  48892.  error encountered by a special built-in utility will abort the shell.
  48893.  
  48894.  
  48895.  
  48896.  
  48897.                Copyright c 1991 IEEE.  All rights reserved.
  48898.       This is an unapproved IEEE Standards Draft, subject to change.
  48899.  
  48900.  
  48901.  
  48902.  
  48903.  
  48904.  4.56 sh - Shell, the standard command language interpreter            711
  48905.  
  48906.  
  48907.  
  48908.  
  48909.  
  48910.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  48911.  
  48912.  The text in Standard Input about nonblocking reads concerns an instance    1
  48913.  of sh that has been invoked, probably by a C-language program, with        1
  48914.  standard input that has been opened using the O_NONBLOCK flag; see         1
  48915.  POSIX.1 {8} _o_p_e_n().  If the shell did not reset this flag, it would        1
  48916.  immediately terminate because no input data would be available yet and     1
  48917.  that would be considered the same as end-of-file.                          1
  48918.  
  48919.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  48920.  
  48921.  See the Rationale for Section 3 concerning the lack of interactive
  48922.  features in sh.  These features, including optional job control, are
  48923.  scheduled to be added in the User Portability Extension.
  48924.  
  48925.  The PS1 and PS2 variables are not specified because this standard,
  48926.  without UPE, does not describe an interactive shell.
  48927.  
  48928.  The options associated with a _r_e_s_t_r_i_c_t_e_d _s_h_e_l_l (command name rsh and the
  48929.  -r option) were excluded because the developers of the standard felt that
  48930.  the implied level of security was not achievable and they did not want to
  48931.  raise false expectations.
  48932.  
  48933.  On systems that support set-user-ID scripts, a historical trapdoor has
  48934.  been to link a script to the name -i.  When it is called by a sequence
  48935.  such as sh - or by #! /bin/sh - the historical systems have assumed that
  48936.  no option letters follow.  Thus, POSIX.2 allows the single hyphen to mark
  48937.  the end of the options, in addition to the use of the regular --
  48938.  argument, because it was felt that the older practice was so pervasive.
  48939.  An alternative approach is taken by the KornShell, where real and
  48940.  effective user/group IDs must match for an interactive shell; this
  48941.  behavior is specifically allowed by POSIX.2.  (Note:  there are other
  48942.  problems with set-user-ID scripts that the two approaches described here
  48943.  do not deal with.)
  48944.  
  48945.  END_RATIONALE
  48946.  
  48947.  
  48948.  
  48949.  
  48950.  
  48951.  
  48952.  
  48953.  
  48954.  
  48955.  
  48956.  
  48957.  
  48958.  
  48959.  
  48960.  
  48961.  
  48962.  
  48963.                Copyright c 1991 IEEE.  All rights reserved.
  48964.       This is an unapproved IEEE Standards Draft, subject to change.
  48965.  
  48966.  
  48967.  
  48968.  
  48969.  
  48970.  712                                     4 Execution Environment Utilities
  48971.  
  48972.  
  48973.  
  48974.  
  48975.  
  48976.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  48977.  
  48978.  4.57  sleep - Suspend execution for an interval
  48979.  
  48980.  
  48981.  4.57.1  Synopsis
  48982.  
  48983.  
  48984.  sleep  _t_i_m_e
  48985.  
  48986.  
  48987.  4.57.2  Description
  48988.  
  48989.  The sleep utility shall suspend execution for at least the integral
  48990.  number of seconds specified by the _t_i_m_e operand.
  48991.  
  48992.  
  48993.  4.57.3  Options
  48994.  
  48995.  None.
  48996.  
  48997.  
  48998.  4.57.4  Operands
  48999.  
  49000.  The following operands shall be supported by the implementation:
  49001.  
  49002.     _t_i_m_e        A nonnegative decimal integer specifying the number of
  49003.                 seconds for which to suspend execution.
  49004.  
  49005.  
  49006.  4.57.5  External Influences
  49007.  
  49008.  4.57.5.1  Standard Input
  49009.  
  49010.  None.
  49011.  
  49012.  
  49013.  4.57.5.2  Input Files
  49014.  
  49015.  None.
  49016.  
  49017.  4.57.5.3  Environment Variables
  49018.  
  49019.  The following environment variables shall affect the execution of sleep:
  49020.  
  49021.     LANG               This variable shall determine the locale to use for
  49022.                        the locale categories when both LC_ALL and the
  49023.                        corresponding environment variable (beginning with
  49024.                        LC_) do not specify a locale.  See 2.6.
  49025.  
  49026.  
  49027.  
  49028.  
  49029.                Copyright c 1991 IEEE.  All rights reserved.
  49030.       This is an unapproved IEEE Standards Draft, subject to change.
  49031.  
  49032.  
  49033.  
  49034.  
  49035.  
  49036.  4.57 sleep - Suspend execution for an interval                        713
  49037.  
  49038.  
  49039.  
  49040.  
  49041.  
  49042.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  49043.  
  49044.     LC_ALL             This variable shall determine the locale to be used
  49045.                        to override any values for locale categories
  49046.                        specified by the settings of LANG or any
  49047.                        environment variables beginning with LC_.
  49048.  
  49049.     LC_CTYPE           This variable shall determine the locale for the
  49050.                        interpretation of sequences of bytes of text data
  49051.                        as characters (e.g., single- versus multibyte
  49052.                        characters in arguments).
  49053.  
  49054.     LC_MESSAGES        This variable shall determine the language in which
  49055.                        messages should be written.
  49056.  
  49057.  
  49058.  4.57.5.4  Asynchronous Events
  49059.  
  49060.  If the sleep utility receives a SIGALRM signal, one of the following
  49061.  actions shall be taken:
  49062.  
  49063.      (1)  Terminate normally with a zero exit status
  49064.  
  49065.      (2)  Effectively ignore the signal
  49066.  
  49067.      (3)  Provide the default behavior for signals described in 2.11.5.4.
  49068.           This could include terminating with a nonzero exit status.
  49069.  
  49070.  The sleep utility shall take the standard action for all other signals;
  49071.  see 2.11.5.4.
  49072.  
  49073.  
  49074.  4.57.6  External Effects
  49075.  
  49076.  4.57.6.1  Standard Output
  49077.  
  49078.  None.
  49079.  
  49080.  
  49081.  4.57.6.2  Standard Error
  49082.  
  49083.  Used only for diagnostic messages.
  49084.  
  49085.  4.57.6.3  Output Files
  49086.  
  49087.  None.
  49088.  
  49089.  
  49090.  
  49091.  
  49092.  
  49093.  
  49094.  
  49095.                Copyright c 1991 IEEE.  All rights reserved.
  49096.       This is an unapproved IEEE Standards Draft, subject to change.
  49097.  
  49098.  
  49099.  
  49100.  
  49101.  
  49102.  714                                     4 Execution Environment Utilities
  49103.  
  49104.  
  49105.  
  49106.  
  49107.  
  49108.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  49109.  
  49110.  4.57.7  Extended Description
  49111.  
  49112.  None.
  49113.  
  49114.  
  49115.  4.57.8  Exit Status
  49116.  
  49117.  The sleep utility shall exit with one of the following values:
  49118.  
  49119.      0    The execution was successfully suspended for at least _t_i_m_e
  49120.           seconds, or a SIGALRM signal was received (see 4.57.5.4).
  49121.  
  49122.     >0    An error occurred.
  49123.  
  49124.  
  49125.  4.57.9  Consequences of Errors
  49126.  
  49127.  Default.
  49128.  
  49129.  BEGIN_RATIONALE
  49130.  
  49131.  
  49132.  4.57.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  49133.  
  49134.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  49135.  
  49136.  The exit status is allowed to be zero when sleep is interrupted by the
  49137.  SIGALRM signal, because most implementations of this utility rely on the
  49138.  arrival of that signal to notify them that the requested finishing time
  49139.  has been successfully attained.  Such implementations thus do not
  49140.  distinguish this situation from the successful completion case.  Other
  49141.  implementations are allowed to catch the signal and go back to sleep
  49142.  until the requested time expires or provide the normal signal termination
  49143.  procedures.
  49144.  
  49145.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  49146.  
  49147.  As with all other utilities that take integral operands and do not
  49148.  specify subranges of allowed values, sleep is required by this standard
  49149.  to deal with _t_i_m_e requests of up to 2147483647 seconds.  This may mean
  49150.  that some implementations will have to make multiple calls to the
  49151.  underlying operating system's delay mechanism if its argument range is
  49152.  less than this.
  49153.  
  49154.  END_RATIONALE
  49155.  
  49156.  
  49157.  
  49158.  
  49159.  
  49160.  
  49161.                Copyright c 1991 IEEE.  All rights reserved.
  49162.       This is an unapproved IEEE Standards Draft, subject to change.
  49163.  
  49164.  
  49165.  
  49166.  
  49167.  
  49168.  4.57 sleep - Suspend execution for an interval                        715
  49169.  
  49170.  
  49171.  
  49172.  
  49173.  
  49174.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  49175.  
  49176.  4.58  sort - Sort, merge, or sequence check text files
  49177.  
  49178.  
  49179.  4.58.1  Synopsis
  49180.  
  49181.  
  49182.  sort  [-m] [-o _o_u_t_p_u_t] [-bdfinru] [-t _c_h_a_r] [-k _k_e_y_d_e_f] ...  [_f_i_l_e ...]
  49183.  sort  -c [-bdfinru] [-t _c_h_a_r] [-k _k_e_y_d_e_f] ...  [_f_i_l_e]
  49184.  
  49185.  _O_b_s_o_l_e_s_c_e_n_t _V_e_r_s_i_o_n_s:
  49186.  
  49187.  sort  [-mu] [-o _o_u_t_p_u_t] [-bdfinr] [-t _c_h_a_r] [+_p_o_s_1[-_p_o_s_2]] ...
  49188.        [_f_i_l_e ...]
  49189.  sort  -c [-u] [-bdfinr] [-t _c_h_a_r] [+_p_o_s_1[-_p_o_s_2]] ...  [_f_i_l_e]
  49190.  
  49191.  
  49192.  4.58.2  Description
  49193.  
  49194.  The sort utility shall perform one of the following functions:
  49195.  
  49196.      (1)  Sort lines of all the named files together and write the result
  49197.           to the specified output.
  49198.  
  49199.      (2)  Merge lines of all the named (presorted) files together and
  49200.           write the result to the specified output.
  49201.  
  49202.      (3)  Check that a single input file is correctly presorted.
  49203.  
  49204.  Comparisons shall be based on one or more sort keys extracted from each
  49205.  line of input (or the entire line if no sort keys are specified), and
  49206.  shall be performed using the collating sequence of the current locale.
  49207.  
  49208.  
  49209.  4.58.3  Options
  49210.  
  49211.  The sort utility shall conform to the utility argument syntax guidelines
  49212.  described in 2.10.2, except that the notation +_p_o_s_1 -_p_o_s_2 uses a
  49213.  nonstandard prefix and multidigit option names in the obsolescent
  49214.  versions, the -o _o_u_t_p_u_t option shall be recognized after a _f_i_l_e operand
  49215.  as an obsolescent feature in both versions where the -c option is not
  49216.  specified, and the -k _k_e_y_d_e_f option should follow the -b, -d, -f, -i, -n,
  49217.  and -r options.
  49218.  
  49219.  The following options shall be supported by the implementation:
  49220.  
  49221.     -c          Check that the single input file is ordered as specified
  49222.                 by the arguments and the collating sequence of the current
  49223.                 locale.  No output shall be produced; only the exit code
  49224.                 shall be affected.
  49225.  
  49226.  
  49227.                Copyright c 1991 IEEE.  All rights reserved.
  49228.       This is an unapproved IEEE Standards Draft, subject to change.
  49229.  
  49230.  
  49231.  
  49232.  
  49233.  
  49234.  716                                     4 Execution Environment Utilities
  49235.  
  49236.  
  49237.  
  49238.  
  49239.  
  49240.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  49241.  
  49242.     -m          Merge only; the input files shall be assumed to be already
  49243.                 sorted.
  49244.  
  49245.     -o _o_u_t_p_u_t   Specify the name of an output file to be used instead of
  49246.                 the standard output.  This file can be the same as one of
  49247.                 the input _f_i_l_es.
  49248.  
  49249.     -u          Unique: suppress all but one in each set of lines having
  49250.                 equal keys.  If used with the -c option, check that there
  49251.                 are no lines with duplicate keys, in addition to checking
  49252.                 that the input file is sorted.
  49253.  
  49254.  The following options shall override the default ordering rules.  When
  49255.  ordering options appear independent of any key field specifications, the
  49256.  requested field ordering rules shall be applied globally to all sort
  49257.  keys.  When attached to a specific key (see -k), the specified ordering
  49258.  options shall override all global ordering options for that key.  In the
  49259.  obsolescent forms, if one or more of these options follows a +_p_o_s_1
  49260.  option, it shall affect only the key field specified by that preceding
  49261.  option.
  49262.  
  49263.     -d          Specify that only <blank>s and alphanumeric characters,
  49264.                 according to the current setting of LC_CTYPE, shall be
  49265.                 significant in comparisons.  The behavior is undefined for
  49266.                 a sort key to which -i or -n also applies.
  49267.  
  49268.     -f          Consider all lowercase characters that have uppercase
  49269.                 equivalents, according to the current setting of LC_CTYPE,
  49270.                 to be the uppercase equivalent for the purposes of
  49271.                 comparison.
  49272.  
  49273.     -i          Ignore all characters that are nonprintable, according to
  49274.                 the current setting of LC_CTYPE.
  49275.  
  49276.     -n          Restrict the sort key to an initial numeric string,
  49277.                 consisting of optional <blank>s, optional minus sign, and
  49278.                 zero or more digits with an optional radix character and
  49279.                 thousands separators (as defined in the current locale),
  49280.                 which shall be sorted by arithmetic value.  An empty digit
  49281.                 string shall be treated as zero.  Leading zeros and signs
  49282.                 on zeros shall not affect ordering.
  49283.  
  49284.     -r          Reverse the sense of comparisons.
  49285.  
  49286.  The treatment of field separators can be altered using the options:
  49287.  
  49288.     -b          Ignore leading <blank>s when determining the starting and
  49289.                 ending positions of a restricted sort key.  If the -b
  49290.                 option is specified before the first -k option, it shall
  49291.  
  49292.  
  49293.                Copyright c 1991 IEEE.  All rights reserved.
  49294.       This is an unapproved IEEE Standards Draft, subject to change.
  49295.  
  49296.  
  49297.  
  49298.  
  49299.  
  49300.  4.58 sort - Sort, merge, or sequence check text files                 717
  49301.  
  49302.  
  49303.  
  49304.  
  49305.  
  49306.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  49307.  
  49308.                 be applied to all -k options.  Otherwise, the -b option
  49309.                 can be attached independently to each -k _f_i_e_l_d__s_t_a_r_t or
  49310.                 _f_i_e_l_d__e_n_d option-argument (see below).
  49311.  
  49312.     -t _c_h_a_r     Use _c_h_a_r as the field separator character; _c_h_a_r shall not
  49313.                 be considered to be part of a field (although it can be
  49314.                 included in a sort key).  Each occurrence of _c_h_a_r shall be
  49315.                 significant (for example, <_c_h_a_r><_c_h_a_r> shall delimit an
  49316.                 empty field).  If -t is not specified, <blank> characters
  49317.                 shall be used as default field separators; each maximal
  49318.                 nonempty sequence of <blank> characters that follows a
  49319.                 non-<blank> character shall be a field separator.
  49320.  
  49321.  Sort keys can be specified using the options:
  49322.  
  49323.     -k _k_e_y_d_e_f   The _k_e_y_d_e_f argument is a restricted sort key field
  49324.                 definition.  The format of this definition is
  49325.  
  49326.                       _f_i_e_l_d__s_t_a_r_t[_t_y_p_e][,_f_i_e_l_d__e_n_d[_t_y_p_e]]
  49327.  
  49328.                 where _f_i_e_l_d__s_t_a_r_t and _f_i_e_l_d__e_n_d define a key field
  49329.                 restricted to a portion of the line (see 4.58.7), and _t_y_p_e
  49330.                 is a modifier from the list of characters b, d, f, i, n,
  49331.                 r.  The b modifier shall behave like the -b option, but
  49332.                 applies only to the _f_i_e_l_d__s_t_a_r_t or _f_i_e_l_d__e_n_d to which it
  49333.                 is attached.  The other modifiers shall behave like the
  49334.                 corresponding options, but shall apply only to the key
  49335.                 field to which they are attached; they shall have this
  49336.                 effect if specified with _f_i_e_l_d__s_t_a_r_t, _f_i_e_l_d__e_n_d, or both.
  49337.                 Modifiers attached to a _f_i_e_l_d__s_t_a_r_t or _f_i_e_l_d__e_n_d shall
  49338.                 override any specifications made by the options.
  49339.                 Implementations shall support at least nine occurrences of
  49340.                 the -k option, which shall be significant in command line
  49341.                 order.  If no -k option is specified, a default sort key
  49342.                 of the entire line shall be used.
  49343.  
  49344.                 When there are multiple key fields, later keys shall be
  49345.                 compared only after all earlier keys compare equal.
  49346.                 Except when the -u option is specified, lines that
  49347.                 otherwise compare equal shall be ordered as if none of the
  49348.                 options -d, -f, -i, -n, or -k were present (but with -r
  49349.                 still in effect, if it was specified) and with all bytes
  49350.                 in the lines significant to the comparison.  The order in
  49351.                 which lines that still compare equal are written is
  49352.                 unspecified.
  49353.  
  49354.     +_p_o_s_1       (Obsolescent.)  Specify the start position of a key field.
  49355.                 See 4.58.7.
  49356.  
  49357.  
  49358.  
  49359.                Copyright c 1991 IEEE.  All rights reserved.
  49360.       This is an unapproved IEEE Standards Draft, subject to change.
  49361.  
  49362.  
  49363.  
  49364.  
  49365.  
  49366.  718                                     4 Execution Environment Utilities
  49367.  
  49368.  
  49369.  
  49370.  
  49371.  
  49372.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  49373.  
  49374.     -_p_o_s_2       (Obsolescent.)  Specify the end position of a key field.
  49375.                 See 4.58.7.
  49376.  
  49377.  
  49378.  4.58.4  Operands
  49379.  
  49380.  The following operand shall be supported by the implementation:
  49381.  
  49382.     _f_i_l_e        A pathname of a file to be sorted, merged, or checked.  If
  49383.                 no _f_i_l_e operands are specified, or if a _f_i_l_e operand is -,
  49384.                 the standard input shall be used.
  49385.  
  49386.  
  49387.  4.58.5  External Influences
  49388.  
  49389.  
  49390.  4.58.5.1  Standard Input
  49391.  
  49392.  The standard input shall be used only if no _f_i_l_e operands are specified,
  49393.  or if a _f_i_l_e operand is -.  See Input Files.
  49394.  
  49395.  4.58.5.2  Input Files
  49396.  
  49397.  The input files shall be text files, except that the sort utility shall
  49398.  add a <newline> to the end of a file ending with an incomplete last line.
  49399.  
  49400.  
  49401.  4.58.5.3  Environment Variables
  49402.  
  49403.  The following environment variables shall affect the execution of sort:
  49404.  
  49405.     LANG               This variable shall determine the locale to use for
  49406.                        the locale categories when both LC_ALL and the
  49407.                        corresponding environment variable (beginning with
  49408.                        LC_) do not specify a locale.  See 2.6.
  49409.  
  49410.     LC_ALL             This variable shall determine the locale to be used
  49411.                        to override any values for locale categories
  49412.                        specified by the settings of LANG or any
  49413.                        environment variables beginning with LC_.
  49414.  
  49415.     LC_COLLATE         This variable shall determine the locale for
  49416.                        ordering rules.
  49417.  
  49418.     LC_CTYPE           This variable shall determine the locale for the
  49419.                        interpretation of sequences of bytes of text data
  49420.                        as characters (e.g., single- versus multibyte
  49421.                        characters in arguments and input files) and the
  49422.                        behavior of character classification for the -b,
  49423.                        -d, -f, -i, and -n options.
  49424.  
  49425.                Copyright c 1991 IEEE.  All rights reserved.
  49426.       This is an unapproved IEEE Standards Draft, subject to change.
  49427.  
  49428.  
  49429.  
  49430.  
  49431.  
  49432.  4.58 sort - Sort, merge, or sequence check text files                 719
  49433.  
  49434.  
  49435.  
  49436.  
  49437.  
  49438.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  49439.  
  49440.     LC_MESSAGES        This variable shall determine the language in which
  49441.                        messages should be written.
  49442.  
  49443.     LC_NUMERIC         This variable shall determine the locale for the
  49444.                        definition of the radix character and thousands
  49445.                        separator for the -n option.
  49446.  
  49447.  
  49448.  4.58.5.4  Asynchronous Events
  49449.  
  49450.  Default.
  49451.  
  49452.  
  49453.  4.58.6  External Effects
  49454.  
  49455.  4.58.6.1  Standard Output
  49456.  
  49457.  Unless the -o or -c options are in effect, the standard output shall
  49458.  contain the sorted input.
  49459.  
  49460.  
  49461.  4.58.6.2  Standard Error
  49462.  
  49463.  Used only for diagnostic messages.  A warning message about correcting an  2
  49464.  incomplete last line of an input file may be generated, but need not       2
  49465.  affect the final exit status.                                              2
  49466.  
  49467.  4.58.6.3  Output Files
  49468.  
  49469.  If the -o option is in effect, the sorted input shall be placed in the
  49470.  file _o_u_t_p_u_t.
  49471.  
  49472.  
  49473.  4.58.7  Extended Description
  49474.  
  49475.  The notation
  49476.  
  49477.        -k _f_i_e_l_d__s_t_a_r_t[_t_y_p_e][,_f_i_e_l_d__e_n_d[_t_y_p_e]]
  49478.  
  49479.  shall define a key field that begins at _f_i_e_l_d__s_t_a_r_t and ends at _f_i_e_l_d__e_n_d
  49480.  inclusive, unless _f_i_e_l_d__s_t_a_r_t falls beyond the end of the line or after
  49481.  _f_i_e_l_d__e_n_d, in which case the key field shall be empty.  A missing
  49482.  _f_i_e_l_d__e_n_d shall mean the last character of the line.
  49483.  
  49484.  A field comprises a maximal sequence of nonseparating characters and, in   1
  49485.  the absence of option -t, any preceding field separator.                   1
  49486.  
  49487.  The _f_i_e_l_d__s_t_a_r_t portion of the _k_e_y_d_e_f option argument shall have the
  49488.  form:
  49489.  
  49490.  
  49491.                Copyright c 1991 IEEE.  All rights reserved.
  49492.       This is an unapproved IEEE Standards Draft, subject to change.
  49493.  
  49494.  
  49495.  
  49496.  
  49497.  
  49498.  720                                     4 Execution Environment Utilities
  49499.  
  49500.  
  49501.  
  49502.  
  49503.  
  49504.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  49505.  
  49506.        _f_i_e_l_d__n_u_m_b_e_r[._f_i_r_s_t__c_h_a_r_a_c_t_e_r]
  49507.  
  49508.  Fields and characters within fields shall be numbered starting with 1.
  49509.  The _f_i_e_l_d__n_u_m_b_e_r and _f_i_r_s_t__c_h_a_r_a_c_t_e_r pieces, interpreted as positive
  49510.  decimal integers, shall specify the first character to be used as part of
  49511.  a sort key.  If ._f_i_r_s_t__c_h_a_r_a_c_t_e_r is omitted, it shall refer to the first
  49512.  character of the field.
  49513.  
  49514.  The _f_i_e_l_d__e_n_d portion of the _k_e_y_d_e_f option argument shall have the form:
  49515.  
  49516.        _f_i_e_l_d__n_u_m_b_e_r[._l_a_s_t__c_h_a_r_a_c_t_e_r]
  49517.  
  49518.  The _f_i_e_l_d__n_u_m_b_e_r shall be as described above for _f_i_e_l_d__s_t_a_r_t. The
  49519.  _l_a_s_t__c_h_a_r_a_c_t_e_r piece, interpreted as a nonnegative decimal integer, shall
  49520.  specify the last character to be used as part of the sort key.  If
  49521.  _l_a_s_t__c_h_a_r_a_c_t_e_r evaluates to zero or ._l_a_s_t__c_h_a_r_a_c_t_e_r is omitted, it shall
  49522.  refer to the last character of the field specified by _f_i_e_l_d__n_u_m_b_e_r.
  49523.  
  49524.  If the -b option or b type modifier is in effect, characters within a
  49525.  field shall be counted from the first non-<blank> in the field.  (This
  49526.  shall apply separately to _f_i_r_s_t__c_h_a_r_a_c_t_e_r and _l_a_s_t__c_h_a_r_a_c_t_e_r.)
  49527.  
  49528.  The obsolescent [ +_p_o_s_1 [-_p_o_s_2] ] options provide functionality
  49529.  equivalent to the -k _k_e_y_d_e_f option.  For comparison, the full formats of
  49530.  these options shall be:
  49531.  
  49532.    +_f_i_e_l_d_0__n_u_m_b_e_r[._f_i_r_s_t_0__c_h_a_r_a_c_t_e_r][_t_y_p_e] [-_f_i_e_l_d_0__n_u_m_b_e_r[._f_i_r_s_t_0__c_h_a_r_a_c_t_e_r][_t_y_p_e]]
  49533.    -k _f_i_e_l_d__n_u_m_b_e_r[._f_i_r_s_t__c_h_a_r_a_c_t_e_r][_t_y_p_e][,_f_i_e_l_d__n_u_m_b_e_r[._l_a_s_t__c_h_a_r_a_c_t_e_r][_t_y_p_e]]
  49534.  
  49535.  In the obsolescent form, fields (specified by _f_i_e_l_d_0__n_u_m_b_e_r) and
  49536.  characters within fields (specified by _f_i_r_s_t_0__c_h_a_r_a_c_t_e_r) shall be
  49537.  numbered from zero instead of one.  The -_p_o_s_2 option shall specify the
  49538.  first character after the sort field instead of the last character in the
  49539.  sort field.  (Therefore, _f_i_e_l_d_0__n_u_m_b_e_r and _f_i_r_s_t_0__c_h_a_r_a_c_t_e_r shall be
  49540.  interpreted as nonnegative, instead of positive, decimal integers and
  49541.  there is no need for a specification of a _l_a_s_t__c_h_a_r_a_c_t_e_r-like form.)  The
  49542.  optional type modifiers shall be the same in both forms.  If
  49543.  ._f_i_r_s_t_0__c_h_a_r_a_c_t_e_r is omitted or _f_i_r_s_t_0__c_h_a_r_a_c_t_e_r evaluates to zero, it
  49544.  shall refer to the first character of the field.
  49545.  
  49546.  Thus, a the fully specified +_p_o_s_1 -_p_o_s_2 form:
  49547.  
  49548.        +_w._x -_y._z
  49549.  
  49550.  shall be equivalent to:
  49551.  
  49552.        -k _w+1._x+1,_y.0    (if _z == 0)
  49553.        -k _w+1._x+1,_y+1._z  (if _z > 0)
  49554.  
  49555.  
  49556.  
  49557.                Copyright c 1991 IEEE.  All rights reserved.
  49558.       This is an unapproved IEEE Standards Draft, subject to change.
  49559.  
  49560.  
  49561.  
  49562.  
  49563.  
  49564.  4.58 sort - Sort, merge, or sequence check text files                 721
  49565.  
  49566.  
  49567.  
  49568.  
  49569.  
  49570.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  49571.  
  49572.  As with the nonobsolescent forms, implementations shall support at least
  49573.  nine occurrences of the +_p_o_s_1 option, which shall be significant in
  49574.  command line order.
  49575.  
  49576.  
  49577.  4.58.8  Exit Status
  49578.  
  49579.  The sort utility shall exit with one of the following values:
  49580.  
  49581.      0    All input files were output successfully, or -c was specified
  49582.           and the input file was correctly sorted.
  49583.  
  49584.      1    Under the -c option, the file was not ordered as specified, or
  49585.           if the -c and -u options were both specified, two input lines
  49586.           were found with equal keys.  This exit status shall not be
  49587.           returned if the -c option is not used.
  49588.  
  49589.     >1    An error occurred.
  49590.  
  49591.  
  49592.  4.58.9  Consequences of Errors
  49593.  
  49594.  Default.
  49595.  
  49596.  BEGIN_RATIONALE
  49597.  
  49598.  
  49599.  4.58.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  49600.  
  49601.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  49602.  
  49603.  In the following examples, nonobsolescent and obsolescent ways of
  49604.  specifying sort keys are given as an aid to understanding the
  49605.  relationship between the two forms.
  49606.  
  49607.  Either of the following commands sorts the contents of infile with the
  49608.  second field as the sort key:
  49609.  
  49610.        sort -k 2,2 infile
  49611.        sort +1 -2 infile
  49612.  
  49613.  Either of the following commands sorts, in reverse order, the contents of
  49614.  infile1 and infile2, placing the output in outfile and using the second
  49615.  character of the second field as the sort key (assuming that the first
  49616.  character of the second field is the field separator):
  49617.  
  49618.        sort -r -o outfile -k 2.2,2.2 infile1 infile2                        1
  49619.        sort -r -o outfile +1.1 -1.2 infile1 infile2
  49620.  
  49621.  
  49622.  
  49623.                Copyright c 1991 IEEE.  All rights reserved.
  49624.       This is an unapproved IEEE Standards Draft, subject to change.
  49625.  
  49626.  
  49627.  
  49628.  
  49629.  
  49630.  722                                     4 Execution Environment Utilities
  49631.  
  49632.  
  49633.  
  49634.  
  49635.  
  49636.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  49637.  
  49638.  Either of the following commands sorts the contents of infile1 and
  49639.  infile2 using the second non-<blank> character of the second field as the
  49640.  sort key:
  49641.  
  49642.        sort -k 2.2b,2.2b infile1 infile2
  49643.        sort +1.1b -1.2b  infile1 infile2
  49644.  
  49645.  Either of the following commands prints the System V password file (user
  49646.  database) sorted by the numeric user ID (the third colon-separated
  49647.  field):
  49648.  
  49649.        sort -t : -k 3,3n /etc/passwd
  49650.        sort -t : +2 -3n /etc/passwd
  49651.  
  49652.  Either of the following commands prints the lines of the already sorted
  49653.  file infile, suppressing all but one occurrence of lines having the same
  49654.  third field:
  49655.  
  49656.        sort -um -k 3.1,3.0 infile
  49657.        sort -um +2.0 -3.0 infile
  49658.  
  49659.  Examples in some historical documentation state that options -um with one  1
  49660.  input file keep the first in each set of lines with equal keys.  This      2
  49661.  behavior was deemed to be an implementation artifact and was not made      1
  49662.  standard.                                                                  1
  49663.  
  49664.  The default value for -t, <blank>, has different properties than, for
  49665.  example, -t "<space>".  If a line contains:
  49666.  
  49667.        <space><space>foo
  49668.  
  49669.  the following treatment would occur with default separation versus
  49670.  specifically selecting a <space>:
  49671.  
  49672.                  Field        Default        -t "<space>"
  49673.                  _____   _________________   ____________
  49674.                    1     <space><space>foo      _e_m_p_t_y
  49675.                    2           _e_m_p_t_y            _e_m_p_t_y                       1
  49676.                    3           _e_m_p_t_y             foo                        1
  49677.  
  49678.  The leading field separator itself is included in a field when -t is not   1
  49679.  used.  For example, this command returns an exit status of zero, meaning   1
  49680.  the input was already sorted:                                              1
  49681.  
  49682.        sort -c -k 2 <<eof                                                   1
  49683.        y<tab>b                                                              1
  49684.        x<space>a                                                            1
  49685.        eof                                                                  1
  49686.  
  49687.  (assuming that <tab> precedes <space> in the current collating sequence).  1
  49688.  
  49689.                Copyright c 1991 IEEE.  All rights reserved.
  49690.       This is an unapproved IEEE Standards Draft, subject to change.
  49691.  
  49692.  
  49693.  
  49694.  
  49695.  
  49696.  4.58 sort - Sort, merge, or sequence check text files                 723
  49697.  
  49698.  
  49699.  
  49700.  
  49701.  
  49702.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  49703.  
  49704.  The field separator is not included in a field when it is explicitly set   1
  49705.  via -t.  This is historical practice and allows usage such as              1
  49706.  
  49707.        sort -t "|" -k 2n <<eof                                              1
  49708.        Atlanta|425022|Georgia                                               1
  49709.        Birmingham|284413|Alabama                                            1
  49710.        Columbia|100385|South Carolina                                       1
  49711.        eof                                                                  1
  49712.  
  49713.  where the second field can be correctly sorted numerically without regard  1
  49714.  to the nonnumeric field separator.                                         1
  49715.  
  49716.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  49717.  
  49718.  The -z option was removed; it is not standard practice on most systems,
  49719.  and is inconsistent with using sort to individually sort several files
  49720.  and then merging them together.  The previous language appeared to
  49721.  require implementations to determine the proper buffer length during the
  49722.  sort phase of operation, but not during the merge.
  49723.  
  49724.  The -y option was removed because of nonportability.  The -M option,
  49725.  present in System V, was removed because of nonportability in
  49726.  international usage.
  49727.  
  49728.  An undocumented -T option exists in some implementations.  It is used to
  49729.  specify a directory for intermediate files.  Implementations are
  49730.  encouraged to support the use of the TMPDIR environment variable instead
  49731.  of adding an option to support this functionality.
  49732.  
  49733.  The -k option was added to satisfy two complaints.  First, the zero-based
  49734.  counting used by sort is not consistent with other utility conventions.
  49735.  Second, it did not meet syntax guideline requirements.  The one-based
  49736.  counting in this standard was developed from the input provided by
  49737.  several ballot comments, ballot objections, and discussions with users.
  49738.  
  49739.  The wording in Draft 10 also clarifies that the -b, -d, -f, -i, -n, and
  49740.  -r options have to come before the first sort key specified if they are
  49741.  intended to apply to all specified keys.  The way it is described in this
  49742.  standard matches historical practice, not historical documentation.  In
  49743.  the nonobsolescent versions, the results are unspecified if these options
  49744.  are specified after a -k option.  This will allow implementations to make
  49745.  the options independent of each other when the obsolescent forms are
  49746.  finally dropped (if that ever happens).
  49747.  
  49748.  Historical documentation indicates that ``setting -n implies -b.''  The
  49749.  description of -n already states that optional leading <blank>s are
  49750.  tolerated in doing the comparison.  If -b is enabled, rather than
  49751.  implied, by -n, this has unusual side effects.  When a character offset
  49752.  is used into a column of numbers (e.g., to sort mod 100), that offset
  49753.  
  49754.  
  49755.                Copyright c 1991 IEEE.  All rights reserved.
  49756.       This is an unapproved IEEE Standards Draft, subject to change.
  49757.  
  49758.  
  49759.  
  49760.  
  49761.  
  49762.  724                                     4 Execution Environment Utilities
  49763.  
  49764.  
  49765.  
  49766.  
  49767.  
  49768.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  49769.  
  49770.  will be measured relative to the most significant digit, not to the
  49771.  column.  Based upon a recommendation of the author of the original sort
  49772.  utility, the -b implication has been omitted from POSIX.2 and an
  49773.  application wishing to achieve the previously mentioned side effects will
  49774.  have to manually code the -b flag.
  49775.  
  49776.  END_RATIONALE
  49777.  
  49778.  
  49779.  
  49780.  4.59  stty - Set the options for a terminal
  49781.  
  49782.  
  49783.  4.59.1  Synopsis
  49784.  
  49785.  stty  [ -a | -g ]
  49786.  
  49787.  stty  _o_p_e_r_a_n_d_s
  49788.  
  49789.  
  49790.  4.59.2  Description
  49791.  
  49792.  The stty utility shall set or report on terminal I/O characteristics for
  49793.  the device that is its standard input.  Without options or operands
  49794.  specified, it shall report the settings of certain characteristics,
  49795.  usually those that differ from implementation-defined defaults.
  49796.  Otherwise, it shall modify the terminal state according to the specified
  49797.  operands.  Detailed information about the modes listed in the first five
  49798.  groups below are described in POSIX.1 {8} Section 7.  Operands in the
  49799.  Combination Modes group (see 4.59.4.6) shall be implemented using
  49800.  operands in the previous groups.  Some combinations of operands are
  49801.  mutually exclusive on some terminal types; the results of using such
  49802.  combinations are unspecified.
  49803.  
  49804.  Typical implementations of this utility require a communications line
  49805.  configured to use a POSIX.1 {8} _t_e_r_m_i_o_s interface.  On systems where none
  49806.  of these lines are available, and on lines not currently configured to
  49807.  support the POSIX.1 {8} termios interface, some of the operands need not
  49808.  affect terminal characteristics.
  49809.  
  49810.  
  49811.  4.59.3  Options
  49812.  
  49813.  The stty utility shall conform to the utility argument syntax guidelines
  49814.  described in 2.10.2.
  49815.  
  49816.  The following options shall be supported by the implementation:
  49817.  
  49818.  
  49819.  
  49820.  
  49821.                Copyright c 1991 IEEE.  All rights reserved.
  49822.       This is an unapproved IEEE Standards Draft, subject to change.
  49823.  
  49824.  
  49825.  
  49826.  
  49827.  
  49828.  4.59 stty - Set the options for a terminal                            725
  49829.  
  49830.  
  49831.  
  49832.  
  49833.  
  49834.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  49835.  
  49836.     -a          Write to standard output all the current settings for the
  49837.                 terminal.
  49838.  
  49839.     -g          Write to standard output all the current settings in an
  49840.                 unspecified form that can be used as arguments to another
  49841.                 invocation of the stty utility on the same system.  The
  49842.                 form used shall not contain any characters that would
  49843.                 require quoting to avoid word expansion by the shell; see
  49844.                 3.6.
  49845.  
  49846.  
  49847.  4.59.4  Operands
  49848.  
  49849.  The following operands shall be supported by the implementation to set
  49850.  the terminal characteristics:
  49851.  
  49852.  
  49853.  4.59.4.1  Control Modes
  49854.  
  49855.     parenb (-parenb)       Enable (disable) parity generation and
  49856.                            detection.  This shall have the effect of
  49857.                            setting (not setting) PARENB in the _t_e_r_m_i_o_s
  49858.                            _c__c_f_l_a_g field, as defined in POSIX.1 {8}.
  49859.  
  49860.     parodd (-parodd)       Select odd (even) parity.  This shall have the
  49861.                            effect of setting (not setting) PARODD in the
  49862.                            _t_e_r_m_i_o_s _c__c_f_l_a_g field, as defined in
  49863.                            POSIX.1 {8}.
  49864.  
  49865.     cs5 cs6 cs7 cs8        Select character size, if possible.  This shall
  49866.                            have the effect of setting CS5, CS6, CS7, and
  49867.                            CS8, respectively, in the _t_e_r_m_i_o_s _c__c_f_l_a_g
  49868.                            field, as defined in POSIX.1 {8}.
  49869.  
  49870.     _n_u_m_b_e_r                 Set terminal baud rate to the number given, if
  49871.                            possible.  If the baud rate is set to zero, the
  49872.                            modem control lines shall no longer be
  49873.                            asserted.  This shall have the effect of
  49874.                            setting the input and output _t_e_r_m_i_o_s baud rate
  49875.                            values as defined in POSIX.1 {8}.
  49876.  
  49877.     ispeed _n_u_m_b_e_r          Set terminal input baud rate to the number
  49878.                            given, if possible.  If the input baud rate is
  49879.                            set to zero, the input baud rate shall be
  49880.                            specified by the value of the output baud rate.
  49881.                            This shall have the effect of setting the input
  49882.                            _t_e_r_m_i_o_s baud rate values as defined in
  49883.                            POSIX.1 {8}.
  49884.  
  49885.  
  49886.  
  49887.                Copyright c 1991 IEEE.  All rights reserved.
  49888.       This is an unapproved IEEE Standards Draft, subject to change.
  49889.  
  49890.  
  49891.  
  49892.  
  49893.  
  49894.  726                                     4 Execution Environment Utilities
  49895.  
  49896.  
  49897.  
  49898.  
  49899.  
  49900.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  49901.  
  49902.     ospeed _n_u_m_b_e_r          Set terminal output baud rate to the number
  49903.                            given, if possible.  If the output baud rate is
  49904.                            set to zero, the modem control lines shall no
  49905.                            longer be asserted.  This shall have the effect
  49906.                            of setting the output _t_e_r_m_i_o_s baud rate values
  49907.                            as defined in POSIX.1 {8}.
  49908.  
  49909.     hupcl (-hupcl)         Stop asserting modem control lines (do not stop
  49910.                            asserting modem control lines) on last close.
  49911.                            This shall have the effect of setting (not
  49912.                            setting) HUPCL in the _t_e_r_m_i_o_s _c__c_f_l_a_g field, as
  49913.                            defined in POSIX.1 {8}.
  49914.  
  49915.     hup (-hup)             Same as hupcl (-hupcl).
  49916.  
  49917.     cstopb (-cstopb)       Use two (one) stop bits per character.  This
  49918.                            shall have the effect of setting (not setting)
  49919.                            CSTOPB in the _t_e_r_m_i_o_s _c__c_f_l_a_g field, as defined
  49920.                            in POSIX.1 {8}.
  49921.  
  49922.     cread (-cread)         Enable (disable) the receiver.  This shall have
  49923.                            the effect of setting (not setting) CREAD in
  49924.                            the _t_e_r_m_i_o_s _c__c_f_l_a_g field, as defined in
  49925.                            POSIX.1 {8}.
  49926.  
  49927.     clocal (-clocal)       Assume a line without (with) modem control.
  49928.                            This shall have the effect of setting (not
  49929.                            setting) CLOCAL in the _t_e_r_m_i_o_s _c__c_f_l_a_g field,
  49930.                            as defined in POSIX.1 {8}.
  49931.  
  49932.  It is unspecified whether stty shall report an error if an attempt to set
  49933.  a Control Mode fails.
  49934.  
  49935.  
  49936.  4.59.4.2  Input Modes
  49937.  
  49938.     ignbrk (-ignbrk)       Ignore (do not ignore) break on input.  This
  49939.                            shall have the effect of setting (not setting)
  49940.                            IGNBRK in the _t_e_r_m_i_o_s _c__i_f_l_a_g field, as defined
  49941.                            in POSIX.1 {8}.
  49942.  
  49943.     brkint (-brkint)       Signal (do not signal) INTR on break.  This
  49944.                            shall have the effect of setting (not setting)
  49945.                            BRKINT in the _t_e_r_m_i_o_s _c__i_f_l_a_g field, as defined
  49946.                            in POSIX.1 {8}.
  49947.  
  49948.     ignpar (-ignpar)       Ignore (do not ignore) bytes with parity
  49949.                            errors.  This shall have the effect of setting
  49950.                            (not setting) IGNPAR in the _t_e_r_m_i_o_s _c__i_f_l_a_g
  49951.                            field, as defined in POSIX.1 {8}.
  49952.  
  49953.                Copyright c 1991 IEEE.  All rights reserved.
  49954.       This is an unapproved IEEE Standards Draft, subject to change.
  49955.  
  49956.  
  49957.  
  49958.  
  49959.  
  49960.  4.59 stty - Set the options for a terminal                            727
  49961.  
  49962.  
  49963.  
  49964.  
  49965.  
  49966.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  49967.  
  49968.     parmrk (-parmrk)       Mark (do not mark) parity errors.  This shall
  49969.                            have the effect of setting (not setting) PARMRK
  49970.                            in the _t_e_r_m_i_o_s _c__i_f_l_a_g field, as defined in
  49971.                            POSIX.1 {8}.
  49972.  
  49973.     inpck (-inpck)         Enable (disable) input parity checking.  This
  49974.                            shall have the effect of setting (not setting)
  49975.                            INPCK in the _t_e_r_m_i_o_s _c__i_f_l_a_g field, as defined
  49976.                            in POSIX.1 {8}.
  49977.  
  49978.     istrip (-istrip)       Strip (do not strip) input characters to seven
  49979.                            bits.  This shall have the effect of setting
  49980.                            (not setting) ISTRIP in the _t_e_r_m_i_o_s _c__i_f_l_a_g
  49981.                            field, as defined in POSIX.1 {8}.
  49982.  
  49983.     inlcr (-inlcr)         Map (do not map) NL to CR on input.  This shall
  49984.                            have the effect of setting (not setting) INLCR
  49985.                            in the _t_e_r_m_i_o_s _c__i_f_l_a_g field, as defined in
  49986.                            POSIX.1 {8}.
  49987.  
  49988.     igncr (-igncr)         Ignore (do not ignore) CR on input.  This shall
  49989.                            have the effect of setting (not setting) IGNCR
  49990.                            in the _t_e_r_m_i_o_s _c__i_f_l_a_g field, as defined in
  49991.                            POSIX.1 {8}.
  49992.  
  49993.     icrnl (-icrnl)         Map (do not map) CR to NL on input.  This shall
  49994.                            have the effect of setting (not setting) ICRNL
  49995.                            in the _t_e_r_m_i_o_s _c__i_f_l_a_g field, as defined in
  49996.                            POSIX.1 {8}.
  49997.  
  49998.     ixon (-ixon)           Enable (disable) START/STOP output control.
  49999.                            Output from the system is stopped when the
  50000.                            system receives STOP and started when the
  50001.                            system receives START.  This shall have the
  50002.                            effect of setting (not setting) IXON in the
  50003.                            _t_e_r_m_i_o_s _c__i_f_l_a_g field, as defined in
  50004.                            POSIX.1 {8}.
  50005.  
  50006.     ixoff (-ixoff)         Request that the system send (not send) STOP
  50007.                            characters when the input queue is nearly full
  50008.                            and START characters to resume data
  50009.                            transmission.  This shall have the effect of
  50010.                            setting (not setting) IXOFF in the _t_e_r_m_i_o_s
  50011.                            _c__i_f_l_a_g field, as defined in POSIX.1 {8}.
  50012.  
  50013.  
  50014.  
  50015.  
  50016.  
  50017.  
  50018.  
  50019.                Copyright c 1991 IEEE.  All rights reserved.
  50020.       This is an unapproved IEEE Standards Draft, subject to change.
  50021.  
  50022.  
  50023.  
  50024.  
  50025.  
  50026.  728                                     4 Execution Environment Utilities
  50027.  
  50028.  
  50029.  
  50030.  
  50031.  
  50032.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  50033.  
  50034.  4.59.4.3  Output Modes
  50035.  
  50036.     opost (-opost)         Post-process output (do not post-process
  50037.                            output; ignore all other output modes).  This
  50038.                            shall have the effect of setting (not setting)
  50039.                            OPOST in the _t_e_r_m_i_o_s _c__o_f_l_a_g field, as defined
  50040.                            in POSIX.1 {8}.
  50041.  
  50042.  
  50043.  4.59.4.4  Local Modes
  50044.  
  50045.     isig (-isig)           Enable (disable) the checking of characters
  50046.                            against the special control characters INTR,
  50047.                            QUIT, and SUSP.  This shall have the effect of
  50048.                            setting (not setting) ISIG in the _t_e_r_m_i_o_s
  50049.                            _c__l_f_l_a_g field, as defined in POSIX.1 {8}.
  50050.  
  50051.     icanon (-icanon)       Enable (disable) canonical input (ERASE and
  50052.                            KILL processing).  This shall have the effect
  50053.                            of setting (not setting) ICANON in the _t_e_r_m_i_o_s
  50054.                            _c__l_f_l_a_g field, as defined in POSIX.1 {8}.
  50055.  
  50056.     iexten (-iexten)       Enable (disable) any implementation-defined
  50057.                            special control characters not currently
  50058.                            controlled by icanon, isig, ixon, or ixoff.
  50059.                            This shall have the effect of setting (not
  50060.                            setting) IEXTEN in the _t_e_r_m_i_o_s _c__l_f_l_a_g field,
  50061.                            as defined in POSIX.1 {8}.
  50062.  
  50063.     echo (-echo)           Echo back (do not echo back) every character
  50064.                            typed.  This shall have the effect of setting
  50065.                            (not setting) ECHO in the _t_e_r_m_i_o_s _c__l_f_l_a_g
  50066.                            field, as defined in POSIX.1 {8}.
  50067.  
  50068.     echoe (-echoe)         The ERASE character shall (shall not) visually
  50069.                            erase the last character in the current line
  50070.                            from the display, if possible.  This shall have
  50071.                            the effect of setting (not setting) ECHOE in
  50072.                            the _t_e_r_m_i_o_s _c__l_f_l_a_g field, as defined in
  50073.                            POSIX.1 {8}.
  50074.  
  50075.     echok (-echok)         Echo (do not echo) NL after KILL character.
  50076.                            This shall have the effect of setting (not
  50077.                            setting) ECHOK in the _t_e_r_m_i_o_s _c__l_f_l_a_g field, as
  50078.                            defined in POSIX.1 {8}.
  50079.  
  50080.     echonl (-echonl)       Echo (do not echo) NL, even if echo is
  50081.                            disabled.  This shall have the effect of
  50082.                            setting (not setting) ECHONL in the _t_e_r_m_i_o_s
  50083.                            _c__l_f_l_a_g field, as defined in POSIX.1 {8}.
  50084.  
  50085.                Copyright c 1991 IEEE.  All rights reserved.
  50086.       This is an unapproved IEEE Standards Draft, subject to change.
  50087.  
  50088.  
  50089.  
  50090.  
  50091.  
  50092.  4.59 stty - Set the options for a terminal                            729
  50093.  
  50094.  
  50095.  
  50096.  
  50097.  
  50098.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  50099.  
  50100.     noflsh (-noflsh)       Disable (enable) flush after INTR, QUIT, SUSP.
  50101.                            This shall have the effect of setting (not
  50102.                            setting) NOFLSH in the _t_e_r_m_i_o_s _c__l_f_l_a_g field,
  50103.                            as defined in POSIX.1 {8}.
  50104.  
  50105.     tostop (-tostop)       Send SIGTTOU for background output.  This shall  2
  50106.                            have the effect of setting (not setting) TOSTOP  2
  50107.                            in the _t_e_r_m_i_o_s _c__l_f_l_a_g field, as defined in      2
  50108.                            POSIX.1 {8}.                                     2
  50109.  
  50110.                            NOTE:  Setting TOSTOP has no effect on systems   2
  50111.                            not supporting the POSIX.1 {8} job control       2
  50112.                            option.                                          2
  50113.  
  50114.  
  50115.  4.59.4.5  Special Control Character Assignments
  50116.  
  50117.     _c_o_n_t_r_o_l-_c_h_a_r_a_c_t_e_r _s_t_r_i_n_g
  50118.                            Set _c_o_n_t_r_o_l-_c_h_a_r_a_c_t_e_r to _s_t_r_i_n_g. If _c_o_n_t_r_o_l-
  50119.                            _c_h_a_r_a_c_t_e_r is one of the character sequences in
  50120.                            the first column of Table 4-9, the
  50121.                            corresponding POSIX.1 {8} control character
  50122.                            from the second column shall be recognized.
  50123.                            This shall have the effect of setting the
  50124.                            corresponding element of the _t_e_r_m_i_o_s _c__c_c array
  50125.                            (see POSIX.1 {8} 7.1.2).
  50126.  
  50127.  
  50128.                 Table 4-9  -  stty Control Character Names
  50129.  __________________________________________________________________________________________________________________________________________________
  50130.  __cccc__oooo__nnnn__tttt__rrrr__oooo__llll__----__cccc__hhhh__aaaa__rrrr__aaaa__cccc__tttt__eeee__rrrr__________P_O_S_I_X_._1__{_8_}__S_u_b_s_c_r_i_p_t_____________D_e_s_c_r_i_p_t_i_o_n___
  50131.  
  50132.         eof                         VEOF                   EOF character
  50133.         eol                         VEOL                   EOL character
  50134.        erase                       VERASE                  ERASE character
  50135.        intr                         VINTR                  INTR character
  50136.        kill                         VKILL                  KILL character
  50137.        quit                         VQUIT                  QUIT character
  50138.        susp                         VSUSP                  SUSP character
  50139.        start                       VSTART                  START character
  50140.        stop                         VSTOP                  STOP character
  50141.  __________________________________________________________________________________________________________________________________________________
  50142.  
  50143.  
  50144.                            If _s_t_r_i_n_g is a single character, the control
  50145.                            character shall be set to that character.  If
  50146.                            _s_t_r_i_n_g is the two-character sequence "^-" or
  50147.                            the string "undef", the control character shall
  50148.                            be set to {_POSIX_VDISABLE}, if it is in effect
  50149.  
  50150.  
  50151.                Copyright c 1991 IEEE.  All rights reserved.
  50152.       This is an unapproved IEEE Standards Draft, subject to change.
  50153.  
  50154.  
  50155.  
  50156.  
  50157.  
  50158.  730                                     4 Execution Environment Utilities
  50159.  
  50160.  
  50161.  
  50162.  
  50163.  
  50164.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  50165.  
  50166.                            for the device; if {_POSIX_VDISABLE} is not in
  50167.                            effect for the device, it shall be treated as
  50168.                            an error.  In the POSIX Locale, if _s_t_r_i_n_g is a
  50169.                            two-character sequence beginning with
  50170.                            circumflex (^), and the second character is one
  50171.                            of those listed in the ^_c column of Table 4-10,
  50172.                            the control character shall be set to the
  50173.                            corresponding character value in the Value
  50174.                            column of the table.
  50175.  
  50176.  
  50177.              Table 4-10  -  stty Circumflex Control Characters
  50178.  __________________________________________________________________________________________________________________________________________________
  50179.   ^_cccc     Value                  ^_cccc     Value                  ^_cccc     Value
  50180.  _________________________________________________________________________
  50181.  
  50182.  a, A    <SOH>                 l, L    <FF>                  w, W    <ETB>
  50183.  b, B    <STX>                 m, M    <CR>                  x, X    <CAN>
  50184.  c, C    <ETX>                 n, N    <SO>                  y, Y    <EM>
  50185.  d, D    <EOT>                 o, O    <SI>                  z, Z    <SUB>
  50186.  e, E    <ENQ>                 p, P    <DLE>                  [      <ESC>
  50187.  f, F    <ACK>                 q, Q    <DC1>                  \      <FS>
  50188.  g, G    <BEL>                 r, R    <DC2>                  ]      <GS>
  50189.  h, H    <BS>                  s, S    <DC3>                  ^      <RS>
  50190.  i, I    <HT>                  t, T    <DC4>                  _      <US>
  50191.  j, J    <LF>                  u, U    <NAK>                  ?      <DEL>
  50192.  k, K    <VT>                  v, V    <SYN>
  50193.  __________________________________________________________________________________________________________________________________________________
  50194.  
  50195.  
  50196.     min _n_u_m_b_e_r
  50197.     time _n_u_m_b_e_r            Set the value of min or time to _n_u_m_b_e_r.  MIN
  50198.                            and TIME are used in noncanonical mode input
  50199.                            processing (-icanon).
  50200.  
  50201.  4.59.4.6  Combination Modes
  50202.  
  50203.     _s_a_v_e_d _s_e_t_t_i_n_g_s         Set the current terminal characteristics to the
  50204.                            saved settings produced by the -g option.
  50205.  
  50206.     evenp or parity        Enable parenb and cs7; disable parodd.
  50207.  
  50208.     oddp                   Enable parenb, cs7, and parodd.
  50209.  
  50210.     -parity, -evenp, or -oddp
  50211.                            Disable parenb, and set cs8.
  50212.  
  50213.     nl (-nl)               Enable (disable) icrnl.  In addition, -nl
  50214.                            unsets inlcr and igncr.
  50215.  
  50216.  
  50217.                Copyright c 1991 IEEE.  All rights reserved.
  50218.       This is an unapproved IEEE Standards Draft, subject to change.
  50219.  
  50220.  
  50221.  
  50222.  
  50223.  
  50224.  4.59 stty - Set the options for a terminal                            731
  50225.  
  50226.  
  50227.  
  50228.  
  50229.  
  50230.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  50231.  
  50232.     ek                     Reset ERASE and KILL characters back to system
  50233.                            defaults.
  50234.  
  50235.     sane                   Reset all modes to some reasonable,
  50236.                            unspecified, values.
  50237.  
  50238.  
  50239.  4.59.5  External Influences
  50240.  
  50241.  
  50242.  4.59.5.1  Standard Input
  50243.  
  50244.  Although no input is read from standard input, standard input is used to
  50245.  get the current terminal I/O characteristics and to set new terminal I/O
  50246.  characteristics.
  50247.  
  50248.  4.59.5.2  Input Files
  50249.  
  50250.  None.
  50251.  
  50252.  
  50253.  4.59.5.3  Environment Variables
  50254.  
  50255.  The following environment variables shall affect the execution of stty:
  50256.  
  50257.     LANG               This variable shall determine the locale to use for
  50258.                        the locale categories when both LC_ALL and the
  50259.                        corresponding environment variable (beginning with
  50260.                        LC_) do not specify a locale.  See 2.6.
  50261.  
  50262.     LC_ALL             This variable shall determine the locale to be used
  50263.                        to override any values for locale categories
  50264.                        specified by the settings of LANG or any
  50265.                        environment variables beginning with LC_.
  50266.  
  50267.     LC_CTYPE           This variable shall determine the locale for the
  50268.                        interpretation of sequences of bytes of text data
  50269.                        as characters (e.g., single- versus multibyte
  50270.                        characters in arguments) and which characters are
  50271.                        in the class print.
  50272.  
  50273.     LC_MESSAGES        This variable shall determine the language in which
  50274.                        messages should be written.
  50275.  
  50276.  
  50277.  
  50278.  
  50279.  
  50280.  
  50281.  
  50282.  
  50283.                Copyright c 1991 IEEE.  All rights reserved.
  50284.       This is an unapproved IEEE Standards Draft, subject to change.
  50285.  
  50286.  
  50287.  
  50288.  
  50289.  
  50290.  732                                     4 Execution Environment Utilities
  50291.  
  50292.  
  50293.  
  50294.  
  50295.  
  50296.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  50297.  
  50298.  4.59.5.4  Asynchronous Events
  50299.  
  50300.  Default.
  50301.  
  50302.  
  50303.  4.59.6  External Effects
  50304.  
  50305.  
  50306.  4.59.6.1  Standard Output
  50307.  
  50308.  If operands are specified, no output shall be produced.
  50309.  
  50310.  If the -g option is specified, stty shall write to standard output the
  50311.  current settings in a form that can be used as arguments to another
  50312.  instance of stty on the same system.
  50313.  
  50314.  If the -a option is specified, all of the information as described in
  50315.  4.59.4 shall be written to standard output.  Unless otherwise specified,
  50316.  this information shall be written as <space>-separated tokens in an
  50317.  unspecified format, on one or more lines, with an unspecified number of
  50318.  tokens per line.  Additional information may be written.
  50319.  
  50320.  If no options or operands are specified, an unspecified subset of the
  50321.  information written for the -a option shall be written.
  50322.  
  50323.  If speed information is written as part of the default output, or if the
  50324.  -a option is specified and if the terminal input speed and output speed
  50325.  are the same, the speed information shall be written as follows:
  50326.  
  50327.        "speed %d baud;", <_s_p_e_e_d>
  50328.  
  50329.  Otherwise, speeds shall be written as:
  50330.  
  50331.        "ispeed %d baud; ospeed %d baud;", <_i_s_p_e_e_d>, <_o_s_p_e_e_d>
  50332.  
  50333.  In locales other than the POSIX Locale, the word baud may be changed to
  50334.  something more appropriate in those locales.
  50335.  
  50336.  If control characters are written as part of the default output, or if
  50337.  the -a option is specified, control characters shall be written as:
  50338.  
  50339.        "%s = %s;", <_c_o_n_t_r_o_l-_c_h_a_r_a_c_t_e_r _n_a_m_e>, <_v_a_l_u_e>
  50340.  
  50341.  where _v_a_l_u_e is either the character, or some visual representation of the
  50342.  character if it is nonprintable, or the string <undef> if the character
  50343.  is disabled.
  50344.  
  50345.  
  50346.  
  50347.  
  50348.  
  50349.                Copyright c 1991 IEEE.  All rights reserved.
  50350.       This is an unapproved IEEE Standards Draft, subject to change.
  50351.  
  50352.  
  50353.  
  50354.  
  50355.  
  50356.  4.59 stty - Set the options for a terminal                            733
  50357.  
  50358.  
  50359.  
  50360.  
  50361.  
  50362.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  50363.  
  50364.  4.59.6.2  Standard Error
  50365.  
  50366.  Used only for diagnostic messages.
  50367.  
  50368.  
  50369.  4.59.6.3  Output Files
  50370.  
  50371.  None.
  50372.  
  50373.  
  50374.  4.59.7  Extended Description
  50375.  
  50376.  None.
  50377.  
  50378.  
  50379.  4.59.8  Exit Status
  50380.  
  50381.  The stty utility shall exit with one of the following values:
  50382.  
  50383.      0    The terminal options were read or set successfully.
  50384.  
  50385.     >0    An error occurred.
  50386.  
  50387.  
  50388.  4.59.9  Consequences of Errors
  50389.  
  50390.  Default.
  50391.  
  50392.  BEGIN_RATIONALE
  50393.  
  50394.  
  50395.  4.59.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  50396.  
  50397.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  50398.  
  50399.  Since POSIX.1 {8} doesn't specify any output modes, they are not
  50400.  specified in this standard either.  Implementations are expected to
  50401.  provide stty operands corresponding to all of the output modes they
  50402.  support.
  50403.  
  50404.  In many ways outside the scope of POSIX.2, stty is primarily used to
  50405.  tailor the user interface of the terminal, such as selecting the
  50406.  preferred ERASE and KILL characters.  As an application programming
  50407.  utility, stty can be used within shell scripts to alter the terminal
  50408.  settings for the duration of the script.  The -g flag is designed to
  50409.  facilitate the saving and restoring of terminal state from the shell
  50410.  level.  For example, a program may:
  50411.  
  50412.  
  50413.  
  50414.  
  50415.                Copyright c 1991 IEEE.  All rights reserved.
  50416.       This is an unapproved IEEE Standards Draft, subject to change.
  50417.  
  50418.  
  50419.  
  50420.  
  50421.  
  50422.  734                                     4 Execution Environment Utilities
  50423.  
  50424.  
  50425.  
  50426.  
  50427.  
  50428.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  50429.  
  50430.        saveterm="$(stty -g)"       # save terminal state
  50431.        stty (_n_e_w _s_e_t_t_i_n_g_s)         # _s_e_t _n_e_w _s_t_a_t_e
  50432.        ...                         # ...
  50433.        stty $saveterm              # restore terminal state
  50434.  
  50435.  Since the format is unspecified, the saved value is not portable across
  50436.  systems.
  50437.  
  50438.  Since the -a format is so loosely specified, scripts that save and
  50439.  restore terminal settings should use the -g option.
  50440.  
  50441.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  50442.  
  50443.  The original stty manual page was taken directly from System V and
  50444.  reflected the System V terminal driver _t_e_r_m_i_o.  It has been modified to
  50445.  correspond to the POSIX.1 {8} terminal driver _t_e_r_m_i_o_s.
  50446.  
  50447.  The _t_e_r_m_i_o_s section states that individual disabling of control
  50448.  characters is an option {_POSIX_VDISABLE}.  If enabled, two conventions
  50449.  currently exist for specifying this: System V uses "^-", and BSD uses
  50450.  undef.  Both are accepted by POSIX.2 stty.  The other BSD convention of
  50451.  using the letter u was rejected because it conflicts with the actual
  50452.  letter u, which is an acceptable value for a control character.
  50453.  
  50454.  Early drafts did not specify the mapping of ^_c to control characters
  50455.  because the control characters were not specified in the POSIX Locale
  50456.  character set description file requirements.  The control character set
  50457.  is now specified in 2.4.1, so the traditional mapping is specified.  Note
  50458.  that although the mapping corresponds to control-character key
  50459.  assignments on many terminals that use ISO/IEC 646 {1} (or ASCII)
  50460.  character encodings, the mapping specified here is to the control
  50461.  characters, not their keyboard encodings.
  50462.  
  50463.  The combination options raw and cooked (-raw) were dropped from the
  50464.  standard because the exact values that should be set are not well
  50465.  understood or commonly agreed on.  In particular, _t_e_r_m_i_o_s has no explicit
  50466.  RAW bit, and the options that should be re-enabled (-raw) _a_r_e _n_o_t _c_l_e_a_r.
  50467.  _G_e_n_e_r_a_l _p_r_o_g_r_a_m_m_i_n_g _p_r_a_c_t_i_c_e _i_s _t_o _s_a_v_e _t_h_e _t_e_r_m_i_n_a_l _s_t_a_t_e, _c_h_a_n_g_e _t_h_e
  50468.  _s_e_t_t_i_n_g_s _f_o_r _t_h_e _d_u_r_a_t_i_o_n _o_f _t_h_e _p_r_o_g_r_a_m, _a_n_d _t_h_e_n _r_e_s_e_t _t_h_e _s_t_a_t_e.  _T_h_i_s
  50469.  _i_s _e_a_s_y _t_o _d_o _w_i_t_h_i_n _a _C _p_r_o_g_r_a_m, _h_o_w_e_v_e_r _i_t _i_s _n_o_t _p_o_s_s_i_b_l_e _f_o_r _a _s_i_n_g_l_e
  50470.  _i_n_v_o_c_a_t_i_o_n _o_f _s_t_t_y to restore the terminal state (-raw) without knowledge
  50471.  of the prior settings.  Using the -g option and two calls to stty, a
  50472.  shell application could do this as described above.  However, it is
  50473.  impossible to implement this as a single option.  Also, it is not clear
  50474.  that changing word size and parity is appropriate.  For example,
  50475.  requiring that cooked set cs7 and parenb would be disastrous for users
  50476.  working with 8-bit international character sets.  In general, these
  50477.  options are too ill-defined to be of any use.
  50478.  
  50479.  
  50480.  
  50481.                Copyright c 1991 IEEE.  All rights reserved.
  50482.       This is an unapproved IEEE Standards Draft, subject to change.
  50483.  
  50484.  
  50485.  
  50486.  
  50487.  
  50488.  4.59 stty - Set the options for a terminal                            735
  50489.  
  50490.  
  50491.  
  50492.  
  50493.  
  50494.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  50495.  
  50496.  Since _t_e_r_m_i_o_s supports separate speeds for input and output, two new
  50497.  options were added to specify each distinctly.
  50498.  
  50499.  The ixany input mode was removed from Draft 8 on the basis that it could
  50500.  not be implemented on a POSIX.1 {8} system without extensions.
  50501.  
  50502.  Some historical implementations use standard input to get and set
  50503.  terminal characteristics; others use standard output.  Since input from a
  50504.  login TTY is usually restricted to the owner while output to a TTY is
  50505.  frequently open to the world, using standard input provides fewer chances
  50506.  of accidentally (or mischievously) altering the terminal settings of
  50507.  other users.  Using standard input also allows stty -a and stty -g output
  50508.  to be redirected for later use.  Therefore, usage of standard input is
  50509.  required by this standard.
  50510.  
  50511.  The tostop option was omitted from early drafts through an oversight.  It  2
  50512.  is the only option that requires job control to be effective, and thus     2
  50513.  could have gone into the UPE as a modification to stty, but since all      2
  50514.  other terminal control features are in the base standard, tostop was       2
  50515.  included as well.                                                          2
  50516.  
  50517.  END_RATIONALE                                                              2
  50518.  
  50519.  
  50520.  
  50521.  4.60  tail - Copy the last part of a file
  50522.  
  50523.  
  50524.  4.60.1  Synopsis
  50525.  
  50526.  tail  [-f] [ -c _n_u_m_b_e_r | -n _n_u_m_b_e_r ] [_f_i_l_e]
  50527.  
  50528.  _O_b_s_o_l_e_s_c_e_n_t _v_e_r_s_i_o_n_s:
  50529.  
  50530.  tail  -[_n_u_m_b_e_r][c|l][f] [_f_i_l_e]
  50531.  tail  +[_n_u_m_b_e_r][c|l][f] [_f_i_l_e]
  50532.  
  50533.  
  50534.  4.60.2  Description
  50535.  
  50536.  The tail utility shall copy its input file to the standard output
  50537.  beginning at a designated place.
  50538.  
  50539.  Copying shall begin at the point in the file indicated by the -c _n_u_m_b_e_r
  50540.  or -n _n_u_m_b_e_r options (or the +__n_u_m_b_e_r portion of the argument to the
  50541.  obsolescent version).  The option-argument _n_u_m_b_e_r shall be counted in
  50542.  units of lines or bytes, according to the options -n and -c (or, in the
  50543.  obsolescent version, the appended option suffixes l or c).
  50544.  
  50545.  
  50546.  
  50547.                Copyright c 1991 IEEE.  All rights reserved.
  50548.       This is an unapproved IEEE Standards Draft, subject to change.
  50549.  
  50550.  
  50551.  
  50552.  
  50553.  
  50554.  736                                     4 Execution Environment Utilities
  50555.  
  50556.  
  50557.  
  50558.  
  50559.  
  50560.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  50561.  
  50562.  Tails relative to the end of the file may be saved in an internal buffer,
  50563.  and thus may be limited in length.  Implementations shall ensure that
  50564.  such a buffer, if any, is no smaller than {LINE_MAX}*10 bytes.
  50565.  
  50566.  
  50567.  4.60.3  Options
  50568.  
  50569.  The tail utility shall conform to the utility argument syntax guidelines
  50570.  described in standard described in 2.10.2, except that the obsolescent
  50571.  version accepts multicharacter options that can preceded by a plus sign.
  50572.  
  50573.  The following options shall be supported by the implementation in the
  50574.  nonobsolescent version:
  50575.  
  50576.     -c _n_u_m_b_e_r   The _n_u_m_b_e_r option-argument shall be a decimal integer
  50577.                 whose sign affects the location in the file, measured in
  50578.                 bytes, to begin the copying:
  50579.  
  50580.                       Sign               Copying Starts
  50581.                       ____   ______________________________________
  50582.                        +     Relative to the beginning of the file.
  50583.                        -     Relative to the end of the file.
  50584.                       _n_o_n_e   Relative to the end of the file.
  50585.  
  50586.                 The origin for counting shall be 1; i.e., -c +1 represents  1
  50587.                 the first byte of the file, -c -1 the last.                 1
  50588.  
  50589.     -f          If the input file is a regular file or if the _f_i_l_e operand
  50590.                 specifies a FIFO, do not terminate after the last line of
  50591.                 the input file has been copied, but read and copy further
  50592.                 bytes from the input file when they become available.  If
  50593.                 no _f_i_l_e operand is specified and standard input is a pipe,
  50594.                 the -f option shall be ignored.  If the input file is not
  50595.                 a FIFO, pipe, or regular file, it is unspecified whether
  50596.                 or not the -f option shall be ignored.
  50597.  
  50598.     -n _n_u_m_b_e_r   This option shall be equivalent to -c _n_u_m_b_e_r, except the
  50599.                 starting location in the file shall be measured in lines
  50600.                 instead of bytes.  The origin for counting shall be 1;      1
  50601.                 i.e., -n +1 represents the first line of the file, -n -1    1
  50602.                 the last.                                                   1
  50603.  
  50604.  In the obsolescent version, an argument beginning with a - or + can be
  50605.  used as a single option.  The argument +__n_u_m_b_e_r with the letter c
  50606.  specified as a suffix shall be equivalent to -c +__n_u_m_b_e_r; +__n_u_m_b_e_r with the
  50607.  letter l specified as a suffix, or with neither c nor l as a suffix,
  50608.  shall be equivalent to -n +__n_u_m_b_e_r.  If _n_u_m_b_e_r is not specified in these
  50609.  forms, 10 shall be used.  The letter f specified as a suffix shall be
  50610.  equivalent to specifying the -f option.  If the -[_n_u_m_b_e_r]c[f] form is
  50611.  used and neither _n_u_m_b_e_r nor the f suffix is specified, it shall be
  50612.  
  50613.                Copyright c 1991 IEEE.  All rights reserved.
  50614.       This is an unapproved IEEE Standards Draft, subject to change.
  50615.  
  50616.  
  50617.  
  50618.  
  50619.  
  50620.  4.60 tail - Copy the last part of a file                              737
  50621.  
  50622.  
  50623.  
  50624.  
  50625.  
  50626.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  50627.  
  50628.  interpreted as the -c _n_u_m_b_e_r option.
  50629.  
  50630.  In the nonobsolescent form, if neither -c nor -n is specified, -n 10
  50631.  shall be assumed.
  50632.  
  50633.  
  50634.  4.60.4  Operands
  50635.  
  50636.  The following operand shall be supported by the implementation:
  50637.  
  50638.     _f_i_l_e        A pathname of an input file.  If no _f_i_l_e operands are
  50639.                 specified, the standard input shall be used.
  50640.  
  50641.  
  50642.  4.60.5  External Influences
  50643.  
  50644.  
  50645.  4.60.5.1  Standard Input
  50646.  
  50647.  The standard input shall be used only if no _f_i_l_e operands are specified.
  50648.  See Input Files.
  50649.  
  50650.  4.60.5.2  Input Files
  50651.  
  50652.  If the -c option is specified, the input file can contain arbitrary data;
  50653.  otherwise, the input file shall be a text file.
  50654.  
  50655.  
  50656.  4.60.5.3  Environment Variables
  50657.  
  50658.  The following environment variables shall affect the execution of tail:
  50659.  
  50660.     LANG               This variable shall determine the locale to use for
  50661.                        the locale categories when both LC_ALL and the
  50662.                        corresponding environment variable (beginning with
  50663.                        LC_) do not specify a locale.  See 2.6.
  50664.  
  50665.     LC_ALL             This variable shall determine the locale to be used
  50666.                        to override any values for locale categories
  50667.                        specified by the settings of LANG or any
  50668.                        environment variables beginning with LC_.
  50669.  
  50670.     LC_CTYPE           This variable shall determine the locale for the
  50671.                        interpretation of sequences of bytes of text data
  50672.                        as characters (e.g., single- versus multibyte
  50673.                        characters in arguments and input files).
  50674.  
  50675.  
  50676.  
  50677.  
  50678.  
  50679.                Copyright c 1991 IEEE.  All rights reserved.
  50680.       This is an unapproved IEEE Standards Draft, subject to change.
  50681.  
  50682.  
  50683.  
  50684.  
  50685.  
  50686.  738                                     4 Execution Environment Utilities
  50687.  
  50688.  
  50689.  
  50690.  
  50691.  
  50692.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  50693.  
  50694.     LC_MESSAGES        This variable shall determine the language in which
  50695.                        messages should be written.
  50696.  
  50697.  
  50698.  4.60.5.4  Asynchronous Events
  50699.  
  50700.  Default.
  50701.  
  50702.  
  50703.  4.60.6  External Effects
  50704.  
  50705.  4.60.6.1  Standard Output
  50706.  
  50707.  The designated portion of the input file shall be written to standard
  50708.  output.
  50709.  
  50710.  
  50711.  4.60.6.2  Standard Error
  50712.  
  50713.  Used only for diagnostic messages.
  50714.  
  50715.  4.60.6.3  Output Files
  50716.  
  50717.  None.
  50718.  
  50719.  
  50720.  4.60.7  Extended Description
  50721.  
  50722.  None.
  50723.  
  50724.  
  50725.  4.60.8  Exit Status
  50726.  
  50727.  The tail utility shall exit with one of the following values:
  50728.  
  50729.      0    Successful completion.
  50730.  
  50731.     >0    An error occurred.
  50732.  
  50733.  
  50734.  4.60.9  Consequences of Errors
  50735.  
  50736.  Default.
  50737.  
  50738.  BEGIN_RATIONALE
  50739.  
  50740.  
  50741.  
  50742.  
  50743.  
  50744.  
  50745.                Copyright c 1991 IEEE.  All rights reserved.
  50746.       This is an unapproved IEEE Standards Draft, subject to change.
  50747.  
  50748.  
  50749.  
  50750.  
  50751.  
  50752.  4.60 tail - Copy the last part of a file                              739
  50753.  
  50754.  
  50755.  
  50756.  
  50757.  
  50758.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  50759.  
  50760.  4.60.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  50761.  
  50762.  _U_s_a_g_e_,__E_x_a_m_p_l_e_s
  50763.  
  50764.  The nonobsolescent version of tail was created to allow conformance to
  50765.  the Utility Syntax Guidelines.  The historical -b option was omitted
  50766.  because of the general nonportability of block-sized units of text.  The
  50767.  -c option historically meant ``characters,'' but this standard indicates
  50768.  that it means ``bytes.''  This was selected to allow reasonable
  50769.  implementations when multibyte characters are possible; it was not named
  50770.  -b to avoid confusion with the historical -b.
  50771.  
  50772.  Note that the -c option should be used with caution when the input is a
  50773.  text file containing multibyte characters; it may produce output that
  50774.  does not start on a character boundary.
  50775.  
  50776.  The origin of counting both lines and bytes is 1, matching all widespread  1
  50777.  historical implementations.                                                1
  50778.  
  50779.  The restriction on the internal buffer is a compromise between the
  50780.  historical System V implementation of 4K and the BSD 32K.
  50781.  
  50782.  The -f option can be used to monitor the growth of a file that is being
  50783.  written by some other process.  For example, the command:
  50784.  
  50785.        tail -f fred
  50786.  
  50787.  prints the last ten lines of the file fred, followed by any lines that
  50788.  are appended to fred between the time tail is initiated and killed.  As
  50789.  another example, the command:
  50790.  
  50791.        tail -f -c 15 fred
  50792.  
  50793.  prints the last 15 bytes of the file fred, followed by any bytes that are
  50794.  appended to fred between the time tail is initiated and killed.
  50795.  
  50796.  Although the input file to tail can be any type, the results need not be
  50797.  what would be expected on some character special device files or on file
  50798.  types not described by POSIX.1 {8}.  Since the standard does not specify
  50799.  the block size used when doing input, tail need not read all of the data
  50800.  from devices that only perform block transfers.
  50801.  
  50802.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  50803.  
  50804.  The developers of the standard originally decided that tail, and its
  50805.  frequent companion, head, were useful mostly to interactive users, and
  50806.  not application programs.  However, balloting input suggested that these
  50807.  utilities actually do find significant use in scripts, such as to write
  50808.  out portions of log files.  The balloters also challenged the working
  50809.  
  50810.  
  50811.                Copyright c 1991 IEEE.  All rights reserved.
  50812.       This is an unapproved IEEE Standards Draft, subject to change.
  50813.  
  50814.  
  50815.  
  50816.  
  50817.  
  50818.  740                                     4 Execution Environment Utilities
  50819.  
  50820.  
  50821.  
  50822.  
  50823.  
  50824.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  50825.  
  50826.  group's assumption that clever use of sed could be an appropriate
  50827.  substitute for tail.
  50828.  
  50829.  The -f option has been implemented as a loop that sleeps for one second
  50830.  and copies any bytes that are available.  This is sufficient, but if more
  50831.  efficient methods of determining when new data are available are
  50832.  developed, implementations are encouraged to use them.
  50833.  
  50834.  Historical documentation says that tail ignores the -f option if the
  50835.  input file is a pipe (pipe and FIFO on systems that support FIFOs).  On
  50836.  BSD-based systems, this has been true; on System V-based systems, this
  50837.  was true when input was taken from standard input, but behaved as on
  50838.  other files if a FIFO was named as the _f_i_l_e operand.  Since the -f option
  50839.  is not useful on pipes and all historical implementations ignore -f if no
  50840.  _f_i_l_e operand is specified and standard input is a pipe, POSIX.2 requires
  50841.  this behavior.  However, since the -f option is useful on a FIFO, POSIX.2
  50842.  also requires that if standard input is a FIFO or a FIFO is named, the -f
  50843.  option shall not be ignored.  Although historical behavior does not
  50844.  ignore the -f option for other file types, this is unspecified so that
  50845.  implementations are allowed to ignore the -f option if it is known that
  50846.  the file cannot be extended.
  50847.  
  50848.  An earlier draft had the synopsis line:
  50849.  
  50850.  
  50851.        tail  [ -c | -l ] [-f] [-n _n_u_m_b_e_r] [_f_i_l_e]
  50852.  
  50853.  This was changed to the current form based on comments and objections
  50854.  noting that -c was almost never used without specifying a number and
  50855.  there was no need to specify -l if -n _n_u_m_b_e_r was given.
  50856.  
  50857.  END_RATIONALE
  50858.  
  50859.  
  50860.  
  50861.  
  50862.  
  50863.  
  50864.  
  50865.  
  50866.  
  50867.  
  50868.  
  50869.  
  50870.  
  50871.  
  50872.  
  50873.  
  50874.  
  50875.  
  50876.  
  50877.                Copyright c 1991 IEEE.  All rights reserved.
  50878.       This is an unapproved IEEE Standards Draft, subject to change.
  50879.  
  50880.  
  50881.  
  50882.  
  50883.  
  50884.  4.60 tail - Copy the last part of a file                              741
  50885.  
  50886.  
  50887.  
  50888.  
  50889.  
  50890.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  50891.  
  50892.  4.61  tee - Duplicate standard input
  50893.  
  50894.  
  50895.  4.61.1  Synopsis
  50896.  
  50897.  
  50898.  tee  [-ai] [_f_i_l_e ...]
  50899.  
  50900.  
  50901.  4.61.2  Description
  50902.  
  50903.  The tee utility shall copy standard input to standard output, making a
  50904.  copy in zero or more files.  The tee utility shall not buffer output.
  50905.  
  50906.  The options determine if the specified files are overwritten or appended
  50907.  to.
  50908.  
  50909.  
  50910.  4.61.3  Options
  50911.  
  50912.  The tee utility shall conform to the utility argument syntax guidelines
  50913.  described in 2.10.2.
  50914.  
  50915.  The following options shall be supported by the implementation:
  50916.  
  50917.     -a          Append the output to the files rather than overwriting
  50918.                 them.
  50919.  
  50920.     -i          Ignore the SIGINT signal.
  50921.  
  50922.  
  50923.  4.61.4  Operands
  50924.  
  50925.  The following operands shall be supported by the implementation:
  50926.  
  50927.     _f_i_l_e        A pathname of an output file.  Implementations shall
  50928.                 support processing of at least 13 _f_i_l_e operands.
  50929.  
  50930.  
  50931.  4.61.5  External Influences
  50932.  
  50933.  4.61.5.1  Standard Input
  50934.  
  50935.  The standard input can be of any type.
  50936.  
  50937.  
  50938.  
  50939.  
  50940.  
  50941.  
  50942.  
  50943.                Copyright c 1991 IEEE.  All rights reserved.
  50944.       This is an unapproved IEEE Standards Draft, subject to change.
  50945.  
  50946.  
  50947.  
  50948.  
  50949.  
  50950.  742                                     4 Execution Environment Utilities
  50951.  
  50952.  
  50953.  
  50954.  
  50955.  
  50956.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  50957.  
  50958.  4.61.5.2  Input Files
  50959.  
  50960.  None.
  50961.  
  50962.  
  50963.  4.61.5.3  Environment Variables
  50964.  
  50965.  The following environment variables shall affect the execution of tee:
  50966.  
  50967.     LANG               This variable shall determine the locale to use for
  50968.                        the locale categories when both LC_ALL and the
  50969.                        corresponding environment variable (beginning with
  50970.                        LC_) do not specify a locale.  See 2.6.
  50971.  
  50972.     LC_ALL             This variable shall determine the locale to be used
  50973.                        to override any values for locale categories
  50974.                        specified by the settings of LANG or any
  50975.                        environment variables beginning with LC_.
  50976.  
  50977.     LC_CTYPE           This variable shall determine the locale for the
  50978.                        interpretation of sequences of bytes of text data
  50979.                        as characters (e.g., single- versus multibyte
  50980.                        characters in arguments).
  50981.  
  50982.     LC_MESSAGES        This variable shall determine the language in which
  50983.                        messages should be written.
  50984.  
  50985.  4.61.5.4  Asynchronous Events
  50986.  
  50987.  Default, except that if the -i option was specified, SIGINT shall be
  50988.  ignored.
  50989.  
  50990.  
  50991.  4.61.6  External Effects
  50992.  
  50993.  
  50994.  4.61.6.1  Standard Output
  50995.  
  50996.  The standard output shall be a copy of the standard input.
  50997.  
  50998.  4.61.6.2  Standard Error
  50999.  
  51000.  Used only for diagnostic messages.
  51001.  
  51002.  
  51003.  
  51004.  
  51005.  
  51006.  
  51007.  
  51008.  
  51009.                Copyright c 1991 IEEE.  All rights reserved.
  51010.       This is an unapproved IEEE Standards Draft, subject to change.
  51011.  
  51012.  
  51013.  
  51014.  
  51015.  
  51016.  4.61 tee - Duplicate standard input                                   743
  51017.  
  51018.  
  51019.  
  51020.  
  51021.  
  51022.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  51023.  
  51024.  4.61.6.3  Output Files
  51025.  
  51026.  If any _f_i_l_e operands are specified, the standard input shall be copied to
  51027.  each named file.
  51028.  
  51029.  
  51030.  4.61.7  Extended Description
  51031.  
  51032.  None.
  51033.  
  51034.  
  51035.  4.61.8  Exit Status
  51036.  
  51037.      0    The standard input was successfully copied to all output files.
  51038.  
  51039.     >0    An error occurred.
  51040.  
  51041.  
  51042.  4.61.9  Consequences of Errors
  51043.  
  51044.  If a write to any successfully opened _f_i_l_e operand fails, writes to other
  51045.  successfully opened _f_i_l_e operands and standard output shall continue, but
  51046.  the exit status shall be nonzero.  Otherwise, the default actions
  51047.  specified in 2.11.9 shall apply.
  51048.  
  51049.  BEGIN_RATIONALE
  51050.  
  51051.  
  51052.  4.61.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  51053.  
  51054.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  51055.  
  51056.  The tee utility is usually used in a pipeline, to make a copy of the
  51057.  output of some utility.
  51058.  
  51059.  The _f_i_l_e operand is technically optional, but tee is no more useful than
  51060.  cat when none is specified.
  51061.  
  51062.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  51063.  
  51064.  The buffering requirement means that tee is not allowed to use
  51065.  C Standard {7} fully-buffered or line-buffered writes, not that tee has
  51066.  to do one-byte reads followed by one-byte writes.
  51067.  
  51068.  It should be noted that early versions of BSD silently ignore any invalid
  51069.  options, and accept a single - as an alternative to -i.  They also print
  51070.  the message
  51071.  
  51072.  
  51073.  
  51074.  
  51075.                Copyright c 1991 IEEE.  All rights reserved.
  51076.       This is an unapproved IEEE Standards Draft, subject to change.
  51077.  
  51078.  
  51079.  
  51080.  
  51081.  
  51082.  744                                     4 Execution Environment Utilities
  51083.  
  51084.  
  51085.  
  51086.  
  51087.  
  51088.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  51089.  
  51090.        "tee: cannot access %s\n", <_p_a_t_h_n_a_m_e>
  51091.  
  51092.  if unable to open a file.
  51093.  
  51094.  Historical implementations ignore write errors.  This is explicitly not
  51095.  permitted by this standard.
  51096.  
  51097.  Some historical implementations use O_APPEND when providing append mode;
  51098.  others just _l_s_e_e_k() to the end of file after opening the file without
  51099.  O_APPEND.  This standard requires functionality equivalent to using
  51100.  O_APPEND; see 2.9.1.4.
  51101.  
  51102.  END_RATIONALE
  51103.  
  51104.  
  51105.  
  51106.  4.62  test - Evaluate expression
  51107.  
  51108.  
  51109.  4.62.1  Synopsis
  51110.  
  51111.  test  [_e_x_p_r_e_s_s_i_o_n]
  51112.  
  51113.  [  [_e_x_p_r_e_s_s_i_o_n] ]
  51114.  
  51115.  
  51116.  4.62.2  Description
  51117.  
  51118.  The test utility shall evaluate the _e_x_p_r_e_s_s_i_o_n and indicate the result of  1
  51119.  the evaluation by its exit status.  An exit status of zero indicates that  1
  51120.  the expression evaluated as true and an exit status of 1 indicates that    1
  51121.  the expression evaluated as false.                                         1
  51122.  
  51123.  In the second form of the utility, which uses [ ], rather than test, the
  51124.  square brackets shall be separate arguments.
  51125.  
  51126.  
  51127.  4.62.3  Options
  51128.  
  51129.  The test utility shall not recognize the -- argument in the manner
  51130.  specified by utility syntax guideline 10 in 2.10.2.
  51131.  
  51132.  Implementations shall not support any options.                             1
  51133.  
  51134.  
  51135.  
  51136.  
  51137.  
  51138.  
  51139.  
  51140.  
  51141.                Copyright c 1991 IEEE.  All rights reserved.
  51142.       This is an unapproved IEEE Standards Draft, subject to change.
  51143.  
  51144.  
  51145.  
  51146.  
  51147.  
  51148.  4.62 test - Evaluate expression                                       745
  51149.  
  51150.  
  51151.  
  51152.  
  51153.  
  51154.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  51155.  
  51156.  4.62.4  Operands
  51157.  
  51158.  All operators and elements of primaries shall be presented as separate     2
  51159.  arguments to the test utility.
  51160.  
  51161.  The following primaries can be used to construct _e_x_p_r_e_s_s_i_o_n:
  51162.  
  51163.     -b _f_i_l_e      True if _f_i_l_e exists and is a block special file.
  51164.  
  51165.     -c _f_i_l_e      True if _f_i_l_e exists and is a character special file.
  51166.  
  51167.     -d _f_i_l_e      True if _f_i_l_e exists and is a directory.
  51168.  
  51169.     -e _f_i_l_e      True if _f_i_l_e exists.
  51170.  
  51171.     -f _f_i_l_e      True if _f_i_l_e exists and is a regular file.
  51172.  
  51173.     -g _f_i_l_e      True if _f_i_l_e exists and its set group ID flag is set.
  51174.  
  51175.     -n _s_t_r_i_n_g    True if the length of _s_t_r_i_n_g is nonzero.
  51176.  
  51177.     -p _f_i_l_e      True if _f_i_l_e is a named pipe (FIFO).
  51178.  
  51179.     -r _f_i_l_e      True if _f_i_l_e exists and is readable.
  51180.  
  51181.     -s _f_i_l_e      True if _f_i_l_e exists and has a size greater than zero.
  51182.  
  51183.     -t _f_i_l_e__d_e_s_c_r_i_p_t_o_r
  51184.                  True if the file whose file descriptor number is
  51185.                  _f_i_l_e__d_e_s_c_r_i_p_t_o_r is open and is associated with a
  51186.                  terminal.
  51187.  
  51188.     -u _f_i_l_e      True if _f_i_l_e exists and its set-user-ID flag is set.
  51189.  
  51190.     -w _f_i_l_e      True if _f_i_l_e exists and is writable.  True shall indicate
  51191.                  only that the write flag is on.  The _f_i_l_e shall not be
  51192.                  writable on a read-only file system even if this test
  51193.                  indicates true.
  51194.  
  51195.     -x _f_i_l_e      True if _f_i_l_e exists and is executable.  True shall
  51196.                  indicate only that the execute flag is on.  If _f_i_l_e is a
  51197.                  directory, true indicates that _f_i_l_e can be searched.
  51198.  
  51199.     -z _s_t_r_i_n_g    True if the length of string _s_t_r_i_n_g is zero.
  51200.  
  51201.     _s_t_r_i_n_g       True if the string _s_t_r_i_n_g is not the null string.
  51202.  
  51203.     _s_1 = _s_2      True if the strings _s_1 and _s_2 are identical.
  51204.  
  51205.  
  51206.  
  51207.                Copyright c 1991 IEEE.  All rights reserved.
  51208.       This is an unapproved IEEE Standards Draft, subject to change.
  51209.  
  51210.  
  51211.  
  51212.  
  51213.  
  51214.  746                                     4 Execution Environment Utilities
  51215.  
  51216.  
  51217.  
  51218.  
  51219.  
  51220.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  51221.  
  51222.     _s_1 != _s_2     True if the strings _s_1 and _s_2 are not identical.
  51223.  
  51224.     _n_1 -_e_q _n_2    True if the integers _n_1 and _n_2 are algebraically equal.
  51225.  
  51226.     _n_1 -_n_e _n_2    True if the integers _n_1 and _n_2 are not algebraically
  51227.                  equal.
  51228.  
  51229.     _n_1 -_g_t _n_2    True if the integer _n_1 is algebraically greater than the
  51230.                  integer _n_2.
  51231.  
  51232.     _n_1 -_g_e _n_2    True if the integer _n_1 is algebraically greater than or
  51233.                  equal to the integer _n_2.
  51234.  
  51235.     _n_1 -_l_t _n_2    True if the integer _n_1 is algebraically less than the
  51236.                  integer _n_2.
  51237.  
  51238.     _n_1 -_l_e _n_2    True if the integer _n_1 is algebraically less than or
  51239.                  equal to the integer _n_2.
  51240.  
  51241.  A primary can be preceded by the ! operator to complement its test, as     1
  51242.  described below.                                                           1
  51243.  
  51244.  The primaries with two elements of the form:                               2
  51245.  
  51246.        -_p_r_i_m_a_r_y__o_p_e_r_a_t_o_r   _p_r_i_m_a_r_y__o_p_e_r_a_n_d                                  2
  51247.  
  51248.  are known as _u_n_a_r_y _p_r_i_m_a_r_i_e_s.  The primaries with three elements in        2
  51249.  either of the two forms:                                                   2
  51250.  
  51251.        _p_r_i_m_a_r_y__o_p_e_r_a_n_d  -_p_r_i_m_a_r_y__o_p_e_r_a_t_o_r  _p_r_i_m_a_r_y__o_p_e_r_a_n_d                  2
  51252.  
  51253.        _p_r_i_m_a_r_y__o_p_e_r_a_n_d  _p_r_i_m_a_r_y__o_p_e_r_a_t_o_r  _p_r_i_m_a_r_y__o_p_e_r_a_n_d                   2
  51254.  
  51255.  are known as _b_i_n_a_r_y _p_r_i_m_a_r_i_e_s.  Additional implementation-defined          2
  51256.  operators and _p_r_i_m_a_r_y__o_p_e_r_a_t_o_rs may be provided by implementations.  They  2
  51257.  shall be of the form -_o_p_e_r_a_t_o_r where the first character of _o_p_e_r_a_t_o_r is    2
  51258.  not a digit.  The additional implementation-defined operators ``('' and    2
  51259.  ``)'' may also be provided by implementations.                             2
  51260.  
  51261.  The algorithm for determining the precedence of the operators and the      1
  51262.  return value that shall be generated is based on the number of arguments   1
  51263.  presented to test.  (However, when using the [...] form, the right-        1
  51264.  bracket final argument shall not be counted in this algorithm.)  In the    1
  51265.  following list, $1, $2, $3, and $4 represent the arguments presented to    1
  51266.  test.                                                                      1
  51267.  
  51268.      0 arguments:                                                           1
  51269.  
  51270.  
  51271.  
  51272.  
  51273.                Copyright c 1991 IEEE.  All rights reserved.
  51274.       This is an unapproved IEEE Standards Draft, subject to change.
  51275.  
  51276.  
  51277.  
  51278.  
  51279.  
  51280.  4.62 test - Evaluate expression                                       747
  51281.  
  51282.  
  51283.  
  51284.  
  51285.  
  51286.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  51287.  
  51288.           Exit false (1).                                                   1
  51289.  
  51290.      1 argument:                                                            1
  51291.  
  51292.           Exit true (0) if $1 is not null; otherwise, exit false.           1
  51293.  
  51294.      2 arguments:                                                           1
  51295.  
  51296.            - If $1 is !, exit true if $2 is null, false if $2 is not null.  1
  51297.  
  51298.            - If $1 is a unary primary, exit true if the unary test is       2
  51299.              true, false if the unary test is false.                        1
  51300.  
  51301.            - Otherwise, produce unspecified results.                        1
  51302.  
  51303.      3 arguments:                                                           1
  51304.  
  51305.            - If $2 is a binary primary, perform the binary test of $1 and   2
  51306.              $3.                                                            2
  51307.  
  51308.            - If $1 is !, negate the two-argument test of $2 and $3.         1
  51309.  
  51310.            - Otherwise, produce unspecified results.                        1
  51311.  
  51312.      4 arguments:                                                           1
  51313.  
  51314.            - If $1 is !, negate the three-argument test of $2, $3, and $4.  1
  51315.  
  51316.            - Otherwise, the results are unspecified.                        1
  51317.  
  51318.     >4 arguments:                                                           1
  51319.  
  51320.           The results are unspecified.                                      1
  51321.  
  51322.  
  51323.  4.62.5  External Influences
  51324.  
  51325.  
  51326.  4.62.5.1  Standard Input
  51327.  
  51328.  None.
  51329.  
  51330.  4.62.5.2  Input Files
  51331.  
  51332.  None.
  51333.  
  51334.  
  51335.  
  51336.  
  51337.  
  51338.  
  51339.                Copyright c 1991 IEEE.  All rights reserved.
  51340.       This is an unapproved IEEE Standards Draft, subject to change.
  51341.  
  51342.  
  51343.  
  51344.  
  51345.  
  51346.  748                                     4 Execution Environment Utilities
  51347.  
  51348.  
  51349.  
  51350.  
  51351.  
  51352.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  51353.  
  51354.  4.62.5.3  Environment Variables
  51355.  
  51356.  The following environment variables shall affect the execution of test:
  51357.  
  51358.     LANG               This variable shall determine the locale to use for
  51359.                        the locale categories when both LC_ALL and the
  51360.                        corresponding environment variable (beginning with
  51361.                        LC_) do not specify a locale.  See 2.6.
  51362.  
  51363.     LC_ALL             This variable shall determine the locale to be used
  51364.                        to override any values for locale categories
  51365.                        specified by the settings of LANG or any
  51366.                        environment variables beginning with LC_.
  51367.  
  51368.     LC_CTYPE           This variable shall determine the locale for the
  51369.                        interpretation of sequences of bytes of text data
  51370.                        as characters (e.g., single- versus multibyte
  51371.                        characters in arguments).
  51372.  
  51373.     LC_MESSAGES        This variable shall determine the language in which
  51374.                        messages should be written.
  51375.  
  51376.  
  51377.  4.62.5.4  Asynchronous Events
  51378.  
  51379.  Default.
  51380.  
  51381.  
  51382.  4.62.6  External Effects
  51383.  
  51384.  4.62.6.1  Standard Output
  51385.  
  51386.  None.
  51387.  
  51388.  
  51389.  4.62.6.2  Standard Error
  51390.  
  51391.  Used only for diagnostic messages.
  51392.  
  51393.  4.62.6.3  Output Files
  51394.  
  51395.  None.
  51396.  
  51397.  
  51398.  
  51399.  
  51400.  
  51401.  
  51402.  
  51403.  
  51404.  
  51405.                Copyright c 1991 IEEE.  All rights reserved.
  51406.       This is an unapproved IEEE Standards Draft, subject to change.
  51407.  
  51408.  
  51409.  
  51410.  
  51411.  
  51412.  4.62 test - Evaluate expression                                       749
  51413.  
  51414.  
  51415.  
  51416.  
  51417.  
  51418.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  51419.  
  51420.  4.62.7  Extended Description
  51421.  
  51422.  None.
  51423.  
  51424.  
  51425.  4.62.8  Exit Status
  51426.  
  51427.  The test utility shall exit with one of the following values:
  51428.  
  51429.      0    _e_x_p_r_e_s_s_i_o_n evaluated to true.
  51430.  
  51431.      1    _e_x_p_r_e_s_s_i_o_n evaluated to false or _e_x_p_r_e_s_s_i_o_n was missing.
  51432.  
  51433.     >1    An error occurred.
  51434.  
  51435.  
  51436.  4.62.9  Consequences of Errors
  51437.  
  51438.  Default.
  51439.  
  51440.  BEGIN_RATIONALE
  51441.  
  51442.  
  51443.  4.62.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  51444.  
  51445.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  51446.  
  51447.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _r_a_t_i_o_n_a_l_e _h_a_s _b_e_e_n _r_e_a_r_r_a_n_g_e_d _q_u_i_t_e _a _b_i_t.  _O_n_l_y _n_e_w,  1
  51448.  _n_o_t _m_o_v_e_d, _t_e_x_t _h_a_s _b_e_e_n _d_i_f_f_m_a_r_k_e_d.                                       1
  51449.  
  51450.  Historical systems have supported more than four arguments, but there has  1
  51451.  been a fundamental disagreement between BSD and System V on certain        1
  51452.  combinations of arguments.  Since no accommodation could be reached        1
  51453.  between the two versions of test without breaking numerous applications,   1
  51454.  the version of test in POSIX.2 specifies only the relatively simple tests  1
  51455.  and relies on the syntax of the shell command language for the             1
  51456.  construction of more complex expressions.  Using the POSIX.2 rules         1
  51457.  produces completely reliable, portable scripts, which is not always        1
  51458.  possible using either of the historical forms.  Some of the historical     1
  51459.  behavior is described here to aid conversion of scripts with complex test  1
  51460.  expressions.                                                               1
  51461.  
  51462.  Both BSD and System V support the combining of primaries with the          1
  51463.  following constructs:                                                      1
  51464.  
  51465.     _e_x_p_r_e_s_s_i_o_n_1 -_a _e_x_p_r_e_s_s_i_o_n_2   True if both _e_x_p_r_e_s_s_i_o_n_1 and _e_x_p_r_e_s_s_i_o_n_2   1
  51466.                                  are true.                                  1
  51467.  
  51468.  
  51469.  
  51470.  
  51471.                Copyright c 1991 IEEE.  All rights reserved.
  51472.       This is an unapproved IEEE Standards Draft, subject to change.
  51473.  
  51474.  
  51475.  
  51476.  
  51477.  
  51478.  750                                     4 Execution Environment Utilities
  51479.  
  51480.  
  51481.  
  51482.  
  51483.  
  51484.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  51485.  
  51486.     _e_x_p_r_e_s_s_i_o_n_1 -_o _e_x_p_r_e_s_s_i_o_n_2   True if at least one of _e_x_p_r_e_s_s_i_o_n_1 and    1
  51487.                                  _e_x_p_r_e_s_s_i_o_n_2 are true.                      1
  51488.  
  51489.     ( _e_x_p_r_e_s_s_i_o_n )               True if _e_x_p_r_e_s_s_i_o_n is true.                1
  51490.  
  51491.  In evaluating these more complex combined expressions, the following       1
  51492.  precedence rules are used:                                                 1
  51493.  
  51494.      - The unary primaries have higher precedence than the algebraic        1
  51495.        binary primaries.                                                    1
  51496.  
  51497.      - On BSD systems, the unary primaries have higher precedence than the  1
  51498.        string binary primaries.  On System V systems, the unary primaries   1
  51499.        have lower precedence than the string binary primaries.              1
  51500.  
  51501.      - The unary and binary primaries have higher precedence than the       1
  51502.        unary _s_t_r_i_n_g primary.                                                1
  51503.  
  51504.      - The ! operator has higher precedence than the -a operator and the    1
  51505.        -a operator has higher precedence than the -o operator.              1
  51506.  
  51507.      - The -a and -o operators are left associative.                        1
  51508.  
  51509.      - The parentheses can be used to alter the normal precedence and       1
  51510.        associativity.                                                       1
  51511.  
  51512.  The following guidance is offered for the use of the historical            1
  51513.  expressions:                                                               1
  51514.  
  51515.      - Scripts should be careful when dealing with user-supplied input      1
  51516.        that could be confused with primaries and operators.  Unless the
  51517.        application writer knows all the cases that produce input to the
  51518.        script, invocations like:
  51519.  
  51520.              test "$1" -a "$2"
  51521.  
  51522.        should be written as:
  51523.  
  51524.              test "$1" && test "$2"                                         1
  51525.  
  51526.        to avoid problems if a user-supplied values such as $1 set to ! and
  51527.        $2 set to the null string.  That is, in cases where portability
  51528.        between implementations based on BSD and System V systems is of
  51529.        concern, replace:
  51530.  
  51531.              test expr1 -a expr2
  51532.  
  51533.        with:
  51534.  
  51535.  
  51536.  
  51537.                Copyright c 1991 IEEE.  All rights reserved.
  51538.       This is an unapproved IEEE Standards Draft, subject to change.
  51539.  
  51540.  
  51541.  
  51542.  
  51543.  
  51544.  4.62 test - Evaluate expression                                       751
  51545.  
  51546.  
  51547.  
  51548.  
  51549.  
  51550.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  51551.  
  51552.              test expr1 && test expr2
  51553.  
  51554.        and replace:
  51555.  
  51556.              test expr1 -o expr2
  51557.  
  51558.        with:
  51559.  
  51560.              test expr1 || test expr2
  51561.  
  51562.        but note that, in test, -a has higher precedence than -o while &&
  51563.        and || have equal precedence in the shell.
  51564.  
  51565.        Parentheses or braces can be used in the shell command language to   1
  51566.        effect grouping.  Historical test implementations also support       1
  51567.        parentheses, but they must be escaped when using sh; for example:    1
  51568.  
  51569.              test \( expr1 -a expr2 \) -o expr3                             1
  51570.  
  51571.        This command is not always portable.  The following form can be      1
  51572.        used instead:                                                        1
  51573.  
  51574.              ( test expr1 && test expr2 ) || test expr3                     1
  51575.  
  51576.      - The two commands:                                                    1
  51577.  
  51578.              test "$1"                                                      1
  51579.              test ! "$1"                                                    1
  51580.  
  51581.        could not be used reliably on historical systems.  Unexpected        1
  51582.        results would occur if such a _s_t_r_i_n_g expression were used and $1     1
  51583.        expanded to !, (, or a known unary primary.  Better constructs       1
  51584.        were:                                                                1
  51585.  
  51586.              test -n "$1"                                                   1
  51587.              test -z "$1"                                                   1
  51588.  
  51589.        respectively.  These suggested replacements have always worked on    1
  51590.        historical BSD-based implementations, and work on historical         1
  51591.        System V-based implementations as long as $1 does not expand to =    1
  51592.        or !=.  Using the POSIX.2 rules, any of the four forms shown will    1
  51593.        work for any possible value of $1.                                   1
  51594.  
  51595.      - Historical systems were also unreliable given the common construct:  1
  51596.  
  51597.              test "$response" = "expected string"                           1
  51598.  
  51599.        One of the following was a more reliable form:                       1
  51600.  
  51601.  
  51602.  
  51603.                Copyright c 1991 IEEE.  All rights reserved.
  51604.       This is an unapproved IEEE Standards Draft, subject to change.
  51605.  
  51606.  
  51607.  
  51608.  
  51609.  
  51610.  752                                     4 Execution Environment Utilities
  51611.  
  51612.  
  51613.  
  51614.  
  51615.  
  51616.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  51617.  
  51618.              test "X$response" = "Xexpected string"
  51619.              test "expected string" = "$response"
  51620.  
  51621.        Note that the second form assumes that expected string could not be
  51622.        confused with any any unary primary.  If expected string starts
  51623.        with -, (, !, or even =, the first form should be used instead.
  51624.        Using the POSIX.2 rules, any of the three comparison forms is
  51625.        reliable, given any input.  (However, note that the strings are
  51626.        quoted in all cases.)
  51627.  
  51628.  The BSD and System V versions of -f are not the same.  The BSD definition
  51629.  was:
  51630.  
  51631.     -f _f_i_l_e     True if _f_i_l_e exists and is not a directory.
  51632.  
  51633.  The _S_V_I_D version (true if the file exists and is a regular file) was
  51634.  chosen for this standard because its use is consistent with the -b, -c,
  51635.  -d, and -p operands (_f_i_l_e exists and is a specific file type).
  51636.  
  51637.  The -e primary, possessing similar functionality to that provided by the
  51638.  C-shell, was added because it provides the only way for a shell script to
  51639.  find out if a file exists without trying to open the file.  (Since
  51640.  implementations are allowed to add additional file types, a portable
  51641.  script cannot use:
  51642.  
  51643.        test -b foo -o -c foo -o -d foo -o -f foo -o -p foo
  51644.  
  51645.  to find out if foo is an existing file.)  On historical BSD systems, the
  51646.  existence of a file could be determined by:
  51647.  
  51648.        test -f foo -o -d foo
  51649.  
  51650.  but there was no easy way to determine that an existing file was a
  51651.  regular file.  An earlier draft used the KornShell -a primary (with the
  51652.  same meaning), but this was changed to -e because there were concerns
  51653.  about the high probability of humans confusing the -a primary with the -a
  51654.  binary operator.
  51655.  
  51656.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  51657.  
  51658.  The -a and -o binary operators and the grouping parentheses were omitted   1
  51659.  from POSIX.2 due to a difference between existing implementations of the   1
  51660.  test utility in the precedence of the binary primaries = and != compared   1
  51661.  to the unary primaries -b, -c, -d, -f, -g, -n, -p, -r, -s, -t, -u, -w,     1
  51662.  -x, and -z.  On BSD, Version 7, PWB, and 32V systems the unary primaries
  51663.  have higher precedence than the binary operators; on System III and
  51664.  System V implementations, the binary operators = and != have higher
  51665.  precedence.  The change was apparently made for System III so that the
  51666.  construct:
  51667.  
  51668.  
  51669.                Copyright c 1991 IEEE.  All rights reserved.
  51670.       This is an unapproved IEEE Standards Draft, subject to change.
  51671.  
  51672.  
  51673.  
  51674.  
  51675.  
  51676.  4.62 test - Evaluate expression                                       753
  51677.  
  51678.  
  51679.  
  51680.  
  51681.  
  51682.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  51683.  
  51684.        test "$1" = "$2"
  51685.  
  51686.  could be made to work even if $1 started with -.  It is believed that
  51687.  this change was a mistake because:
  51688.  
  51689.      - It is not a complete solution; if $1 expands to ( or !, it still
  51690.        will not work.
  51691.  
  51692.      - It makes it impossible to use the unary primaries -n and -z to test
  51693.        for a null string if there is any chance that the string will
  51694.        expand to =.
  51695.  
  51696.      - More importantly, there was the well known workaround of
  51697.        specifying:
  51698.  
  51699.              test X"$1" = X"$2"
  51700.  
  51701.        that always worked.
  51702.  
  51703.  Unfortunately, when the = and != binary primaries were given precedence
  51704.  over the unary primaries, there was no workaround provided for scripts
  51705.  that wanted to reliably specify something like:
  51706.  
  51707.        test -n "$1"
  51708.  
  51709.  because if $1 expands to =, it gives a syntax error.
  51710.  
  51711.  There was some discussion of outlawing the System V behavior and           1
  51712.  requiring the more logical precedence that originated in its predecessors  1
  51713.  and remains in BSD-based systems.  However, there are simply too many      1
  51714.  historical applications that would break if System V were required to      1
  51715.  make this change; this number dwarfed the number of scripts using          1
  51716.  combination logic that would then no longer be strictly portable.          1
  51717.  
  51718.  POSIX.2 requires that if test is called with one, two, three, or four      1
  51719.  operands it correctly interprets the expression even if there is an        1
  51720.  alternate syntax tree that could lead to a syntax error.  It eliminates    1
  51721.  the requirement that many string comparisons be protected with leading     1
  51722.  characters, such as                                                        1
  51723.  
  51724.        test X"$1" = X"$2"                                                   1
  51725.  
  51726.  and allows the single-argument _s_t_r_i_n_g form to be used with all possible    1
  51727.  inputs.                                                                    1
  51728.  
  51729.  The following examples show some of the changes that are required to be
  51730.  made to make historical BSD and System V-based implementations of test
  51731.  conform to this standard:
  51732.  
  51733.  
  51734.  
  51735.                Copyright c 1991 IEEE.  All rights reserved.
  51736.       This is an unapproved IEEE Standards Draft, subject to change.
  51737.  
  51738.  
  51739.  
  51740.  
  51741.  
  51742.  754                                     4 Execution Environment Utilities
  51743.  
  51744.  
  51745.  
  51746.  
  51747.  
  51748.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  51749.  
  51750.       test -d =      POSIX.2    True if there is a directory named =
  51751.                      BSD        True if there is a directory named =
  51752.                      System V   Syntax error; = needs two operands
  51753.  
  51754.       test -d = -f   POSIX.2    False
  51755.                      BSD        Syntax error; it expects -a or -o
  51756.                                 after -d =
  51757.                      System V   False
  51758.  
  51759.  Implementations are prohibited from extending test with options because    1
  51760.  it would make the ``test  _s_t_r_i_n_g'' case ambiguous for inputs that might    1
  51761.  match an extended option.  Implementations can add primaries and           1
  51762.  operators, as indicated.                                                   1
  51763.  
  51764.  The following options were not included in POSIX.2, although they are
  51765.  provided by some historical implementations, since these facilities and
  51766.  concepts are not supported by POSIX.1 {8}, nor defined in POSIX.2.  These
  51767.  operands should not be used by new implementations for other purposes.
  51768.  
  51769.     -h _f_i_l_e     True if _f_i_l_e exists and is a symbolic link.
  51770.  
  51771.     -k _f_i_l_e     True if _f_i_l_e exists and its sticky bit is set.
  51772.  
  51773.     -L _f_i_l_e     True if _f_i_l_e is a symbolic link.                            1
  51774.  
  51775.     -C _f_i_l_e     True if _f_i_l_e is a contiguous file.                          1
  51776.  
  51777.     -S _f_i_l_e     True if _f_i_l_e is a socket.                                   1
  51778.  
  51779.     -V _f_i_l_e     True if _f_i_l_e is a version file.                             1
  51780.  
  51781.  The following option was not included because it was undocumented in most
  51782.  implementations, has been removed from some implementations (including
  51783.  System V), and the functionality is provided by the shell (see 3.6.2).
  51784.  
  51785.     -l _s_t_r_i_n_g   The length of the string _s_t_r_i_n_g.
  51786.  
  51787.  The -b, -c, -g, -p, -u, and -x operands are derived from the _S_V_I_D;
  51788.  historical BSD does not provide them.  The -k operand is derived from
  51789.  System V; historical BSD does not provide it.
  51790.  
  51791.  On historical BSD systems, test -w _d_i_r_e_c_t_o_r_y always returned false         1
  51792.  because test tried to open the directory for writing, which always fails.  1
  51793.  
  51794.  Some additional primaries newly invented or from the KornShell appeared
  51795.  in an earlier draft as part of the Conditional Command ([[ ]]):  _s_1 > _s_2,
  51796.  _s_1 < _s_2, _s_t_r = _p_a_t_t_e_r_n, _s_t_r != _p_a_t_t_e_r_n, _f_1 -nt _f_2, _f_1 -ot _f_2, and _f_1 -ef   1
  51797.  _f_2. They were not carried forward into the test utility when the
  51798.  Conditional Command was removed from the shell because they have not been
  51799.  
  51800.  
  51801.                Copyright c 1991 IEEE.  All rights reserved.
  51802.       This is an unapproved IEEE Standards Draft, subject to change.
  51803.  
  51804.  
  51805.  
  51806.  
  51807.  
  51808.  4.62 test - Evaluate expression                                       755
  51809.  
  51810.  
  51811.  
  51812.  
  51813.  
  51814.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  51815.  
  51816.  included in the test utility built into historical implementations of the
  51817.  sh utility.
  51818.  
  51819.  The -t _f_i_l_e__d_e_s_c_r_i_p_t_o_r primary is shown with a mandatory argument because
  51820.  the grammar is ambiguous if it can be omitted.  Historical
  51821.  implementations have allowed it to be omitted, providing a default of 1.
  51822.  
  51823.  END_RATIONALE
  51824.  
  51825.  
  51826.  
  51827.  4.63  touch - Change file access and modification times
  51828.  
  51829.  
  51830.  4.63.1  Synopsis
  51831.  
  51832.  touch  [-acm] [ -r _r_e_f__f_i_l_e | -t _t_i_m_e ] _f_i_l_e ...
  51833.  
  51834.  _O_b_s_o_l_e_s_c_e_n_t _V_e_r_s_i_o_n:
  51835.  
  51836.  touch  [-acm] [_d_a_t_e__t_i_m_e] _f_i_l_e ...
  51837.  
  51838.  
  51839.  4.63.2  Description
  51840.  
  51841.  The touch utility shall change the modification and/or access times of
  51842.  files.  The modification time is equivalent to the value of the _s_t__m_t_i_m_e
  51843.  member of the _s_t_a_t structure for a file, as described in POSIX.1 {8}; the
  51844.  access time is equivalent to the value of _s_t__a_t_i_m_e.
  51845.  
  51846.  The time used can be specified by the -t _t_i_m_e option-argument, the
  51847.  corresponding time field(s) of the file referenced by the -r _r_e_f__f_i_l_e
  51848.  option-argument, or the _d_a_t_e__t_i_m_e operand, as specified in the following
  51849.  subclauses.  If none of these are specified, touch shall use the current
  51850.  time [the value returned by the equivalent of the POSIX.1 {8} _t_i_m_e()
  51851.  function].
  51852.  
  51853.  For each _f_i_l_e operand, touch shall perform actions equivalent to the
  51854.  following functions defined in POSIX.1 {8}:
  51855.  
  51856.      (1)  If _f_i_l_e does not exist, a _c_r_e_a_t() function call is made with the
  51857.           _f_i_l_e operand used as the _p_a_t_h argument and the value of the
  51858.           bitwise inclusive OR of S_IRUSR, S_IWUSR, S_IRGRP, S_IWGRP,
  51859.           S_IROTH, and S_IWOTH used as the _m_o_d_e argument.
  51860.  
  51861.      (2)  The _u_t_i_m_e() function is called with the following arguments:
  51862.  
  51863.            (a)  The _f_i_l_e operand is used as the _p_a_t_h argument.
  51864.  
  51865.  
  51866.  
  51867.                Copyright c 1991 IEEE.  All rights reserved.
  51868.       This is an unapproved IEEE Standards Draft, subject to change.
  51869.  
  51870.  
  51871.  
  51872.  
  51873.  
  51874.  756                                     4 Execution Environment Utilities
  51875.  
  51876.  
  51877.  
  51878.  
  51879.  
  51880.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  51881.  
  51882.            (b)  The _u_t_i_m_b_u_f structure members _a_c_t_i_m_e and _m_o_d_t_i_m_e are
  51883.                 determined as described under 4.63.3.
  51884.  
  51885.  
  51886.  4.63.3  Options
  51887.  
  51888.  The touch utility shall conform to the utility argument syntax guidelines
  51889.  described in 2.10.2.
  51890.  
  51891.  The following options shall be supported by the implementation:
  51892.  
  51893.     -a          Change the access time of _f_i_l_e. Do not change the
  51894.                 modification time unless -m is also specified.
  51895.  
  51896.     -c          Do not create a specified _f_i_l_e if it does not exist.  Do
  51897.                 not write any diagnostic messages concerning this
  51898.                 condition.
  51899.  
  51900.     -m          Change the modification time of _f_i_l_e. Do not change the
  51901.                 access time unless -a is also specified.
  51902.  
  51903.     -r _r_e_f__f_i_l_e Use the corresponding time of the file named by the
  51904.                 pathname _r_e_f__f_i_l_e instead of the current time.
  51905.  
  51906.     -t _t_i_m_e     Use the specified _t_i_m_e instead of the current time.  The
  51907.                 option-argument shall be a decimal number of the form:
  51908.  
  51909.                       [[_C_C]_Y_Y]_M_M_D_D_h_h_m_m[._S_S]
  51910.  
  51911.                 where each two digits represents the following:
  51912.  
  51913.                    _M_M          The month of the year (01-12).
  51914.  
  51915.                    _D_D          The day of the month (01-31).
  51916.  
  51917.                    _h_h          The hour of the day (00-23).
  51918.  
  51919.                    _m_m          The minute of the hour (00-59).
  51920.  
  51921.                    _C_C          The first two digits of the year (the
  51922.                                century).
  51923.  
  51924.                    _Y_Y          The second two digits of the year.
  51925.  
  51926.                    _S_S          The second of the minute (00-61).
  51927.  
  51928.  
  51929.  
  51930.  
  51931.  
  51932.  
  51933.                Copyright c 1991 IEEE.  All rights reserved.
  51934.       This is an unapproved IEEE Standards Draft, subject to change.
  51935.  
  51936.  
  51937.  
  51938.  
  51939.  
  51940.  4.63 touch - Change file access and modification times                757
  51941.  
  51942.  
  51943.  
  51944.  
  51945.  
  51946.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  51947.  
  51948.                 Both _C_C and _Y_Y shall be optional.  If neither is given,
  51949.                 the current year shall be assumed.  If _Y_Y is specified,
  51950.                 but _C_C is not, _C_C shall be derived as follows:
  51951.  
  51952.                                  If _Y_Y is:   _C_C becomes:
  51953.                                  _________   ___________
  51954.                                    69-99         19
  51955.                                    00-68         20
  51956.  
  51957.                 The resulting time shall be affected by the value of the
  51958.                 TZ environment variable.  If the resulting time value
  51959.                 precedes the Epoch, touch shall exit immediately with an
  51960.                 error status.  The range of valid times past the Epoch is
  51961.                 implementation defined, but shall extend to at least
  51962.                 midnight 1 January 2000 UTC.
  51963.  
  51964.                 The range for _S_S is (00-61) rather than (00-59) because of
  51965.                 leap seconds.  If _S_S is 60 or 61, and the resulting time,
  51966.                 as affected by the TZ environment variable, does not refer
  51967.                 to a leap second:  the resulting time shall be one or two
  51968.                 seconds after a time where _S_S is 59.  If _S_S is not given a
  51969.                 value, it is assumed to be zero.
  51970.  
  51971.  If neither the -a nor -m options were specified, touch shall behave as if
  51972.  both the -a and -m options were specified.
  51973.  
  51974.  
  51975.  4.63.4  Operands
  51976.  
  51977.  The following operands shall be supported by the implementation:
  51978.  
  51979.     _f_i_l_e        A pathname of a file whose times are to be modified.
  51980.  
  51981.     _d_a_t_e__t_i_m_e   (Obsolescent.)  Use the specified _d_a_t_e__t_i_m_e instead of the
  51982.                 current time.  The operand is a decimal number of the
  51983.                 form:
  51984.  
  51985.                       _M_M_D_D_h_h_m_m[_y_y]
  51986.  
  51987.                 where _M_M, _D_D, _h_h, and _m_m are as described for the _t_i_m_e
  51988.                 option-argument to the -t option and the optional _y_y is
  51989.                 interpreted as follows:
  51990.  
  51991.                       If not specified, the current year shall be used.
  51992.                       If _y_y is in the range 69-99, the year 1969-1999,
  51993.                       respectively, shall be used.  Otherwise, the results
  51994.                       are unspecified.
  51995.  
  51996.  
  51997.  
  51998.  
  51999.                Copyright c 1991 IEEE.  All rights reserved.
  52000.       This is an unapproved IEEE Standards Draft, subject to change.
  52001.  
  52002.  
  52003.  
  52004.  
  52005.  
  52006.  758                                     4 Execution Environment Utilities
  52007.  
  52008.  
  52009.  
  52010.  
  52011.  
  52012.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  52013.  
  52014.                 If no -r option is specified, no -t option is specified,
  52015.                 at least two operands are specified, and the first operand
  52016.                 is an eight- or ten-digit decimal integer, the first
  52017.                 operand shall be assumed to be a _d_a_t_e__t_i_m_e operand.
  52018.                 Otherwise, the first operand shall be assumed to be a _f_i_l_e
  52019.                 operand.
  52020.  
  52021.  
  52022.  4.63.5  External Influences
  52023.  
  52024.  
  52025.  4.63.5.1  Standard Input
  52026.  
  52027.  None.
  52028.  
  52029.  4.63.5.2  Input Files
  52030.  
  52031.  None.
  52032.  
  52033.  
  52034.  4.63.5.3  Environment Variables
  52035.  
  52036.  The following environment variables shall affect the execution of touch:
  52037.  
  52038.     LANG               This variable shall determine the locale to use for
  52039.                        the locale categories when both LC_ALL and the
  52040.                        corresponding environment variable (beginning with
  52041.                        LC_) do not specify a locale.  See 2.6.
  52042.  
  52043.     LC_ALL             This variable shall determine the locale to be used
  52044.                        to override any values for locale categories
  52045.                        specified by the settings of LANG or any
  52046.                        environment variables beginning with LC_.
  52047.  
  52048.     LC_CTYPE           This variable shall determine the locale for the
  52049.                        interpretation of sequences of bytes of text data
  52050.                        as characters (e.g., single- versus multibyte
  52051.                        characters in arguments).
  52052.  
  52053.     LC_MESSAGES        This variable shall determine the language in which
  52054.                        messages should be written.
  52055.  
  52056.     TZ                 If the _t_i_m_e option-argument (or operand; see above)
  52057.                        is specified, TZ shall be used to interpret the
  52058.                        time for the specified time zone.
  52059.  
  52060.  
  52061.  
  52062.  
  52063.  
  52064.  
  52065.                Copyright c 1991 IEEE.  All rights reserved.
  52066.       This is an unapproved IEEE Standards Draft, subject to change.
  52067.  
  52068.  
  52069.  
  52070.  
  52071.  
  52072.  4.63 touch - Change file access and modification times                759
  52073.  
  52074.  
  52075.  
  52076.  
  52077.  
  52078.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  52079.  
  52080.  4.63.5.4  Asynchronous Events
  52081.  
  52082.  Default.
  52083.  
  52084.  
  52085.  4.63.6  External Effects
  52086.  
  52087.  
  52088.  4.63.6.1  Standard Output
  52089.  
  52090.  None.
  52091.  
  52092.  4.63.6.2  Standard Error
  52093.  
  52094.  Used only for diagnostic messages.
  52095.  
  52096.  
  52097.  4.63.6.3  Output Files
  52098.  
  52099.  None.
  52100.  
  52101.  
  52102.  4.63.7  Extended Description
  52103.  
  52104.  None.
  52105.  
  52106.  
  52107.  4.63.8  Exit Status
  52108.  
  52109.  The touch utility shall exit with one of the following values:
  52110.  
  52111.      0    The utility executed successfully and all requested changes were
  52112.           made.
  52113.  
  52114.     >0    An error occurred.
  52115.  
  52116.  
  52117.  4.63.9  Consequences of Errors
  52118.  
  52119.  Default.
  52120.  
  52121.  BEGIN_RATIONALE
  52122.  
  52123.  
  52124.  
  52125.  
  52126.  
  52127.  
  52128.  
  52129.  
  52130.  
  52131.                Copyright c 1991 IEEE.  All rights reserved.
  52132.       This is an unapproved IEEE Standards Draft, subject to change.
  52133.  
  52134.  
  52135.  
  52136.  
  52137.  
  52138.  760                                     4 Execution Environment Utilities
  52139.  
  52140.  
  52141.  
  52142.  
  52143.  
  52144.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  52145.  
  52146.  4.63.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  52147.  
  52148.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  52149.  
  52150.  The functionality of touch is described almost entirely through
  52151.  references to functions in POSIX.1 {8}.  In this way, there is no
  52152.  duplication of effort required for describing such side effects as the
  52153.  relationship of user IDs to the user database, permissions, etc.
  52154.  
  52155.  The interpretation of time is taken to be ``seconds since the Epoch,'' as
  52156.  defined by 2.2.2.129.  It should be noted that POSIX.1 {8} conforming
  52157.  implementations do not take leap seconds into account when computing
  52158.  seconds since the Epoch.  When _S_S=60 is used on POSIX.1 {8} conforming
  52159.  implementations, the resulting time always refers to 1 plus ``seconds
  52160.  since the Epoch'' for a time when _S_S=59.
  52161.  
  52162.  Note that although the -t _t_i_m_e option-argument and the obsolescent
  52163.  _d_a_t_e__t_i_m_e operand specify values in 1969, the access time and
  52164.  modification time fields are defined in terms of seconds since the Epoch
  52165.  (midnight on 1 January 1970 UTC).  Therefore, depending on the value of    1
  52166.  TZ when touch is run, there will never be more than a few valid hours in
  52167.  1969 and there need not be any valid times in 1969.
  52168.  
  52169.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  52170.  
  52171.  There are some significant differences between this touch and those in
  52172.  System V and BSD systems.  They are upward compatible for existing
  52173.  applications from both implementations.
  52174.  
  52175.      (1)  In System V, an ambiguity exists when a pathname that is a
  52176.           decimal number leads the operands; it is treated as a time
  52177.           value.  In BSD, no _t_i_m_e value is allowed; files may only be
  52178.           touched to the current time.  The [-t _t_i_m_e] construct solves
  52179.           these problems for future portable applications (note that the
  52180.           -t option is not existing practice).
  52181.  
  52182.      (2)  The inclusion of the century digits, _C_C, is also new.  Note that
  52183.           a ten-digit _t_i_m_e value is treated as if _Y_Y, and not _C_C, were
  52184.           specified.  The caveat about the range of dates following the
  52185.           Epoch was included as recognition that some UNIX systems will
  52186.           not be able to represent dates beyond the January 18, 2038,
  52187.           because they use _s_i_g_n_e_d _i_n_t as a time holder.
  52188.  
  52189.  One ambiguous situation occurs if -t _t_i_m_e is not specified, -r _r_e_f__f_i_l_e
  52190.  is not specified, and the first operand is an eight- or ten-digit decimal
  52191.  number.  A portable script can avoid this problem by using:
  52192.  
  52193.        touch -- file
  52194.  
  52195.  
  52196.  
  52197.                Copyright c 1991 IEEE.  All rights reserved.
  52198.       This is an unapproved IEEE Standards Draft, subject to change.
  52199.  
  52200.  
  52201.  
  52202.  
  52203.  
  52204.  4.63 touch - Change file access and modification times                761
  52205.  
  52206.  
  52207.  
  52208.  
  52209.  
  52210.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  52211.  
  52212.  or
  52213.  
  52214.        touch ./file
  52215.  
  52216.  in this case.
  52217.  
  52218.  The -r option was added because several comments requested this
  52219.  capability.  This option was named -f in an earlier draft, but was
  52220.  changed because the -f option is used in the BSD version of touch with a
  52221.  different meaning.
  52222.  
  52223.  At least one historical implementation of touch incremented the exit code
  52224.  if -c was specified and the file did not exist.  This standard requires
  52225.  exit status zero if no errors occur.
  52226.  
  52227.  END_RATIONALE
  52228.  
  52229.  
  52230.  
  52231.  4.64  tr - Translate characters
  52232.  
  52233.  
  52234.  4.64.1  Synopsis
  52235.  
  52236.  tr  [-cs] _s_t_r_i_n_g_1 _s_t_r_i_n_g_2
  52237.  
  52238.  tr  -s [-c] _s_t_r_i_n_g_1
  52239.  tr  -d [-c] _s_t_r_i_n_g_1
  52240.  
  52241.  tr  -ds [-c] _s_t_r_i_n_g_1 _s_t_r_i_n_g_2
  52242.  
  52243.  
  52244.  4.64.2  Description
  52245.  
  52246.  The tr utility shall copy the standard input to the standard output with
  52247.  substitution or deletion of selected characters.  The options specified
  52248.  and the _s_t_r_i_n_g_1 and _s_t_r_i_n_g_2 operands shall control translations that
  52249.  occur while copying characters and collating elements.
  52250.  
  52251.  
  52252.  4.64.3  Options
  52253.  
  52254.  The tr utility shall conform to the utility argument syntax guidelines
  52255.  described in 2.10.2.
  52256.  
  52257.  The following options shall be supported by the implementation:
  52258.  
  52259.  
  52260.  
  52261.  
  52262.  
  52263.                Copyright c 1991 IEEE.  All rights reserved.
  52264.       This is an unapproved IEEE Standards Draft, subject to change.
  52265.  
  52266.  
  52267.  
  52268.  
  52269.  
  52270.  762                                     4 Execution Environment Utilities
  52271.  
  52272.  
  52273.  
  52274.  
  52275.  
  52276.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  52277.  
  52278.     -c          Complement the set of characters specified by _s_t_r_i_n_g_1. See
  52279.                 4.64.7.
  52280.  
  52281.     -d          Delete all occurrences of input characters that are
  52282.                 specified by _s_t_r_i_n_g_1.
  52283.  
  52284.     -s          Replace instances of repeated characters with a single      1
  52285.                 character, as described in 4.64.7.                          1
  52286.  
  52287.  
  52288.  4.64.4  Operands
  52289.  
  52290.  The following operands shall be supported by the implementation:
  52291.  
  52292.     _s_t_r_i_n_g_1
  52293.     _s_t_r_i_n_g_2     Translation control strings.  Each string shall represent
  52294.                 a set of characters to be converted into an array of
  52295.                 characters used for the translation.  For a detailed
  52296.                 description of how the strings are interpreted, see
  52297.                 4.64.7.
  52298.  
  52299.  
  52300.  4.64.5  External Influences
  52301.  
  52302.  
  52303.  4.64.5.1  Standard Input
  52304.  
  52305.  The standard input can be any type of file.
  52306.  
  52307.  4.64.5.2  Input Files
  52308.  
  52309.  None.
  52310.  
  52311.  
  52312.  4.64.5.3  Environment Variables
  52313.  
  52314.  The following environment variables shall affect the execution of tr:
  52315.  
  52316.     LANG               This variable shall determine the locale to use for
  52317.                        the locale categories when both LC_ALL and the
  52318.                        corresponding environment variable (beginning with
  52319.                        LC_) do not specify a locale.  See 2.6.
  52320.  
  52321.     LC_ALL             This variable shall determine the locale to be used
  52322.                        to override any values for locale categories
  52323.                        specified by the settings of LANG or any
  52324.                        environment variables beginning with LC_.
  52325.  
  52326.  
  52327.  
  52328.  
  52329.                Copyright c 1991 IEEE.  All rights reserved.
  52330.       This is an unapproved IEEE Standards Draft, subject to change.
  52331.  
  52332.  
  52333.  
  52334.  
  52335.  
  52336.  4.64 tr - Translate characters                                        763
  52337.  
  52338.  
  52339.  
  52340.  
  52341.  
  52342.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  52343.  
  52344.     LC_COLLATE         This variable shall determine the behavior of range
  52345.                        expressions and equivalence classes.
  52346.  
  52347.     LC_CTYPE           This variable shall determine the locale for the
  52348.                        interpretation of sequences of bytes of text data
  52349.                        as characters (e.g., single- versus multibyte
  52350.                        characters in arguments) and the behavior of
  52351.                        character classes.
  52352.  
  52353.     LC_MESSAGES        This variable shall determine the language in which
  52354.                        messages should be written.
  52355.  
  52356.  
  52357.  4.64.5.4  Asynchronous Events
  52358.  
  52359.  Default.
  52360.  
  52361.  
  52362.  4.64.6  External Effects
  52363.  
  52364.  4.64.6.1  Standard Output
  52365.  
  52366.  The tr output shall be identical to the input, with the exception of the
  52367.  specified transformations.
  52368.  
  52369.  
  52370.  4.64.6.2  Standard Error
  52371.  
  52372.  Used only for diagnostic messages.
  52373.  
  52374.  4.64.6.3  Output Files
  52375.  
  52376.  None.
  52377.  
  52378.  
  52379.  4.64.7  Extended Description
  52380.  
  52381.  The operands _s_t_r_i_n_g_1 and _s_t_r_i_n_g_2 (if specified) define two arrays of
  52382.  characters or collating elements.  The following conventions can be used
  52383.  to specify characters or collating elements:
  52384.  
  52385.     _c_h_a_r_a_c_t_e_r     Any character not described by one of the conventions
  52386.                   below shall represent itself.
  52387.  
  52388.     \_o_c_t_a_l        Octal sequences can be used to represent characters with
  52389.                   specific coded values.  An octal sequence shall consist
  52390.                   of a backslash followed by the longest sequence of one-,
  52391.                   two-, or three-octal-digit characters (01234567). The
  52392.                   sequence shall cause the character whose encoding is
  52393.  
  52394.  
  52395.                Copyright c 1991 IEEE.  All rights reserved.
  52396.       This is an unapproved IEEE Standards Draft, subject to change.
  52397.  
  52398.  
  52399.  
  52400.  
  52401.  
  52402.  764                                     4 Execution Environment Utilities
  52403.  
  52404.  
  52405.  
  52406.  
  52407.  
  52408.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  52409.  
  52410.                   represented by the one-, two-, or three-digit octal
  52411.                   integer to be placed into the array.  If the size of a    1
  52412.                   byte on the system is greater than nine bits, the valid   1
  52413.                   escape sequence used to represent a byte is               1
  52414.                   implementation-defined.  Multibyte characters require     1
  52415.                   multiple, concatenated escape sequences of this type,     1
  52416.                   including the leading \ for each byte.                    1
  52417.  
  52418.     \_c_h_a_r_a_c_t_e_r    The backslash-escape sequences in Table 2-15 (see 2.12)
  52419.                   shall be supported.  The results of using any other
  52420.                   character, other than an octal digit, following the
  52421.                   backslash are unspecified.
  52422.  
  52423.     _c-_c           Represents the range of collating elements between the    2
  52424.                   range endpoints, inclusive, as defined by the current
  52425.                   setting of the LC_COLLATE locale category.  The starting
  52426.                   endpoint shall precede the second endpoint in the
  52427.                   current collation order.  The characters or collating
  52428.                   elements in the range shall be placed in the array in
  52429.                   ascending collation sequence.  No multicharacter
  52430.                   collating elements shall be included in the range.
  52431.  
  52432.     [:_c_l_a_s_s:]     Represents all characters belonging to the defined
  52433.                   character class, as defined by the current setting of
  52434.                   the LC_CTYPE locale category.  The following character
  52435.                   class names shall be accepted when specified in _s_t_r_i_n_g_1:
  52436.  
  52437.                                alnum   cntrl   lower   space
  52438.                                alpha   digit   print   upper
  52439.                                blank   graph   punct   xdigit
  52440.  
  52441.                   When the -d and -s options are specified together, any
  52442.                   of the character class names shall be accepted in
  52443.                   _s_t_r_i_n_g_2. Otherwise, only character class names lower or
  52444.                   upper shall be accepted in _s_t_r_i_n_g_2 and then only if the
  52445.                   corresponding character class (upper and lower,
  52446.                   respectively) is specified in the same relative position
  52447.                   in _s_t_r_i_n_g_1. Such a specification shall be interpreted as
  52448.                   a request for case conversion.  When [:lower:] appears
  52449.                   in _s_t_r_i_n_g_1 and [:upper:] appears in _s_t_r_i_n_g_2, the arrays
  52450.                   shall contain the characters from the toupper mapping in
  52451.                   the LC_CTYPE category of the current locale.  When
  52452.                   [:upper:] appears in _s_t_r_i_n_g_1 and [:lower:] appears in
  52453.                   _s_t_r_i_n_g_2, the arrays shall contain the characters from
  52454.                   the tolower mapping in the LC_CTYPE category of the
  52455.                   current locale.  The first character from each mapping
  52456.                   pair shall be in the array for _s_t_r_i_n_g_1 and the second
  52457.                   character from each mapping pair shall be in the array
  52458.                   for _s_t_r_i_n_g_2 in the same relative position.
  52459.  
  52460.  
  52461.                Copyright c 1991 IEEE.  All rights reserved.
  52462.       This is an unapproved IEEE Standards Draft, subject to change.
  52463.  
  52464.  
  52465.  
  52466.  
  52467.  
  52468.  4.64 tr - Translate characters                                        765
  52469.  
  52470.  
  52471.  
  52472.  
  52473.  
  52474.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  52475.  
  52476.                   Except for case conversion, the characters specified by
  52477.                   a character class expression shall be placed in the
  52478.                   array in an unspecified order.
  52479.  
  52480.                   If the name specified for _c_l_a_s_s does not define a valid
  52481.                   character class in the current locale, the behavior is
  52482.                   undefined.
  52483.  
  52484.     [=_e_q_u_i_v=]     Represents all characters or collating elements
  52485.                   belonging to the same equivalence class as _e_q_u_i_v, as
  52486.                   defined by the current setting of the LC_COLLATE locale
  52487.                   category.  An equivalence class expression shall be
  52488.                   allowed only in _s_t_r_i_n_g_1, or in _s_t_r_i_n_g_2 when it is being
  52489.                   used by the combined -d and -s options.  The characters
  52490.                   belonging to the equivalence class shall be placed in
  52491.                   the array in an unspecified order.
  52492.  
  52493.     [_x*_n]         Represents _n repeated occurrences of the character or
  52494.                   collating symbol _x.  Because this expression is used to
  52495.                   map multiple characters to one, it is only valid when it
  52496.                   occurs in _s_t_r_i_n_g_2. If _n is omitted or is zero, it shall
  52497.                   be interpreted as large enough to extend the _s_t_r_i_n_g_2-
  52498.                   based sequence to the length of the _s_t_r_i_n_g_1-based
  52499.                   sequence.  If _n has a leading zero, it shall be
  52500.                   interpreted as an octal value.  Otherwise, it shall be
  52501.                   interpreted as a decimal value.
  52502.  
  52503.  When the -d option is not specified:
  52504.  
  52505.      - Each input character or collating element found in the array
  52506.        specified by _s_t_r_i_n_g_1 shall be replaced by the character or
  52507.        collating element in the same relative position in the array
  52508.        specified by _s_t_r_i_n_g_2. When the array specified by _s_t_r_i_n_g_2 is
  52509.        shorter that the one specified by _s_t_r_i_n_g_1, the results are
  52510.        unspecified.
  52511.  
  52512.      - If the -c option is specified without -d, the complement of the
  52513.        characters specified by _s_t_r_i_n_g_1--the set of all characters in the
  52514.        current character set, as defined by the current setting of
  52515.        LC_CTYPE, except for those actually specified in the _s_t_r_i_n_g_1
  52516.        operand--shall be placed in the array in ascending collation
  52517.        sequence, as defined by the current setting of LC_COLLATE.
  52518.  
  52519.      - Because the order in which characters specified by character class
  52520.        expressions or equivalence class expressions is undefined, such
  52521.        expressions should only be used if the intent is to map several
  52522.        characters into one.  An exception is case conversion, as described
  52523.        previously.
  52524.  
  52525.  
  52526.  
  52527.                Copyright c 1991 IEEE.  All rights reserved.
  52528.       This is an unapproved IEEE Standards Draft, subject to change.
  52529.  
  52530.  
  52531.  
  52532.  
  52533.  
  52534.  766                                     4 Execution Environment Utilities
  52535.  
  52536.  
  52537.  
  52538.  
  52539.  
  52540.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  52541.  
  52542.  When the -d option is specified:
  52543.  
  52544.      - Input characters or collating elements found in the array specified
  52545.        by _s_t_r_i_n_g_1 shall be deleted.
  52546.  
  52547.      - When the -c option is specified with -d, all characters except
  52548.        those specified by _s_t_r_i_n_g_1 shall be deleted.  The contents of
  52549.        _s_t_r_i_n_g_2 shall be ignored, unless the -s option is also specified.
  52550.  
  52551.      - The same string cannot be used for both the -d and the -s option;
  52552.        when both options are specified, both _s_t_r_i_n_g_1 (used for deletion)
  52553.        and _s_t_r_i_n_g_2 (used for squeezing) shall be required.
  52554.  
  52555.  When the -s option is specified, after any deletions or translations have
  52556.  taken place, repeated sequences of the same character shall be replaced
  52557.  by one occurrence of the same character, if the character is found in the
  52558.  array specified by the last operand.  If the last operand contains a
  52559.  character class, such as the following example:
  52560.  
  52561.        tr -s '[:space:]'
  52562.  
  52563.  the last operand's array shall contain all of the characters in that
  52564.  character class.  However, in a case conversion, as described previously,
  52565.  such as
  52566.  
  52567.        tr -s '[:upper:]' '[:lower:]'
  52568.  
  52569.  the last operand's array shall contain only those characters defined as
  52570.  the second characters in each of the toupper or tolower character pairs,
  52571.  as appropriate.
  52572.  
  52573.  
  52574.  4.64.8  Exit Status
  52575.  
  52576.  The tr utility shall exit with one of the following values:
  52577.  
  52578.      0    All input was processed successfully.
  52579.  
  52580.     >0    An error occurred.
  52581.  
  52582.  
  52583.  4.64.9  Consequences of Errors
  52584.  
  52585.  Default.
  52586.  
  52587.  BEGIN_RATIONALE
  52588.  
  52589.  
  52590.  
  52591.  
  52592.  
  52593.                Copyright c 1991 IEEE.  All rights reserved.
  52594.       This is an unapproved IEEE Standards Draft, subject to change.
  52595.  
  52596.  
  52597.  
  52598.  
  52599.  
  52600.  4.64 tr - Translate characters                                        767
  52601.  
  52602.  
  52603.  
  52604.  
  52605.  
  52606.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  52607.  
  52608.  4.64.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  52609.  
  52610.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  52611.  
  52612.  If necessary, _s_t_r_i_n_g_1 and _s_t_r_i_n_g_2 can be quoted to avoid pattern matching
  52613.  by the shell.
  52614.  
  52615.  The following example creates a list of all words in _f_i_l_e_1 one per line
  52616.  in _f_i_l_e_2, where a word is taken to be a maximal string of letters.
  52617.  
  52618.        tr -cs "[:alpha:]" "[\n*]" <file1 >file2
  52619.  
  52620.  If an ordinary digit (representing itself) is to follow an octal
  52621.  sequence, the octal sequence must use the full three digits to avoid
  52622.  ambiguity.
  52623.  
  52624.  When _s_t_r_i_n_g_2 is shorter than _s_t_r_i_n_g_1, a difference results between
  52625.  historical System V and BSD systems.  A BSD system will pad _s_t_r_i_n_g_2 with
  52626.  the last character found in _s_t_r_i_n_g_2. Thus, it is possible to do the
  52627.  following:
  52628.  
  52629.        tr 0123456789 d
  52630.  
  52631.  which would translate all digits to the letter d.  Since this area is
  52632.  specifically unspecified in the standard, both the BSD and System V
  52633.  behaviors are allowed, but a conforming application cannot rely on the
  52634.  BSD behavior.  It would have to code the example in the following way:
  52635.  
  52636.        tr 0123456789 '[d*]'
  52637.  
  52638.  It should be noted that, despite similarities in appearance, the string
  52639.  operands used by tr are not regular expressions.
  52640.  
  52641.  On historical System V systems, a range expression requires enclosing      2
  52642.  square-brackets, such as:                                                  2
  52643.  
  52644.        tr '[a-z]' '[A-Z]'                                                   2
  52645.  
  52646.  However, BSD-based systems did not require the brackets and this           2
  52647.  convention is used by POSIX.2 to avoid breaking large numbers of BSD       2
  52648.  scripts:                                                                   2
  52649.  
  52650.        tr a-z A-Z                                                           2
  52651.  
  52652.  The preceding System V script will continue to work because the brackets,  2
  52653.  treated as regular characters, are translated to themselves.  However,     2
  52654.  any System V script that relied on a-z representing the three characters   2
  52655.  a, -, and z will have to be rewritten as az- or a\-z.                      2
  52656.  
  52657.  
  52658.  
  52659.                Copyright c 1991 IEEE.  All rights reserved.
  52660.       This is an unapproved IEEE Standards Draft, subject to change.
  52661.  
  52662.  
  52663.  
  52664.  
  52665.  
  52666.  768                                     4 Execution Environment Utilities
  52667.  
  52668.  
  52669.  
  52670.  
  52671.  
  52672.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  52673.  
  52674.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  52675.  
  52676.  In some earlier drafts, an explicit option, -n, was added to disable the
  52677.  historical behavior of stripping NUL characters from the input.  It was
  52678.  felt that automatically stripping NUL characters from the input was not
  52679.  correct functionality.  However, the removal of -n in a later draft does
  52680.  not remove the requirement that tr correctly process NUL characters in
  52681.  its input stream.  NUL characters can be stripped by using tr -d '\000'.
  52682.  
  52683.  Historical implementations of tr differ widely in syntax and behavior.
  52684.  For example, the BSD version has not needed the bracket characters for
  52685.  the repetition sequence.  The POSIX.2 tr syntax is based more closely on
  52686.  the System V and XPG3 model, while attempting to accommodate historical
  52687.  BSD implementations.  In the case of the short _s_t_r_i_n_g_2 padding, the
  52688.  decision was to unspecify the behavior and preserve System V and XPG
  52689.  scripts, which might find difficulty with the BSD method.  The assumption
  52690.  was made that BSD users of tr will have to make accommodations to meet
  52691.  the POSIX.2 syntax anyway, and since it is possible to use the repetition
  52692.  sequence to duplicate the desired behavior, whereas there is no simple
  52693.  way to achieve the System V method, this was the correct, if not
  52694.  desirable, approach.
  52695.  
  52696.  The use of octal values to specify control characters, while having
  52697.  historical precedents, is not portable.  The introduction of escape
  52698.  sequences for control characters should provide the necessary
  52699.  portability.  It is recognized that this may cause some historical
  52700.  scripts to break.
  52701.  
  52702.  A previous draft included support for multicharacter collating elements.
  52703.  Several balloters pointed out that, while tr does employ some syntactical
  52704.  elements from regular expressions, the aim of tr is quite different;
  52705.  ranges, for instance, do not mean the same thing (``any of the chars in
  52706.  the range matches,'' versus ``translate each character in the range to
  52707.  the output counterpart'').  As a result, the previously included support
  52708.  for multicharacter collating elements has been removed.  What remains are
  52709.  ranges in current collation order (to support, e.g., accented
  52710.  characters), character classes, and equivalence classes.
  52711.  
  52712.  In XPG3, the [:class:] and [=equiv=] conventions are shown with double
  52713.  brackets, as in regular expression syntax.  Several balloters objected to
  52714.  this, pointing out that tr does not implement regular expression
  52715.  principles, just borrows part of the syntax.  Consequently, the [:class:]
  52716.  and [=equiv=] should be regarded as syntactical elements on a par with
  52717.  [x*n], which is not an RE bracket expression.
  52718.  
  52719.  END_RATIONALE
  52720.  
  52721.  
  52722.  
  52723.  
  52724.  
  52725.                Copyright c 1991 IEEE.  All rights reserved.
  52726.       This is an unapproved IEEE Standards Draft, subject to change.
  52727.  
  52728.  
  52729.  
  52730.  
  52731.  
  52732.  4.64 tr - Translate characters                                        769
  52733.  
  52734.  
  52735.  
  52736.  
  52737.  
  52738.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  52739.  
  52740.  4.65  true - Return true value
  52741.  
  52742.  
  52743.  4.65.1  Synopsis
  52744.  
  52745.  
  52746.  true
  52747.  
  52748.  
  52749.  4.65.2  Description
  52750.  
  52751.  The true utility shall return with exit code zero.
  52752.  
  52753.  
  52754.  4.65.3  Options
  52755.  
  52756.  None.
  52757.  
  52758.  
  52759.  4.65.4  Operands
  52760.  
  52761.  None.
  52762.  
  52763.  
  52764.  4.65.5  External Influences
  52765.  
  52766.  4.65.5.1  Standard Input
  52767.  
  52768.  None.
  52769.  
  52770.  
  52771.  4.65.5.2  Input Files
  52772.  
  52773.  None.
  52774.  
  52775.  4.65.5.3  Environment Variables
  52776.  
  52777.  None.
  52778.  
  52779.  
  52780.  4.65.5.4  Asynchronous Events
  52781.  
  52782.  Default.
  52783.  
  52784.  
  52785.  
  52786.  
  52787.  
  52788.  
  52789.  
  52790.  
  52791.                Copyright c 1991 IEEE.  All rights reserved.
  52792.       This is an unapproved IEEE Standards Draft, subject to change.
  52793.  
  52794.  
  52795.  
  52796.  
  52797.  
  52798.  770                                     4 Execution Environment Utilities
  52799.  
  52800.  
  52801.  
  52802.  
  52803.  
  52804.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  52805.  
  52806.  4.65.6  External Effects
  52807.  
  52808.  
  52809.  4.65.6.1  Standard Output
  52810.  
  52811.  None.
  52812.  
  52813.  4.65.6.2  Standard Error
  52814.  
  52815.  None.
  52816.  
  52817.  
  52818.  4.65.6.3  Output Files
  52819.  
  52820.  None.
  52821.  
  52822.  
  52823.  4.65.7  Extended Description
  52824.  
  52825.  None.
  52826.  
  52827.  
  52828.  4.65.8  Exit Status
  52829.  
  52830.  The true utility always exits with a value of zero.
  52831.  
  52832.  
  52833.  4.65.9  Consequences of Errors
  52834.  
  52835.  Default.
  52836.  
  52837.  BEGIN_RATIONALE
  52838.  
  52839.  
  52840.  4.65.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  52841.  
  52842.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  52843.  
  52844.  The true utility is typically used in shell scripts.  The special built-
  52845.  in utility : (see 3.14.2) is sometimes more efficient than true.
  52846.  
  52847.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  52848.  
  52849.  The true utility has been retained in POSIX.2, even though the shell
  52850.  special built-in : provides similar functionality, because true is widely
  52851.  used in existing scripts and is less cryptic to novice human script
  52852.  readers.
  52853.  
  52854.  
  52855.  
  52856.  
  52857.                Copyright c 1991 IEEE.  All rights reserved.
  52858.       This is an unapproved IEEE Standards Draft, subject to change.
  52859.  
  52860.  
  52861.  
  52862.  
  52863.  
  52864.  4.65 true - Return true value                                         771
  52865.  
  52866.  
  52867.  
  52868.  
  52869.  
  52870.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  52871.  
  52872.  END_RATIONALE
  52873.  
  52874.  
  52875.  
  52876.  4.66  tty - Return user's terminal name
  52877.  
  52878.  
  52879.  4.66.1  Synopsis
  52880.  
  52881.  tty
  52882.  
  52883.  _O_b_s_o_l_e_s_c_e_n_t _V_e_r_s_i_o_n:
  52884.  
  52885.  tty  -s
  52886.  
  52887.  
  52888.  4.66.2  Description
  52889.  
  52890.  The tty utility shall write to the standard output the name of the
  52891.  terminal that is open as standard input.  The name that is used shall be
  52892.  equivalent to the string that would be returned by the POSIX.1 {8}
  52893.  _t_t_y_n_a_m_e() function.
  52894.  
  52895.  
  52896.  4.66.3  Options
  52897.  
  52898.  The tty utility shall conform to the utility argument syntax guidelines
  52899.  described in 2.10.2.
  52900.  
  52901.  The following option shall be supported by the implementation:
  52902.  
  52903.     -s          (Obsolescent.)  Do not write the terminal name.  Only the
  52904.                 exit status shall be affected by this option.  The
  52905.                 terminal status shall be determined as if the POSIX.1 {8}
  52906.                 _i_s_a_t_t_y() function were used.
  52907.  
  52908.  
  52909.  4.66.4  Operands
  52910.  
  52911.  None.
  52912.  
  52913.  
  52914.  4.66.5  External Influences
  52915.  
  52916.  
  52917.  
  52918.  
  52919.  
  52920.  
  52921.  
  52922.  
  52923.                Copyright c 1991 IEEE.  All rights reserved.
  52924.       This is an unapproved IEEE Standards Draft, subject to change.
  52925.  
  52926.  
  52927.  
  52928.  
  52929.  
  52930.  772                                     4 Execution Environment Utilities
  52931.  
  52932.  
  52933.  
  52934.  
  52935.  
  52936.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  52937.  
  52938.  4.66.5.1  Standard Input
  52939.  
  52940.  While no input is read from standard input, standard input shall be
  52941.  examined to determine whether or not it is a terminal, and/or to
  52942.  determine the name of the terminal.
  52943.  
  52944.  
  52945.  4.66.5.2  Input Files
  52946.  
  52947.  None.
  52948.  
  52949.  4.66.5.3  Environment Variables
  52950.  
  52951.  The following environment variables shall affect the execution of tty:
  52952.  
  52953.     LANG               This variable shall determine the locale to use for
  52954.                        the locale categories when both LC_ALL and the
  52955.                        corresponding environment variable (beginning with
  52956.                        LC_) do not specify a locale.  See 2.6.
  52957.  
  52958.     LC_ALL             This variable shall determine the locale to be used
  52959.                        to override any values for locale categories
  52960.                        specified by the settings of LANG or any
  52961.                        environment variables beginning with LC_.
  52962.  
  52963.     LC_CTYPE           For the obsolescent version, this variable shall
  52964.                        determine the locale for the interpretation of
  52965.                        sequences of bytes of text data as characters
  52966.                        (e.g., single- versus multibyte characters in
  52967.                        arguments).
  52968.  
  52969.     LC_MESSAGES        This variable shall determine the language in which
  52970.                        messages should be written.
  52971.  
  52972.  
  52973.  4.66.5.4  Asynchronous Events
  52974.  
  52975.  Default.
  52976.  
  52977.  
  52978.  4.66.6  External Effects
  52979.  
  52980.  4.66.6.1  Standard Output
  52981.  
  52982.  If the -s option is specified, standard output shall not be used.  If the
  52983.  -s option is not specified and standard input is a terminal device, a
  52984.  pathname of the terminal as specified by POSIX.1 {8} _t_t_y_n_a_m_e() shall be
  52985.  written in the following format:
  52986.  
  52987.  
  52988.  
  52989.                Copyright c 1991 IEEE.  All rights reserved.
  52990.       This is an unapproved IEEE Standards Draft, subject to change.
  52991.  
  52992.  
  52993.  
  52994.  
  52995.  
  52996.  4.66 tty - Return user's terminal name                                773
  52997.  
  52998.  
  52999.  
  53000.  
  53001.  
  53002.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  53003.  
  53004.        "%s\n", <_t_e_r_m_i_n_a_l _n_a_m_e>
  53005.  
  53006.  Otherwise, a message shall be written indicating that standard input is
  53007.  not connected to a terminal.  In the POSIX Locale, the tty utility shall
  53008.  use the format:
  53009.  
  53010.        "not a tty\n"
  53011.  
  53012.  
  53013.  4.66.6.2  Standard Error
  53014.  
  53015.  Used only for diagnostic messages.
  53016.  
  53017.  4.66.6.3  Output Files
  53018.  
  53019.  None.
  53020.  
  53021.  
  53022.  4.66.7  Extended Description
  53023.  
  53024.  None.
  53025.  
  53026.  
  53027.  4.66.8  Exit Status
  53028.  
  53029.  The tty utility shall exit with one of the following values:
  53030.  
  53031.      0    Standard input is a terminal.
  53032.  
  53033.      1    Standard input is not a terminal.
  53034.  
  53035.     >1    An error occurred.
  53036.  
  53037.  
  53038.  4.66.9  Consequences of Errors
  53039.  
  53040.  Default.
  53041.  
  53042.  BEGIN_RATIONALE
  53043.  
  53044.  
  53045.  4.66.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  53046.  
  53047.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  53048.  
  53049.  This utility checks the status of the file open as standard input against
  53050.  that of a system-defined set of files.  It is possible that no match can
  53051.  be found, or that the match found need not be the same file as that which
  53052.  was opened for standard input (although they are the same device).
  53053.  
  53054.  
  53055.                Copyright c 1991 IEEE.  All rights reserved.
  53056.       This is an unapproved IEEE Standards Draft, subject to change.
  53057.  
  53058.  
  53059.  
  53060.  
  53061.  
  53062.  774                                     4 Execution Environment Utilities
  53063.  
  53064.  
  53065.  
  53066.  
  53067.  
  53068.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  53069.  
  53070.  The -s option is useful only if the exit code is wanted.  It does not
  53071.  rely on the ability to form a valid pathname.  The -s option was made
  53072.  obsolescent because the same functionality is provided by test -t 0, but
  53073.  not dropped completely because historical scripts depend on this form.
  53074.  
  53075.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  53076.  
  53077.  The definition of tty was made more explicit to explain the difference
  53078.  between a tty and a pathname of a tty.
  53079.  
  53080.  END_RATIONALE
  53081.  
  53082.  
  53083.  
  53084.  4.67  umask - Get or set the file mode creation mask
  53085.  
  53086.  
  53087.  4.67.1  Synopsis
  53088.  
  53089.  umask  [-S] [_m_a_s_k]
  53090.  
  53091.  
  53092.  4.67.2  Description
  53093.  
  53094.  The umask utility shall set the file mode creation mask of the current
  53095.  shell execution environment (see 3.12) to the value specified by the _m_a_s_k
  53096.  operand.  This mask shall affect the initial value of the file permission
  53097.  bits of subsequently created files.
  53098.  
  53099.  If the _m_a_s_k operand is not specified, the umask utility shall write to
  53100.  standard output the value of the invoking process's file mode creation
  53101.  mask.
  53102.  
  53103.  
  53104.  4.67.3  Options
  53105.  
  53106.  The umask utility shall conform to the utility argument syntax guidelines
  53107.  described in 2.10.2.
  53108.  
  53109.  The following option shall be supported by the implementation:
  53110.  
  53111.     -S          Produce symbolic output.
  53112.  
  53113.  The default output style is unspecified, but shall be recognized on a
  53114.  subsequent invocation of umask on the same system as a _m_a_s_k operand to
  53115.  restore the previous file mode creation mask.
  53116.  
  53117.  
  53118.  
  53119.  
  53120.  
  53121.                Copyright c 1991 IEEE.  All rights reserved.
  53122.       This is an unapproved IEEE Standards Draft, subject to change.
  53123.  
  53124.  
  53125.  
  53126.  
  53127.  
  53128.  4.67 umask - Get or set the file mode creation mask                   775
  53129.  
  53130.  
  53131.  
  53132.  
  53133.  
  53134.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  53135.  
  53136.  4.67.4  Operands
  53137.  
  53138.  The following operand shall be supported by the implementation:
  53139.  
  53140.     _m_a_s_k        A string specifying the new file mode creation mask.  The
  53141.                 string is treated in the same way as the _m_o_d_e operand
  53142.                 described in 4.7.7 (chmod Extended Description).
  53143.  
  53144.                 For a _s_y_m_b_o_l_i_c__m_o_d_e value, the new value of the file mode
  53145.                 creation mask shall be the logical complement of the file
  53146.                 permission bits portion of the file mode specified by the
  53147.                 _s_y_m_b_o_l_i_c__m_o_d_e string.
  53148.  
  53149.                 In a _s_y_m_b_o_l_i_c__m_o_d_e value, the permissions _o_p characters +
  53150.                 and - shall be interpreted relative to the current file
  53151.                 mode creation mask; + shall cause the bits for the
  53152.                 indicated permissions to be cleared in the mask; - shall
  53153.                 cause the bits for the indicated permissions to be set in
  53154.                 the mask.
  53155.  
  53156.                 The interpretation of _m_o_d_e values that specify file mode
  53157.                 bits other than the file permission bits is unspecified.
  53158.  
  53159.                 In the obsolescent octal integer form of _m_o_d_e, the
  53160.                 specified bits shall be set in the file mode creation
  53161.                 mask.
  53162.  
  53163.                 The file mode creation mask shall be set to the resulting
  53164.                 numeric value.
  53165.  
  53166.                 As in chmod, application use of the octal number form for
  53167.                 the _m_o_d_e values is obsolescent.
  53168.  
  53169.                 The default output of a prior invocation of umask on the
  53170.                 same system with no operand shall also be recognized as a
  53171.                 _m_a_s_k operand.  The use of an operand obtained in this way
  53172.                 is not obsolescent, even if it is an octal number.
  53173.  
  53174.  
  53175.  4.67.5  External Influences
  53176.  
  53177.  
  53178.  4.67.5.1  Standard Input
  53179.  
  53180.  None.
  53181.  
  53182.  
  53183.  
  53184.  
  53185.  
  53186.  
  53187.                Copyright c 1991 IEEE.  All rights reserved.
  53188.       This is an unapproved IEEE Standards Draft, subject to change.
  53189.  
  53190.  
  53191.  
  53192.  
  53193.  
  53194.  776                                     4 Execution Environment Utilities
  53195.  
  53196.  
  53197.  
  53198.  
  53199.  
  53200.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  53201.  
  53202.  4.67.5.2  Input Files
  53203.  
  53204.  None.
  53205.  
  53206.  
  53207.  4.67.5.3  Environment Variables
  53208.  
  53209.  The following environment variables shall affect the execution of umask:
  53210.  
  53211.     LANG               This variable shall determine the locale to use for
  53212.                        the locale categories when both LC_ALL and the
  53213.                        corresponding environment variable (beginning with
  53214.                        LC_) do not specify a locale.  See 2.6.
  53215.  
  53216.     LC_ALL             This variable shall determine the locale to be used
  53217.                        to override any values for locale categories
  53218.                        specified by the settings of LANG or any
  53219.                        environment variables beginning with LC_.
  53220.  
  53221.     LC_CTYPE           This variable shall determine the locale for the
  53222.                        interpretation of sequences of bytes of text data
  53223.                        as characters (e.g., single- versus multibyte
  53224.                        characters in arguments).
  53225.  
  53226.     LC_MESSAGES        This variable shall determine the language in which
  53227.                        messages should be written.
  53228.  
  53229.  4.67.5.4  Asynchronous Events
  53230.  
  53231.  Default.
  53232.  
  53233.  
  53234.  4.67.6  External Effects
  53235.  
  53236.  
  53237.  4.67.6.1  Standard Output
  53238.  
  53239.  When the _m_a_s_k operand is not specified, the umask utility shall write a
  53240.  message to standard output that can later be used as a umask _m_a_s_k
  53241.  operand.
  53242.  
  53243.  If -S is specified, the message shall be in the following format:
  53244.  
  53245.        "u=%s,g=%s,o=%s\n", <_o_w_n_e_r _p_e_r_m_i_s_s_i_o_n_s>, <_g_r_o_u_p _p_e_r_m_i_s_s_i_o_n_s>,
  53246.        <_o_t_h_e_r _p_e_r_m_i_s_s_i_o_n_s>
  53247.  
  53248.  where the three values shall be combinations of letters from the set {r,
  53249.  w, x}; the presence of a letter shall indicate that the corresponding bit
  53250.  is clear in the file mode creation mask.
  53251.  
  53252.  
  53253.                Copyright c 1991 IEEE.  All rights reserved.
  53254.       This is an unapproved IEEE Standards Draft, subject to change.
  53255.  
  53256.  
  53257.  
  53258.  
  53259.  
  53260.  4.67 umask - Get or set the file mode creation mask                   777
  53261.  
  53262.  
  53263.  
  53264.  
  53265.  
  53266.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  53267.  
  53268.  If a _m_a_s_k operand is specified, there shall be no output written to
  53269.  standard output.
  53270.  
  53271.  
  53272.  4.67.6.2  Standard Error
  53273.  
  53274.  Used only for diagnostic messages.
  53275.  
  53276.  4.67.6.3  Output Files
  53277.  
  53278.  None.
  53279.  
  53280.  
  53281.  4.67.7  Extended Description
  53282.  
  53283.  None.
  53284.  
  53285.  
  53286.  4.67.8  Exit Status
  53287.  
  53288.  The umask utility shall exit with one of the following values:
  53289.  
  53290.      0    The file mode creation mask was successfully changed, or no _m_a_s_k
  53291.           operand was supplied.
  53292.  
  53293.     >0    An error occurred.
  53294.  
  53295.  
  53296.  4.67.9  Consequences of Errors
  53297.  
  53298.  Default.
  53299.  
  53300.  BEGIN_RATIONALE
  53301.  
  53302.  
  53303.  4.67.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  53304.  
  53305.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  53306.  
  53307.  Since umask affects the current shell execution environment, it is
  53308.  generally provided as a shell regular built-in.  If it is called in a      1
  53309.  subshell or separate utility execution environment, such as one of the     1
  53310.  following:                                                                 1
  53311.  
  53312.        (umask 002)                                                          1
  53313.        nohup umask ...                                                      1
  53314.        find . -exec umask ... \;                                            1
  53315.  
  53316.  it will not affect the file mode creation mask of the caller's             1
  53317.  
  53318.  
  53319.                Copyright c 1991 IEEE.  All rights reserved.
  53320.       This is an unapproved IEEE Standards Draft, subject to change.
  53321.  
  53322.  
  53323.  
  53324.  
  53325.  
  53326.  778                                     4 Execution Environment Utilities
  53327.  
  53328.  
  53329.  
  53330.  
  53331.  
  53332.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  53333.  
  53334.  environment.                                                               1
  53335.  
  53336.  The table mapping octal mode values in 4.7.7 does not require that the
  53337.  symbolic constants have those particular values.
  53338.  
  53339.  In contrast to the negative permission logic provided by the file mode
  53340.  creation mask and the octal number form of the _m_a_s_k argument, the
  53341.  symbolic form of the _m_a_s_k argument specifies those permissions that are
  53342.  left alone.
  53343.  
  53344.  Either of the commands:
  53345.  
  53346.        umask a=rx,ug+w
  53347.  
  53348.        umask 002
  53349.  
  53350.  sets the mode mask so that subsequently created files have their S_IWOTH
  53351.  bit cleared.
  53352.  
  53353.  After setting the mode mask with either of the above commands, the umask
  53354.  command can be used to write out the current value of the mode mask:
  53355.  
  53356.        $ umask
  53357.        0002
  53358.  
  53359.  (The output format is unspecified, but historical implementations use the
  53360.  obsolescent octal integer mode format.)
  53361.  
  53362.        $ umask -S
  53363.        u=rwx,g=rwx,o=rx
  53364.  
  53365.  Either of these outputs can be used as the mask operand to a subsequent
  53366.  invocation of the umask utility.
  53367.  
  53368.  Assuming the mode mask is set as above, the command:
  53369.  
  53370.        umask g-w
  53371.  
  53372.  sets the mode mask so that subsequently created files have their S_IWGRP,
  53373.  and S_IWOTH bits cleared.
  53374.  
  53375.  The command:
  53376.  
  53377.        umask -- -w
  53378.  
  53379.  sets the mode mask so that subsequently created files have all their
  53380.  write bits cleared.  Note that _m_a_s_k operands -r, -w, -x, or anything
  53381.  beginning with a hyphen, must be preceded by -- to keep it from being
  53382.  interpreted as an option.
  53383.  
  53384.  
  53385.                Copyright c 1991 IEEE.  All rights reserved.
  53386.       This is an unapproved IEEE Standards Draft, subject to change.
  53387.  
  53388.  
  53389.  
  53390.  
  53391.  
  53392.  4.67 umask - Get or set the file mode creation mask                   779
  53393.  
  53394.  
  53395.  
  53396.  
  53397.  
  53398.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  53399.  
  53400.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  53401.  
  53402.  The description of the historical utility was modified to allow it to use
  53403.  the symbolic modes of chmod.  The -s option used in earlier drafts was
  53404.  changed to -S because -s could be confused with a _s_y_m_b_o_l_i_c__m_o_d_e form of
  53405.  mask referring to the S_ISUID and S_ISGID bits.
  53406.  
  53407.  The default output style is implementation defined to permit implementors
  53408.  to provide migration to the new symbolic style at the time most
  53409.  appropriate to their users.  Earlier drafts of this standard specified an
  53410.  -o flag to force octal mode output.  This was dropped because the octal
  53411.  mode may not be sufficient to specify all of the information that may be
  53412.  present in the file mode creation mask when more secure file access
  53413.  permission checks are implemented.
  53414.  
  53415.  It has been suggested that trusted systems developers might appreciate
  53416.  softening the requirement that the mode mask ``affects'' the file access
  53417.  permissions, since it seems access control lists might replace the mode
  53418.  mask to some degree.  The wording has been changed to say that it affects
  53419.  the file permission bits, and leaves the details of the behavior of how
  53420.  they affect the file access permissions to the description in
  53421.  POSIX.1 {8}.
  53422.  
  53423.  END_RATIONALE
  53424.  
  53425.  
  53426.  
  53427.  4.68  uname - Return system name
  53428.  
  53429.  
  53430.  4.68.1  Synopsis
  53431.  
  53432.  uname  [-amnrsv]
  53433.  
  53434.  
  53435.  4.68.2  Description
  53436.  
  53437.  By default, the uname utility shall write the operating system name to
  53438.  standard output.  When options are specified, symbols representing one or
  53439.  more system characteristics shall be written to the standard output.  The
  53440.  format and contents of the symbols are implementation defined.  On
  53441.  systems conforming to POSIX.1 {8}, the symbols written shall be those
  53442.  supported by the POSIX.1 {8} _u_n_a_m_e() function.
  53443.  
  53444.  
  53445.  
  53446.  
  53447.  
  53448.  
  53449.  
  53450.  
  53451.                Copyright c 1991 IEEE.  All rights reserved.
  53452.       This is an unapproved IEEE Standards Draft, subject to change.
  53453.  
  53454.  
  53455.  
  53456.  
  53457.  
  53458.  780                                     4 Execution Environment Utilities
  53459.  
  53460.  
  53461.  
  53462.  
  53463.  
  53464.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  53465.  
  53466.  4.68.3  Options
  53467.  
  53468.  The uname utility shall conform to the utility argument syntax guidelines
  53469.  described in 2.10.2.
  53470.  
  53471.  The following options shall be supported by the implementation:
  53472.  
  53473.     -a          Behave as though all of the options -mnrsv were specified.
  53474.  
  53475.     -m          Write the name of the hardware type on which the system is
  53476.                 running to standard output.
  53477.  
  53478.     -n          Write the name of this node within an implementation-
  53479.                 specified communications network.
  53480.  
  53481.     -r          Write the current release level of the operating system
  53482.                 implementation.
  53483.  
  53484.     -s          Write the name of the implementation of the operating
  53485.                 system.
  53486.  
  53487.     -v          Write the current version level of this release of the
  53488.                 operating system implementation.
  53489.  
  53490.  If no options are specified, the uname utility shall write the operating
  53491.  system name, as if the -s option had been specified.
  53492.  
  53493.  
  53494.  4.68.4  Operands
  53495.  
  53496.  None.
  53497.  
  53498.  
  53499.  4.68.5  External Influences
  53500.  
  53501.  
  53502.  4.68.5.1  Standard Input
  53503.  
  53504.  None.
  53505.  
  53506.  4.68.5.2  Input Files
  53507.  
  53508.  None.
  53509.  
  53510.  
  53511.  
  53512.  
  53513.  
  53514.  
  53515.  
  53516.  
  53517.                Copyright c 1991 IEEE.  All rights reserved.
  53518.       This is an unapproved IEEE Standards Draft, subject to change.
  53519.  
  53520.  
  53521.  
  53522.  
  53523.  
  53524.  4.68 uname - Return system name                                       781
  53525.  
  53526.  
  53527.  
  53528.  
  53529.  
  53530.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  53531.  
  53532.  4.68.5.3  Environment Variables
  53533.  
  53534.  The following environment variables shall affect the execution of uname:
  53535.  
  53536.     LANG               This variable shall determine the locale to use for
  53537.                        the locale categories when both LC_ALL and the
  53538.                        corresponding environment variable (beginning with
  53539.                        LC_) do not specify a locale.  See 2.6.
  53540.  
  53541.     LC_ALL             This variable shall determine the locale to be used
  53542.                        to override any values for locale categories
  53543.                        specified by the settings of LANG or any
  53544.                        environment variables beginning with LC_.
  53545.  
  53546.     LC_CTYPE           This variable shall determine the locale for the
  53547.                        interpretation of sequences of bytes of text data
  53548.                        as characters (e.g., single- versus multibyte
  53549.                        characters in arguments).
  53550.  
  53551.     LC_MESSAGES        This variable shall determine the language in which
  53552.                        messages should be written.
  53553.  
  53554.  
  53555.  4.68.5.4  Asynchronous Events
  53556.  
  53557.  Default.
  53558.  
  53559.  
  53560.  4.68.6  External Effects
  53561.  
  53562.  4.68.6.1  Standard Output
  53563.  
  53564.  By default, the output shall be a single line of the following form:
  53565.  
  53566.        "%s\n", <_s_y_s_n_a_m_e>
  53567.  
  53568.  If the -a option is specified, the output shall be a single line of the
  53569.  following form:
  53570.  
  53571.        "%s %s %s %s %s\n", <_s_y_s_n_a_m_e>, <_n_o_d_e_n_a_m_e>, <_r_e_l_e_a_s_e>, <_v_e_r_s_i_o_n>,
  53572.        <_m_a_c_h_i_n_e>
  53573.  
  53574.  Additional implementation-defined symbols may be written; all such
  53575.  symbols shall be written at the end of the line of output before the
  53576.  <newline>.
  53577.  
  53578.  If options are specified to select different combinations of the symbols,
  53579.  only those symbols shall be written, in the order shown above for the -a
  53580.  option.  If a symbol is not selected for writing, its corresponding
  53581.  
  53582.  
  53583.                Copyright c 1991 IEEE.  All rights reserved.
  53584.       This is an unapproved IEEE Standards Draft, subject to change.
  53585.  
  53586.  
  53587.  
  53588.  
  53589.  
  53590.  782                                     4 Execution Environment Utilities
  53591.  
  53592.  
  53593.  
  53594.  
  53595.  
  53596.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  53597.  
  53598.  trailing <blank>s also shall not be written.
  53599.  
  53600.  
  53601.  4.68.6.2  Standard Error
  53602.  
  53603.  Used only for diagnostic messages.
  53604.  
  53605.  4.68.6.3  Output Files
  53606.  
  53607.  None.
  53608.  
  53609.  
  53610.  4.68.7  Extended Description
  53611.  
  53612.  None.
  53613.  
  53614.  
  53615.  4.68.8  Exit Status
  53616.  
  53617.  The uname utility shall exit with one of the following values:
  53618.  
  53619.      0    The requested information was successfully written.
  53620.  
  53621.     >0    An error occurred.
  53622.  
  53623.  
  53624.  4.68.9  Consequences of Errors
  53625.  
  53626.  Default.
  53627.  
  53628.  BEGIN_RATIONALE
  53629.  
  53630.  
  53631.  4.68.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  53632.  
  53633.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  53634.  
  53635.  The following command:
  53636.  
  53637.        uname -sr
  53638.  
  53639.  writes the operating system name and release level, separated by one or
  53640.  more <blank>s.
  53641.  
  53642.  Note that any of the symbols could include embedded <space>s, which may
  53643.  affect parsing algorithms if multiple options are selected for output.
  53644.  
  53645.  The node name is typically a name that the system uses to identify itself
  53646.  for intersystem communication addressing.
  53647.  
  53648.  
  53649.                Copyright c 1991 IEEE.  All rights reserved.
  53650.       This is an unapproved IEEE Standards Draft, subject to change.
  53651.  
  53652.  
  53653.  
  53654.  
  53655.  
  53656.  4.68 uname - Return system name                                       783
  53657.  
  53658.  
  53659.  
  53660.  
  53661.  
  53662.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  53663.  
  53664.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  53665.  
  53666.  It was suggested that this utility cannot be used portably, since the
  53667.  format of the symbols is implementation defined.  The POSIX.1 {8} working
  53668.  group could not achieve consensus on defining these formats in the
  53669.  underlying _u_n_a_m_e() function and there is no expectation that POSIX.2
  53670.  would be any more successful.  In any event, some applications may still
  53671.  find this historical utility of value.  For example, the symbols could be
  53672.  used for system log entries or for comparison with operator or user
  53673.  input.
  53674.  
  53675.  END_RATIONALE
  53676.  
  53677.  
  53678.  
  53679.  4.69  uniq - Report or filter out repeated lines in a file
  53680.  
  53681.  
  53682.  4.69.1  Synopsis
  53683.  
  53684.  uniq  [-c|-d|-u] [-f _f_i_e_l_d_s] [-s _c_h_a_r_s] [_i_n_p_u_t__f_i_l_e [_o_u_t_p_u_t__f_i_l_e]]
  53685.  
  53686.  _O_b_s_o_l_e_s_c_e_n_t _V_e_r_s_i_o_n:
  53687.  
  53688.  uniq  [-c|-d|-u] [-_n] [+_m] [_i_n_p_u_t__f_i_l_e [_o_u_t_p_u_t__f_i_l_e]]
  53689.  
  53690.  
  53691.  4.69.2  Description
  53692.  
  53693.  The uniq utility shall read an input file comparing adjacent lines, and
  53694.  write one copy of each input line on the output.  The second and
  53695.  succeeding copies of repeated adjacent input lines shall not be written.
  53696.  
  53697.  Repeated lines in the input shall not be detected if they are not
  53698.  adjacent.
  53699.  
  53700.  
  53701.  4.69.3  Options
  53702.  
  53703.  The uniq utility shall conform to the utility argument syntax guidelines
  53704.  described in 2.10.2; the obsolescent version does not, as one of the
  53705.  options begins with + and the -_m and +_n options do not have option
  53706.  letters.
  53707.  
  53708.  The following options shall be supported by the implementation:
  53709.  
  53710.     -c          Precede each output line with a count of the number of
  53711.                 times the line occurred in the input.
  53712.  
  53713.  
  53714.  
  53715.                Copyright c 1991 IEEE.  All rights reserved.
  53716.       This is an unapproved IEEE Standards Draft, subject to change.
  53717.  
  53718.  
  53719.  
  53720.  
  53721.  
  53722.  784                                     4 Execution Environment Utilities
  53723.  
  53724.  
  53725.  
  53726.  
  53727.  
  53728.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  53729.  
  53730.     -d          Suppress the writing of lines that are not repeated in the
  53731.                 input.
  53732.  
  53733.     -f _f_i_e_l_d_s   Ignore the first _f_i_e_l_d_s fields on each input line when
  53734.                 doing comparisons, where _f_i_e_l_d_s shall be a positive
  53735.                 decimal integer.  A field is the maximal string matched by
  53736.                 the basic regular expresssion:
  53737.  
  53738.                       [[:blank:]]*[^[:blank:]]*
  53739.  
  53740.                 If the _f_i_e_l_d_s option-argument specifies more fields than
  53741.                 appear on an input line, a null string shall be used for
  53742.                 comparison.
  53743.  
  53744.     -s _c_h_a_r_s    Ignore the first _c_h_a_r_s characters when doing comparisons,
  53745.                 where _c_h_a_r_s shall be a positive decimal integer.  If
  53746.                 specified in conjunction with the -f option, the first
  53747.                 _c_h_a_r_s characters after the first _f_i_e_l_d_s fields shall be
  53748.                 ignored.  If the _c_h_a_r_s option-argument specifies more
  53749.                 characters than remain on an input line, a null string
  53750.                 shall be used for comparison.
  53751.  
  53752.     -u          Suppress the writing of lines that are repeated in the
  53753.                 input.
  53754.  
  53755.     -_n          (Obsolescent.)  Equivalent to -f _f_i_e_l_d_s with _f_i_e_l_d_s set to
  53756.                 _n.
  53757.  
  53758.     +_m          (Obsolescent.)  Equivalent to -s _c_h_a_r_s with _c_h_a_r_s set to
  53759.                 _m.
  53760.  
  53761.  
  53762.  4.69.4  Operands
  53763.  
  53764.  The following operands shall be supported by the implementation:
  53765.  
  53766.     _i_n_p_u_t__f_i_l_e  A pathname of the input file.  If the _i_n_p_u_t__f_i_l_e operand
  53767.                 is not specified, or if the _i_n_p_u_t__f_i_l_e is -, the standard
  53768.                 input shall be used.
  53769.  
  53770.     _o_u_t_p_u_t__f_i_l_e A pathname of the output file.  If the _o_u_t_p_u_t__f_i_l_e operand
  53771.                 is not specified, the standard output shall be used.  The
  53772.                 results are unspecified if the file named by _o_u_t_p_u_t__f_i_l_e
  53773.                 is the file named by _i_n_p_u_t__f_i_l_e.
  53774.  
  53775.  
  53776.  
  53777.  
  53778.  
  53779.  
  53780.  
  53781.                Copyright c 1991 IEEE.  All rights reserved.
  53782.       This is an unapproved IEEE Standards Draft, subject to change.
  53783.  
  53784.  
  53785.  
  53786.  
  53787.  
  53788.  4.69 uniq - Report or filter out repeated lines in a file             785
  53789.  
  53790.  
  53791.  
  53792.  
  53793.  
  53794.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  53795.  
  53796.  4.69.5  External Influences
  53797.  
  53798.  
  53799.  4.69.5.1  Standard Input
  53800.  
  53801.  The standard input shall be used only if no _i_n_p_u_t__f_i_l_e operand is
  53802.  specified or if _i_n_p_u_t__f_i_l_e is -.  See Input Files.
  53803.  
  53804.  4.69.5.2  Input Files
  53805.  
  53806.  The input file shall be a text file.
  53807.  
  53808.  
  53809.  4.69.5.3  Environment Variables
  53810.  
  53811.  The following environment variables shall affect the execution of uniq:
  53812.  
  53813.     LANG               This variable shall determine the locale to use for
  53814.                        the locale categories when both LC_ALL and the
  53815.                        corresponding environment variable (beginning with
  53816.                        LC_) do not specify a locale.  See 2.6.
  53817.  
  53818.     LC_ALL             This variable shall determine the locale to be used
  53819.                        to override any values for locale categories
  53820.                        specified by the settings of LANG or any
  53821.                        environment variables beginning with LC_.
  53822.  
  53823.     LC_CTYPE           This variable shall determine the locale for the
  53824.                        interpretation of sequences of bytes of text data
  53825.                        as characters (e.g., single- versus multibyte
  53826.                        characters in arguments and input files) and which
  53827.                        characters constitute a <blank> in the current
  53828.                        locale.
  53829.  
  53830.     LC_MESSAGES        This variable shall determine the language in which
  53831.                        messages should be written.
  53832.  
  53833.  4.69.5.4  Asynchronous Events
  53834.  
  53835.  Default.
  53836.  
  53837.  
  53838.  4.69.6  External Effects
  53839.  
  53840.  
  53841.  
  53842.  
  53843.  
  53844.  
  53845.  
  53846.  
  53847.                Copyright c 1991 IEEE.  All rights reserved.
  53848.       This is an unapproved IEEE Standards Draft, subject to change.
  53849.  
  53850.  
  53851.  
  53852.  
  53853.  
  53854.  786                                     4 Execution Environment Utilities
  53855.  
  53856.  
  53857.  
  53858.  
  53859.  
  53860.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  53861.  
  53862.  4.69.6.1  Standard Output
  53863.  
  53864.  The standard output shall be used only if no _o_u_t_p_u_t__f_i_l_e operand is
  53865.  specified.  See Output Files.
  53866.  
  53867.  
  53868.  4.69.6.2  Standard Error
  53869.  
  53870.  Used only for diagnostic messages.
  53871.  
  53872.  4.69.6.3  Output Files
  53873.  
  53874.  If the -c option is specified, the output file shall be empty or each
  53875.  line will be of the form:
  53876.  
  53877.        "%d %s", <_n_u_m_b_e_r _o_f _d_u_p_l_i_c_a_t_e_s>, <_l_i_n_e>
  53878.  
  53879.  otherwise, the output file will be empty or each line will be of the
  53880.  form:
  53881.  
  53882.        "%s", <_l_i_n_e>
  53883.  
  53884.  
  53885.  4.69.7  Extended Description
  53886.  
  53887.  None.
  53888.  
  53889.  
  53890.  4.69.8  Exit Status
  53891.  
  53892.  The uniq utility shall exit with one of the following values:
  53893.  
  53894.      0    The utility executed successfully.
  53895.  
  53896.     >0    An error occurred.
  53897.  
  53898.  
  53899.  4.69.9  Consequences of Errors
  53900.  
  53901.  Default.
  53902.  
  53903.  BEGIN_RATIONALE
  53904.  
  53905.  
  53906.  
  53907.  
  53908.  
  53909.  
  53910.  
  53911.  
  53912.  
  53913.                Copyright c 1991 IEEE.  All rights reserved.
  53914.       This is an unapproved IEEE Standards Draft, subject to change.
  53915.  
  53916.  
  53917.  
  53918.  
  53919.  
  53920.  4.69 uniq - Report or filter out repeated lines in a file             787
  53921.  
  53922.  
  53923.  
  53924.  
  53925.  
  53926.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  53927.  
  53928.  4.69.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  53929.  
  53930.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  53931.  
  53932.  Some historical implementations have limited lines to be 1080 bytes in
  53933.  length, which will not meet the implied {LINE_MAX} limit.
  53934.  
  53935.  The sort utility (see 4.58) can be used to cause repeated lines to be
  53936.  adjacent in the input file.
  53937.  
  53938.  The following input file data (but flushed left) was used for a test
  53939.  series on uniq:
  53940.  
  53941.        #01 foo0 bar0 foo1 bar1
  53942.        #02 bar0 foo1 bar1 foo1
  53943.        #03 foo0 bar0 foo1 bar1
  53944.        #04
  53945.        #05 foo0 bar0 foo1 bar1
  53946.        #06 foo0 bar0 foo1 bar1
  53947.        #07 bar0 foo1 bar1 foo0
  53948.  
  53949.  What follows is a series of test invocations of the uniq utility that use
  53950.  a mixture of uniq's options against the input file data.  These tests
  53951.  verify the meaning of _a_d_j_a_c_e_n_t.  The uniq utility views the input data as
  53952.  a sequence of strings delimited by \n.  Accordingly, for the _f_i_e_l_d_sth
  53953.  member of the sequence, uniq interprets unique or repreated adjacent
  53954.  lines strictly relative to the _f_i_e_l_d_s+1th member.
  53955.  
  53956.  This first example tests the line counting option, comparing each line of
  53957.  the input file data starting from the second field:
  53958.  
  53959.        uniq -c -f 1 uniq_0I.t
  53960.          1 #01 foo0 bar0 foo1 bar1
  53961.          1 #02 bar0 foo1 bar1 foo0
  53962.          1 #03 foo0 bar0 foo1 bar1
  53963.          1 #04
  53964.          2 #05 foo0 bar0 foo1 bar1
  53965.          1 #07 bar0 foo1 bar1 foo0
  53966.  
  53967.  The number 2, prefixing the fifth line of output, signifies that the uniq
  53968.  utility detected a pair of repeated lines.  Given the input data, this
  53969.  can only be true when uniq is run using the -f 1 option (which causes
  53970.  uniq to ignore the first field on each input line).
  53971.  
  53972.  The second example tests the option to suppress unique lines, comparing
  53973.  each line of the input file data starting from the second field:
  53974.  
  53975.  
  53976.  
  53977.  
  53978.  
  53979.                Copyright c 1991 IEEE.  All rights reserved.
  53980.       This is an unapproved IEEE Standards Draft, subject to change.
  53981.  
  53982.  
  53983.  
  53984.  
  53985.  
  53986.  788                                     4 Execution Environment Utilities
  53987.  
  53988.  
  53989.  
  53990.  
  53991.  
  53992.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  53993.  
  53994.        uniq -d -f 1 uniq_0I.t
  53995.        #05 foo0 bar0 foo1 bar1
  53996.  
  53997.  This test suppresses repeated lines, comparing each line of the input
  53998.  file data starting from the second field:
  53999.  
  54000.        uniq -u -f 1 uniq_0I.t
  54001.        #01 foo0 bar0 foo1 bar1
  54002.        #02 bar0 foo1 bar1 foo1
  54003.        #03 foo0 bar0 foo1 bar1
  54004.        #04
  54005.        #07 bar0 foo1 bar1 foo0
  54006.  
  54007.  This suppresses unique lines, comparing each line of the input file data
  54008.  starting from the third character:
  54009.  
  54010.        uniq -d -s 2 uniq_0I.t
  54011.  
  54012.  In the last example, the uniq utility found no input matching the above
  54013.  criteria.
  54014.  
  54015.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  54016.  
  54017.  The -f and -s options were added to replace the obsolescent -_n and +_m
  54018.  options so that uniq could meet the syntax guidelines in an upward-
  54019.  compatible way.
  54020.  
  54021.  The output specifications in Output Files do not show a terminating
  54022.  <newline> because they both specify <_l_i_n_e>, which includes its own
  54023.  <newline> (because of the definition of _l_i_n_e).
  54024.  
  54025.  END_RATIONALE
  54026.  
  54027.  
  54028.  
  54029.  
  54030.  
  54031.  
  54032.  
  54033.  
  54034.  
  54035.  
  54036.  
  54037.  
  54038.  
  54039.  
  54040.  
  54041.  
  54042.  
  54043.  
  54044.  
  54045.                Copyright c 1991 IEEE.  All rights reserved.
  54046.       This is an unapproved IEEE Standards Draft, subject to change.
  54047.  
  54048.  
  54049.  
  54050.  
  54051.  
  54052.  4.69 uniq - Report or filter out repeated lines in a file             789
  54053.  
  54054.  
  54055.  
  54056.  
  54057.  
  54058.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  54059.  
  54060.  4.70  wait - Await process completion
  54061.  
  54062.  
  54063.  4.70.1  Synopsis
  54064.  
  54065.  
  54066.  wait  [_p_i_d ...]
  54067.  
  54068.  
  54069.  4.70.2  Description
  54070.  
  54071.  When an asynchronous list (see 3.9.3.1) is started by the shell, the
  54072.  process ID of the last command in each element of the asynchronous list    1
  54073.  shall become known in the current shell execution environment; see 3.12.
  54074.  
  54075.  If the wait utility is invoked with no operands, it shall wait until all
  54076.  process IDs known to the invoking shell have terminated and exit with a
  54077.  zero exit status.
  54078.  
  54079.  If one or more _p_i_d operands are specified that represent known process
  54080.  IDs, the wait utility shall wait until all of them have terminated.  If
  54081.  one or more _p_i_d operands are specified that represent unknown process
  54082.  IDs, wait shall treat them as if they were known process IDs that exited
  54083.  with exit status 127.  The exit status returned by the wait utility shall
  54084.  be the exit status of the process requested by the last _p_i_d operand.
  54085.  
  54086.  The known process IDs are applicable only for invocations of wait in the
  54087.  current shell execution environment.
  54088.  
  54089.  
  54090.  4.70.3  Options
  54091.  
  54092.  None.
  54093.  
  54094.  
  54095.  4.70.4  Operands
  54096.  
  54097.  The following operand shall be supported by the implementation:
  54098.  
  54099.     _p_i_d         The unsigned decimal integer process ID of a command, for
  54100.                 which the utility is to wait for the termination.
  54101.  
  54102.  
  54103.  4.70.5  External Influences
  54104.  
  54105.  
  54106.  
  54107.  
  54108.  
  54109.  
  54110.  
  54111.                Copyright c 1991 IEEE.  All rights reserved.
  54112.       This is an unapproved IEEE Standards Draft, subject to change.
  54113.  
  54114.  
  54115.  
  54116.  
  54117.  
  54118.  790                                     4 Execution Environment Utilities
  54119.  
  54120.  
  54121.  
  54122.  
  54123.  
  54124.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  54125.  
  54126.  4.70.5.1  Standard Input
  54127.  
  54128.  None.
  54129.  
  54130.  
  54131.  4.70.5.2  Input Files
  54132.  
  54133.  None.
  54134.  
  54135.  4.70.5.3  Environment Variables
  54136.  
  54137.  The following environment variables shall affect the execution of wait:
  54138.  
  54139.     LANG               This variable shall determine the locale to use for
  54140.                        the locale categories when both LC_ALL and the
  54141.                        corresponding environment variable (beginning with
  54142.                        LC_) do not specify a locale.  See 2.6.
  54143.  
  54144.     LC_ALL             This variable shall determine the locale to be used
  54145.                        to override any values for locale categories
  54146.                        specified by the settings of LANG or any
  54147.                        environment variables beginning with LC_.
  54148.  
  54149.     LC_CTYPE           This variable shall determine the locale for the
  54150.                        interpretation of sequences of bytes of text data
  54151.                        as characters (e.g., single- versus multibyte
  54152.                        characters in arguments).
  54153.  
  54154.     LC_MESSAGES        This variable shall determine the language in which
  54155.                        messages should be written.
  54156.  
  54157.  
  54158.  4.70.5.4  Asynchronous Events
  54159.  
  54160.  Default.
  54161.  
  54162.  
  54163.  4.70.6  External Effects
  54164.  
  54165.  4.70.6.1  Standard Output
  54166.  
  54167.  None.
  54168.  
  54169.  
  54170.  
  54171.  
  54172.  
  54173.  
  54174.  
  54175.  
  54176.  
  54177.                Copyright c 1991 IEEE.  All rights reserved.
  54178.       This is an unapproved IEEE Standards Draft, subject to change.
  54179.  
  54180.  
  54181.  
  54182.  
  54183.  
  54184.  4.70 wait - Await process completion                                  791
  54185.  
  54186.  
  54187.  
  54188.  
  54189.  
  54190.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  54191.  
  54192.  4.70.6.2  Standard Error
  54193.  
  54194.  Used only for diagnostic messages.
  54195.  
  54196.  
  54197.  4.70.6.3  Output Files
  54198.  
  54199.  None.
  54200.  
  54201.  
  54202.  4.70.7  Extended Description
  54203.  
  54204.  None.
  54205.  
  54206.  
  54207.  4.70.8  Exit Status
  54208.  
  54209.  If one or more operands were specified, all of them have terminated or
  54210.  were not known by the invoking shell, and the status of the last operand
  54211.  specified is known, then the exit status of wait shall be the exit status
  54212.  information of the command indicated by the last operand specified.  If
  54213.  the process terminated abnormally due to the receipt of a signal, the
  54214.  exit status shall be greater than 128 and shall be distinct from the exit
  54215.  status generated by other signals, but the exact value is unspecified.
  54216.  (See the kill -l option in 4.32.)  Otherwise, the wait utility shall exit
  54217.  with one of the following values:
  54218.  
  54219.         0    The wait utility was invoked with no operands and all process
  54220.              IDs known by the invoking shell have terminated.
  54221.  
  54222.     1-126    The wait utility detected an error.
  54223.  
  54224.       127    The command identified by the last _p_i_d operand specified is
  54225.              unknown.
  54226.  
  54227.  
  54228.  4.70.9  Consequences of Errors
  54229.  
  54230.  Default.
  54231.  
  54232.  BEGIN_RATIONALE
  54233.  
  54234.  
  54235.  4.70.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  54236.  
  54237.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  54238.  
  54239.  On most implementations, wait is a shell built-in.  If it is called in a   1
  54240.  subshell or separate utility execution environment, such as one of the     1
  54241.  following:                                                                 1
  54242.  
  54243.                Copyright c 1991 IEEE.  All rights reserved.
  54244.       This is an unapproved IEEE Standards Draft, subject to change.
  54245.  
  54246.  
  54247.  
  54248.  
  54249.  
  54250.  792                                     4 Execution Environment Utilities
  54251.  
  54252.  
  54253.  
  54254.  
  54255.  
  54256.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  54257.  
  54258.        (wait)                                                               1
  54259.        nohup wait ...                                                       1
  54260.        find . -exec wait ... \;                                             1
  54261.  
  54262.  it will return immediately because there will be no known process IDs to   1
  54263.  wait for in those environments.                                            1
  54264.  
  54265.  Although the exact value used when a process is terminated by a signal is
  54266.  unspecified, if it is known that a signal terminated a process, a script
  54267.  can still reliably figure out which signal using kill as shown by the
  54268.  following script:
  54269.  
  54270.        sleep 1000&
  54271.        pid=$!
  54272.        kill -kill $pid
  54273.        wait $pid
  54274.        echo $pid was terminated by a SIG$(kill -l $?) signal.
  54275.  
  54276.  Historical implementations of interactive shells have discarded the exit
  54277.  status of terminated background processes before each shell prompt.
  54278.  Therefore, the status of background processes was usually lost unless it
  54279.  terminated while wait was waiting for it.  This could be a serious
  54280.  problem when a job that was expected to run for a long time actually
  54281.  terminated quickly with a syntax or initialization error because the exit
  54282.  status returned was usually zero if the requested process ID was not
  54283.  found.  POSIX.2 requires the implementation to keep the status of
  54284.  terminated jobs available until the status is requested, so that scripts
  54285.  like:
  54286.  
  54287.        j1&
  54288.        p1=$!
  54289.        j2&
  54290.        wait $p1
  54291.        echo Job 1 exited with status $?
  54292.        wait $!
  54293.        echo Job 2 exited with status $?
  54294.  
  54295.  will work without losing status on any of the jobs.  The shell is allowed
  54296.  to discard the status of any process that it determines the application
  54297.  cannot get the process ID from the shell.  It is also required to          1
  54298.  remember only {CHILD_MAX} number of processes in this way.  Since the      1
  54299.  only way to get the process ID from the shell is by using the ! shell
  54300.  parameter, the shell is allowed to discard the status of an asynchronous
  54301.  list if $! was not referenced before another asynchronous list was
  54302.  started.  (This means that the shell only has to keep the status of the
  54303.  last asynchronous list started if the application did not reference $!.
  54304.  If the implementation of the shell is smart enough to determine that a
  54305.  reference to $! was not ``saved'' anywhere that the application can
  54306.  retrieve it later, it can use this information to trim the list of saved
  54307.  
  54308.  
  54309.                Copyright c 1991 IEEE.  All rights reserved.
  54310.       This is an unapproved IEEE Standards Draft, subject to change.
  54311.  
  54312.  
  54313.  
  54314.  
  54315.  
  54316.  4.70 wait - Await process completion                                  793
  54317.  
  54318.  
  54319.  
  54320.  
  54321.  
  54322.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  54323.  
  54324.  information.  Note also that a successful call to wait with no operands
  54325.  discards the exit status of all asynchronous lists.)
  54326.  
  54327.  This new functionality was added because it is needed to accurately
  54328.  determine the exit status of any asynchronous list.  The only
  54329.  compatibility problem that this change creates is for a script like:
  54330.  
  54331.        while sleep 60
  54332.        do
  54333.                job&
  54334.                echo Job started $(date) as $!
  54335.        done
  54336.  
  54337.  which will cause the shell to keep track of all of the jobs started until
  54338.  the script terminates or runs out of memory.  This would not be a problem
  54339.  if the loop did not reference $! or if the script would occasionally wait
  54340.  for jobs it started.
  54341.  
  54342.  If the exit status of wait is greater than 128, there is no way for the
  54343.  application to know if the waited for process exited with that value or
  54344.  was killed by a signal.  Since most utilities exit with small values,
  54345.  there is seldom any ambiguity.  Even in the ambiguous cases, most
  54346.  applications just need to know that the asynchronous job failed; it does
  54347.  not matter whether it detected an error and failed or was killed and did
  54348.  not complete its job normally.
  54349.  
  54350.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  54351.  
  54352.  The description of wait does not refer to the _w_a_i_t_p_i_d() function from
  54353.  POSIX.1 {8}, because that would needlessly overspecify this interface.
  54354.  However, the wording requires that wait is required to wait for an
  54355.  explicit process when it is given an argument, so that the status
  54356.  information of other processes is not consumed.  Historical
  54357.  implementations use POSIX.1 {8} _w_a_i_t() until _w_a_i_t() returns the requested
  54358.  process ID or finds that the requested process does not exist.  Because
  54359.  this means that a shell script could not reliably get the status of all
  54360.  background children if a second background job was ever started before
  54361.  the first job finished, it is recommended that the wait utility use a
  54362.  method such as the functionality provided by the _w_a_i_t_p_i_d() function in
  54363.  POSIX.1 {8}.
  54364.  
  54365.  The ability to wait for multiple _p_i_d operands was adopted from the
  54366.  KornShell at the request of ballot comments and objections.
  54367.  
  54368.  Some implementations of wait support waiting for asynchronous lists
  54369.  identified by the use of job identifiers.  For example, wait %1 would
  54370.  wait for the first background job.  This standard does not address job
  54371.  control issues, but allows these features to be added as extensions.  Job
  54372.  control facilities will be provided by the UPE.
  54373.  
  54374.  
  54375.                Copyright c 1991 IEEE.  All rights reserved.
  54376.       This is an unapproved IEEE Standards Draft, subject to change.
  54377.  
  54378.  
  54379.  
  54380.  
  54381.  
  54382.  794                                     4 Execution Environment Utilities
  54383.  
  54384.  
  54385.  
  54386.  
  54387.  
  54388.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  54389.  
  54390.  END_RATIONALE
  54391.  
  54392.  
  54393.  
  54394.  4.71  wc - Word, line, and byte count
  54395.  
  54396.  
  54397.  4.71.1  Synopsis
  54398.  
  54399.  wc  [-clw] [_f_i_l_e ...]
  54400.  
  54401.  
  54402.  4.71.2  Description
  54403.  
  54404.  The wc utility shall read one or more input files and, by default, write
  54405.  the number of <newline>s, words, and bytes contained in each input file
  54406.  to the standard output.
  54407.  
  54408.  The utility also shall write a total count for all named files, if more
  54409.  than one input file is specified.
  54410.  
  54411.  The wc utility shall consider a _w_o_r_d to be a nonzero-length string of
  54412.  characters delimited by white space.
  54413.  
  54414.  
  54415.  4.71.3  Options
  54416.  
  54417.  The wc utility shall conform to the utility argument syntax guidelines
  54418.  described in 2.10.2.
  54419.  
  54420.  The following options shall be supported by the implementation:
  54421.  
  54422.     -c          Write to the standard output the number of bytes in each
  54423.                 input file.
  54424.  
  54425.     -l          Write to the standard output the number of <newline>s in
  54426.                 each input file.
  54427.  
  54428.     -w          Write to the standard output the number of words in each
  54429.                 input file.
  54430.  
  54431.  When any option is specified, wc shall report only the information
  54432.  requested by the specified option(s).
  54433.  
  54434.  
  54435.  
  54436.  
  54437.  
  54438.  
  54439.  
  54440.  
  54441.                Copyright c 1991 IEEE.  All rights reserved.
  54442.       This is an unapproved IEEE Standards Draft, subject to change.
  54443.  
  54444.  
  54445.  
  54446.  
  54447.  
  54448.  4.71 wc - Word, line, and byte count                                  795
  54449.  
  54450.  
  54451.  
  54452.  
  54453.  
  54454.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  54455.  
  54456.  4.71.4  Operands
  54457.  
  54458.  The following operand shall be supported by the implementation:
  54459.  
  54460.     _f_i_l_e        A pathname of an input file.  If no _f_i_l_e operands are
  54461.                 specified, the standard input shall be used.
  54462.  
  54463.  
  54464.  4.71.5  External Influences
  54465.  
  54466.  
  54467.  4.71.5.1  Standard Input
  54468.  
  54469.  The standard input shall be used only if no _f_i_l_e operands are specified.
  54470.  See Input Files.
  54471.  
  54472.  4.71.5.2  Input Files
  54473.  
  54474.  The input files may be of any type.
  54475.  
  54476.  
  54477.  4.71.5.3  Environment Variables
  54478.  
  54479.  The following environment variables shall affect the execution of wc:
  54480.  
  54481.     LANG               This variable shall determine the locale to use for
  54482.                        the locale categories when both LC_ALL and the
  54483.                        corresponding environment variable (beginning with
  54484.                        LC_) do not specify a locale.  See 2.6.
  54485.  
  54486.     LC_ALL             This variable shall determine the locale to be used
  54487.                        to override any values for locale categories
  54488.                        specified by the settings of LANG or any
  54489.                        environment variables beginning with LC_.
  54490.  
  54491.     LC_CTYPE           This variable shall determine the locale for the
  54492.                        interpretation of sequences of bytes of text data
  54493.                        as characters (e.g., single- versus multibyte
  54494.                        characters in arguments and input files) and which
  54495.                        characters are defined as ``white space''
  54496.                        characters.
  54497.  
  54498.     LC_MESSAGES        This variable shall determine the language in which
  54499.                        messages should be written.
  54500.  
  54501.  
  54502.  
  54503.  
  54504.  
  54505.  
  54506.  
  54507.                Copyright c 1991 IEEE.  All rights reserved.
  54508.       This is an unapproved IEEE Standards Draft, subject to change.
  54509.  
  54510.  
  54511.  
  54512.  
  54513.  
  54514.  796                                     4 Execution Environment Utilities
  54515.  
  54516.  
  54517.  
  54518.  
  54519.  
  54520.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  54521.  
  54522.  4.71.5.4  Asynchronous Events
  54523.  
  54524.  Default.
  54525.  
  54526.  
  54527.  4.71.6  External Effects
  54528.  
  54529.  
  54530.  4.71.6.1  Standard Output
  54531.  
  54532.  By default, the standard output shall contain a line for each input file
  54533.  of the form:
  54534.  
  54535.        "%d %d %d %s\n", <_n_e_w_l_i_n_e_s>, <_w_o_r_d_s>, <_b_y_t_e_s>, <_f_i_l_e>
  54536.  
  54537.  If any options are specified and the -l option is not specified, the
  54538.  number of <newline>s shall not be written.
  54539.  
  54540.  If any options are specified and the -w option is not specified, the
  54541.  number of words shall not be written.
  54542.  
  54543.  If any options are specified and the -c option is not specified, the
  54544.  number of bytes shall not be written.
  54545.  
  54546.  If no input _f_i_l_e operands are specified, no name shall be written and no
  54547.  <blank>s preceding the pathname shall be written.
  54548.  
  54549.  If more than one input _f_i_l_e operand is specified, an additional line
  54550.  shall be written, of the same format as the other lines, except that the
  54551.  word total (in the POSIX Locale) shall be written instead of a pathname
  54552.  and the total of each column shall be written as appropriate.  Such an
  54553.  additional line, if any, shall be written at the end of the output.
  54554.  
  54555.  4.71.6.2  Standard Error
  54556.  
  54557.  Used only for diagnostic messages.
  54558.  
  54559.  
  54560.  4.71.6.3  Output Files
  54561.  
  54562.  None.
  54563.  
  54564.  
  54565.  4.71.7  Extended Description
  54566.  
  54567.  None.
  54568.  
  54569.  
  54570.  
  54571.  
  54572.  
  54573.                Copyright c 1991 IEEE.  All rights reserved.
  54574.       This is an unapproved IEEE Standards Draft, subject to change.
  54575.  
  54576.  
  54577.  
  54578.  
  54579.  
  54580.  4.71 wc - Word, line, and byte count                                  797
  54581.  
  54582.  
  54583.  
  54584.  
  54585.  
  54586.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  54587.  
  54588.  4.71.8  Exit Status
  54589.  
  54590.  The wc utility shall exit with one of the following values:
  54591.  
  54592.      0    Successful completion.
  54593.  
  54594.     >0    An error occurred.
  54595.  
  54596.  
  54597.  4.71.9  Consequences of Errors
  54598.  
  54599.  Default.
  54600.  
  54601.  BEGIN_RATIONALE
  54602.  
  54603.  
  54604.  4.71.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  54605.  
  54606.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  54607.  
  54608.  None.
  54609.  
  54610.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  54611.  
  54612.  The output file format pseudo-_p_r_i_n_t_f() string was derived from the HP-UX
  54613.  version of wc; the System V version:
  54614.  
  54615.        "%7d%7d%7d %s\n"
  54616.  
  54617.  produces possibly ambiguous and unparsable results for very large files,
  54618.  as it assumes no number will exceed six digits.
  54619.  
  54620.  Some historical implementations use only <space>, <tab>, and <newline> as
  54621.  word separators.  The equivalent of the C Standard {7} _i_s_s_p_a_c_e() function
  54622.  is more appropriate.
  54623.  
  54624.  The -c option stands for ``character'' count, even though it counts
  54625.  bytes.  This stems from the sometimes erroneous historical view that
  54626.  bytes and characters are the same size.
  54627.  
  54628.  Earlier drafts only specified the results when input files were text
  54629.  files.  The current specification more closely matches existing practice.
  54630.  (Bytes, words, and <newline>_s are counted separately and the results are
  54631.  written when an end-of-file is detected.)
  54632.  
  54633.  Historical implementations of the wc utility only accepted one argument
  54634.  to specify the options -c, -l, and -w.  Some of them also had multiple
  54635.  occurrences of an option cause the corresponding count to be output
  54636.  multiple times and having the order of specification of the options
  54637.  
  54638.  
  54639.                Copyright c 1991 IEEE.  All rights reserved.
  54640.       This is an unapproved IEEE Standards Draft, subject to change.
  54641.  
  54642.  
  54643.  
  54644.  
  54645.  
  54646.  798                                     4 Execution Environment Utilities
  54647.  
  54648.  
  54649.  
  54650.  
  54651.  
  54652.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  54653.  
  54654.  affect the order of the fields on output, but did not document either of
  54655.  these.  Because common usage either specifies no options or only one
  54656.  option and because none of this was documented, the changes required by
  54657.  this standard should not break many existing applications (and does not
  54658.  break any historical portable applications.)
  54659.  
  54660.  END_RATIONALE
  54661.  
  54662.  
  54663.  
  54664.  4.72  xargs - Construct argument list(s) and invoke utility
  54665.  
  54666.  
  54667.  4.72.1  Synopsis
  54668.  
  54669.  xargs  [-t] [-n _n_u_m_b_e_r  [-x] ] [-s _s_i_z_e] [_u_t_i_l_i_t_y [_a_r_g_u_m_e_n_t ...]]
  54670.  
  54671.  
  54672.  4.72.2  Description
  54673.  
  54674.  The xargs utility shall construct a command line consisting of the
  54675.  _u_t_i_l_i_t_y and _a_r_g_u_m_e_n_t operands specified followed by as many arguments
  54676.  read in sequence from standard input as will fit in length and number
  54677.  constraints specified by the options.  The xargs utility shall then
  54678.  invoke the constructed command line and wait for its completion.  This
  54679.  sequence shall be repeated until an end-of-file condition is detected on
  54680.  standard input or an invocation of a constructed command line returns an   1
  54681.  exit status of 255.                                                        1
  54682.  
  54683.  Arguments in the standard input shall be separated by unquoted <blank>s,
  54684.  or unescaped <blank>s or <newline>s.  A string of zero or more
  54685.  nondouble-quote (") and non-<newline> characters can be quoted by
  54686.  enclosing them in double-quotes.  A string of zero or more nonapostrophe
  54687.  (') and non-<newline> characters can be quoted by enclosing them in
  54688.  apostrophes.  Any unquoted character can be escaped by preceding it with
  54689.  a backslash.  The _u_t_i_l_i_t_y shall be executed one or more times until the
  54690.  end-of-file is reached.  The results are unspecified if the utility named
  54691.  by _u_t_i_l_i_t_y attempts to read from its standard input.
  54692.  
  54693.  The generated command line length shall be the sum of the size in bytes
  54694.  of the utility name and each argument treated as strings, including a
  54695.  null byte terminator for each of these strings.  The xargs utility shall
  54696.  limit the command line length such that when the command line is invoked,
  54697.  the combined argument and environment lists (see the _e_x_e_c family of
  54698.  functions in POSIX.1 {8} 3.1.2) shall not exceed {ARG_MAX}-2048 bytes.
  54699.  Within this constraint, if neither the -n nor the -s option is specified,
  54700.  the default command line length shall be at least {LINE_MAX}.
  54701.  
  54702.  
  54703.  
  54704.  
  54705.                Copyright c 1991 IEEE.  All rights reserved.
  54706.       This is an unapproved IEEE Standards Draft, subject to change.
  54707.  
  54708.  
  54709.  
  54710.  
  54711.  
  54712.  4.72 xargs - Construct argument list(s) and invoke utility            799
  54713.  
  54714.  
  54715.  
  54716.  
  54717.  
  54718.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  54719.  
  54720.  4.72.3  Options
  54721.  
  54722.  The xargs utility shall conform to the utility argument syntax guidelines
  54723.  described in 2.10.2.
  54724.  
  54725.  The following options shall be supported by the implementation:
  54726.  
  54727.     -n _n_u_m_b_e_r   Invoke _u_t_i_l_i_t_y using as many standard input arguments as
  54728.                 possible, up to _n_u_m_b_e_r (a positive decimal integer)
  54729.                 arguments maximum.  Fewer arguments shall be used if:
  54730.  
  54731.                  - The command line length accumulated exceeds the size
  54732.                    specified by the -s option (or {LINE_MAX} if there is
  54733.                    no -s option), or
  54734.  
  54735.                  - The last iteration has fewer than _n_u_m_b_e_r, but not zero,
  54736.                    operands remaining.
  54737.  
  54738.     -s _s_i_z_e     Invoke _u_t_i_l_i_t_y using as many standard input arguments as
  54739.                 possible yielding a command line length less than _s_i_z_e (a
  54740.                 positive decimal integer) bytes.  Fewer arguments shall be
  54741.                 used if:
  54742.  
  54743.                  - The total number of arguments exceeds that specified by
  54744.                    the -n option, or
  54745.  
  54746.                  - End of file is encountered on standard input before
  54747.                    _s_i_z_e bytes are accumulated.
  54748.  
  54749.                 Implementations shall support values of _s_i_z_e up to at
  54750.                 least {LINE_MAX} bytes, provided that the constraints
  54751.                 specified in 4.72.2 are met.  It shall not be considered
  54752.                 an error if a value larger than that supported by the
  54753.                 implementation or exceeding the constraints specified in
  54754.                 4.72.2 is given; xargs shall use the largest value it
  54755.                 supports within the constraints.
  54756.  
  54757.     -t          Enable trace mode.  Each generated command line shall be
  54758.                 written to standard error just prior to invocation.
  54759.  
  54760.     -x          Terminate if a command line containing _n_u_m_b_e_r arguments
  54761.                 (see the -n option above) will not fit in the implied or
  54762.                 specified size (see the -s option above).
  54763.  
  54764.  
  54765.  
  54766.  
  54767.  
  54768.  
  54769.  
  54770.  
  54771.                Copyright c 1991 IEEE.  All rights reserved.
  54772.       This is an unapproved IEEE Standards Draft, subject to change.
  54773.  
  54774.  
  54775.  
  54776.  
  54777.  
  54778.  800                                     4 Execution Environment Utilities
  54779.  
  54780.  
  54781.  
  54782.  
  54783.  
  54784.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  54785.  
  54786.  4.72.4  Operands
  54787.  
  54788.  The following operands shall be supported by the implementation:
  54789.  
  54790.     _u_t_i_l_i_t_y     The name of the utility to be invoked, found by search
  54791.                 path using the PATH environment variable, described in
  54792.                 2.6.  If _u_t_i_l_i_t_y is omitted, the default shall be the echo
  54793.                 utility (see 4.19).  If the _u_t_i_l_i_t_y operand names any of
  54794.                 the special built-in utilities in 3.14, the results are
  54795.                 undefined.
  54796.  
  54797.     _a_r_g_u_m_e_n_t    An initial option or operand for the invocation of
  54798.                 _u_t_i_l_i_t_y.
  54799.  
  54800.  
  54801.  4.72.5  External Influences
  54802.  
  54803.  
  54804.  4.72.5.1  Standard Input
  54805.  
  54806.  The standard input shall be a text file.  The results are unspecified if
  54807.  an end-of-file condition is detected immediately following an escaped
  54808.  <newline>.
  54809.  
  54810.  4.72.5.2  Input Files
  54811.  
  54812.  None.
  54813.  
  54814.  
  54815.  4.72.5.3  Environment Variables
  54816.  
  54817.  The following environment variables shall affect the execution of xargs:
  54818.  
  54819.     LANG               This variable shall determine the locale to use for
  54820.                        the locale categories when both LC_ALL and the
  54821.                        corresponding environment variable (beginning with
  54822.                        LC_) do not specify a locale.  See 2.6.
  54823.  
  54824.     LC_ALL             This variable shall determine the locale to be used
  54825.                        to override any values for locale categories
  54826.                        specified by the settings of LANG or any
  54827.                        environment variables beginning with LC_.
  54828.  
  54829.     LC_CTYPE           This variable shall determine the locale for the
  54830.                        interpretation of sequences of bytes of text data
  54831.                        as characters (e.g., single- versus multibyte
  54832.                        characters in arguments and input files).
  54833.  
  54834.  
  54835.  
  54836.  
  54837.                Copyright c 1991 IEEE.  All rights reserved.
  54838.       This is an unapproved IEEE Standards Draft, subject to change.
  54839.  
  54840.  
  54841.  
  54842.  
  54843.  
  54844.  4.72 xargs - Construct argument list(s) and invoke utility            801
  54845.  
  54846.  
  54847.  
  54848.  
  54849.  
  54850.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  54851.  
  54852.     LC_MESSAGES        This variable shall determine the language in which
  54853.                        messages should be written.
  54854.  
  54855.  
  54856.  4.72.5.4  Asynchronous Events
  54857.  
  54858.  Default.
  54859.  
  54860.  
  54861.  4.72.6  External Effects
  54862.  
  54863.  Any external effects are a result of the invocation of the utility
  54864.  _u_t_i_l_i_t_y, in a manner specified by that utility.
  54865.  
  54866.  4.72.6.1  Standard Output
  54867.  
  54868.  None.
  54869.  
  54870.  
  54871.  4.72.6.2  Standard Error
  54872.  
  54873.  Used for diagnostic messages and the -t option.  If the -t option is
  54874.  specified, the _u_t_i_l_i_t_y and its constructed argument list shall be written
  54875.  to standard error, as it will be invoked, prior to invocation.
  54876.  
  54877.  4.72.6.3  Output Files
  54878.  
  54879.  None.
  54880.  
  54881.  
  54882.  4.72.7  Extended Description
  54883.  
  54884.  None.
  54885.  
  54886.  
  54887.  4.72.8  Exit Status
  54888.  
  54889.  The xargs utility shall exit with one of the following values:
  54890.  
  54891.         0    All invocations of _u_t_i_l_i_t_y returned exit status zero.
  54892.  
  54893.     1-125    A command line meeting the specified requirements could not    1
  54894.              be assembled, one or more of the invocations of _u_t_i_l_i_t_y        1
  54895.              returned a nonzero exit status, or some other error occurred.  1
  54896.  
  54897.       126    The utility specified by _u_t_i_l_i_t_y was found but could not be    1
  54898.              invoked.                                                       1
  54899.  
  54900.  
  54901.  
  54902.  
  54903.                Copyright c 1991 IEEE.  All rights reserved.
  54904.       This is an unapproved IEEE Standards Draft, subject to change.
  54905.  
  54906.  
  54907.  
  54908.  
  54909.  
  54910.  802                                     4 Execution Environment Utilities
  54911.  
  54912.  
  54913.  
  54914.  
  54915.  
  54916.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  54917.  
  54918.       127    The utility specified by _u_t_i_l_i_t_y could not be found.           1
  54919.  
  54920.  
  54921.  4.72.9  Consequences of Errors
  54922.  
  54923.  If a command line meeting the specified requirements cannot be assembled,
  54924.  the utility cannot be invoked, an invocation of the utility is terminated
  54925.  by a signal, or an invocation of the utility exits with exit status 255,
  54926.  the xargs utility shall write a diagnostic message and exit without
  54927.  processing any remaining input.
  54928.  
  54929.  BEGIN_RATIONALE
  54930.  
  54931.  
  54932.  4.72.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  54933.  
  54934.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  54935.  
  54936.  The xargs utility is usually found only in System V-based systems; BSD
  54937.  systems provide an apply utility that provides functionality similar to
  54938.  xargs -n _n_u_m_b_e_r.  The _S_V_I_D lists xargs as a software development
  54939.  extension; POSIX.2 does not share the view that it is used only for
  54940.  development, and therefore it is not optional.
  54941.  
  54942.  Note that input is parsed as lines and <blank>_s separate arguments.  If
  54943.  xargs is used to bundle output of commands like find  dir -print or ls
  54944.  into commands to be executed, unexpected results are likely if any file
  54945.  names contain any <blank>_s or <newline>_s.  This can be fixed by using
  54946.  find to call a script that converts each file found into a quoted string
  54947.  that is then piped to xargs.  Note that the quoting rules used by xargs
  54948.  are not the same as in the shell.  They were not made consistent here
  54949.  because existing applications depend on the current rules and the shell
  54950.  syntax is not fully compatible with it.  An easy rule that can be used to
  54951.  transform any string into a quoted form that xargs will interpret
  54952.  correctly is to precede each character in the string with a backslash.
  54953.  
  54954.  The following command will combine the output of the parenthesized
  54955.  commands onto one line, which is then written to the end of file log:
  54956.  
  54957.        (logname; date; printf "%s\n" "$0 $*") | xargs >>log
  54958.  
  54959.  The following command will invoke diff with successive pairs of arguments
  54960.  originally typed as command line arguments (assuming there are no
  54961.  embedded <blank>_s in the elements of the original argument list):
  54962.  
  54963.        printf "%s\n" "$*" | xargs -n 2 -x diff
  54964.  
  54965.  On implementations with a large value for {ARG_MAX}, xargs may produce
  54966.  command lines longer than {LINE_MAX}.  For invocation of utilities, this
  54967.  
  54968.  
  54969.                Copyright c 1991 IEEE.  All rights reserved.
  54970.       This is an unapproved IEEE Standards Draft, subject to change.
  54971.  
  54972.  
  54973.  
  54974.  
  54975.  
  54976.  4.72 xargs - Construct argument list(s) and invoke utility            803
  54977.  
  54978.  
  54979.  
  54980.  
  54981.  
  54982.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  54983.  
  54984.  is not a problem.  If xargs is being used to create a text file, users
  54985.  should explicitly set the maximum command line length with the -s option.
  54986.  
  54987.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  54988.  
  54989.  The list of options has been scaled down extensively.  As it had stood,
  54990.  the xargs utility did not exhibit an economy of powerful, modular, or
  54991.  extensible functionality.
  54992.  
  54993.  The classic application of the xargs utility is in conjunction with the
  54994.  find utility to reduce the number of processes launched by a simplistic
  54995.  use of the find -exec combination.  The xargs utility is also used to
  54996.  enforce an upper limit on memory required to launch a process.  With this
  54997.  basis in mind, POSIX.2 selected only the minimal features required.
  54998.  
  54999.  The -n _n_u_m_b_e_r option was classically used to evoke a utility using pairs
  55000.  of operands, yet the general case has problems when _u_t_i_l_i_t_y spawns child
  55001.  processes of its own.  The xargs utility can sap resources from these
  55002.  children, especially those sharing the parent's environment.
  55003.  
  55004.  The command, env, nohup, and xargs utilities have been specified to use
  55005.  exit code 127 if an error occurs so that applications can distinguish      1
  55006.  ``failure to find a utility'' from ``invoked utility exited with an error  1
  55007.  indication.''  The value 127 was chosen because it is not commonly used    1
  55008.  for other meanings; most utilities use small values for ``normal error
  55009.  conditions'' and the values above 128 can be confused with termination
  55010.  due to receipt of a signal.  The value 126 was chosen in a similar manner  1
  55011.  to indicate that the utility could be found, but not invoked.  Some        1
  55012.  scripts produce meaningful error messages differentiating the 126 and 127  1
  55013.  cases.  The distinction between exit codes 126 and 127 is based on         2
  55014.  KornShell practice that uses 127 when all attempts to _e_x_e_c the utility     2
  55015.  fail with [ENOENT], and uses 126 when any attempt to _e_x_e_c the utility      2
  55016.  fails for any other reason.                                                2
  55017.  
  55018.  Although the 255 exit status is mostly an accident of historical           1
  55019.  implementations, it allows a utility being used by xargs to tell xargs to
  55020.  terminate if it knows no further invocations using the current data
  55021.  stream will succeed.  Any nonzero exit status from a utility will fall     1
  55022.  into the 1-125 range when xargs exits.  There is no statement of how the   1
  55023.  various nonzero utility exit status codes are accumulated by xargs.  The   1
  55024.  value could be the addition of all codes, their highest value, the last    1
  55025.  one received, or a single value such as 1.  Since no algorithm is          1
  55026.  arguably better than the others, and since many of the POSIX.2 standard    1
  55027.  utilities say little more (portably) than ``pass/fail,'' no new algorithm  1
  55028.  was invented.                                                              1
  55029.  
  55030.  Several other xargs options were withdrawn because simple alternatives
  55031.  already exist within the standard.  For example, the -e_e_o_f_s_t_r option has
  55032.  a sed work around.  The -i_r_e_p_l_s_t_r option can be just as efficiently
  55033.  
  55034.  
  55035.                Copyright c 1991 IEEE.  All rights reserved.
  55036.       This is an unapproved IEEE Standards Draft, subject to change.
  55037.  
  55038.  
  55039.  
  55040.  
  55041.  
  55042.  804                                     4 Execution Environment Utilities
  55043.  
  55044.  
  55045.  
  55046.  
  55047.  
  55048.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  55049.  
  55050.  performed using a shell for loop.  Since xargs will _e_x_e_c() with each
  55051.  input line, the -i option will usually not exploit xarg'_s grouping
  55052.  capabilities.
  55053.  
  55054.  The -s option was reinstated since many of the balloters on Draft 8 felt
  55055.  that it was preferable to the -r option invented for that draft that
  55056.  required the implementation to use {ARG_MAX} - _s_i_z_e bytes for command
  55057.  lines.
  55058.  
  55059.  The requirement that xargs never produce command lines such that
  55060.  invocation of _u_t_i_l_i_t_y is within 2048 bytes of hitting the POSIX.1 {8}
  55061.  _e_x_e_c {ARG_MAX} limitations is intended to guarantee that the invoked
  55062.  utility has a little bit of room to modify its environment variables and
  55063.  command line arguments and still be able to invoke another utility.  Note
  55064.  that the minimum {ARG_MAX} allowed by POSIX.1 {8} is 4096 and the minimum
  55065.  value allowed by POSIX.2 is 2048; therefore, the 2048-byte difference
  55066.  seems reasonable.  Note, however, that xargs may never be able to invoke
  55067.  a utility if the environment passed in to xargs comes close to using
  55068.  {ARG_MAX} bytes.
  55069.  
  55070.  The version of xargs required by POSIX.2 is required to wait for the
  55071.  completion of the invoked command before invoking another command.  This
  55072.  was done because existing scripts using xargs assumed sequential
  55073.  execution.  Implementations wanting to provide parallel operation of the
  55074.  invoked utilities are encouraged to add an option enabling parallel
  55075.  invocation, but should still wait for termination of all of the children
  55076.  before xargs terminates normally.
  55077.  
  55078.  END_RATIONALE
  55079.  
  55080.  
  55081.  
  55082.  
  55083.  
  55084.  
  55085.  
  55086.  
  55087.  
  55088.  
  55089.  
  55090.  
  55091.  
  55092.  
  55093.  
  55094.  
  55095.  
  55096.  
  55097.  
  55098.  
  55099.  
  55100.  
  55101.                Copyright c 1991 IEEE.  All rights reserved.
  55102.       This is an unapproved IEEE Standards Draft, subject to change.
  55103.  
  55104.  
  55105.  
  55106.  
  55107.  
  55108.  4.72 xargs - Construct argument list(s) and invoke utility            805
  55109.  
  55110.  
  55111.  
  55112.  
  55113.  
  55114.  
  55115.  
  55116.  
  55117.  
  55118.  
  55119.  
  55120.  
  55121.  
  55122.  
  55123.  
  55124.  
  55125.  
  55126.  
  55127.  
  55128.  
  55129.  
  55130.  
  55131.  
  55132.  
  55133.  
  55134.  
  55135.  
  55136.  
  55137.  
  55138.  
  55139.  
  55140.  
  55141.  
  55142.  
  55143.  
  55144.  
  55145.  
  55146.  
  55147.  
  55148.  
  55149.  
  55150.  
  55151.  
  55152.  
  55153.  
  55154.  
  55155.  
  55156.  
  55157.  
  55158.  
  55159.  
  55160.  
  55161.  
  55162.  
  55163.  
  55164.  
  55165.  
  55166.  
  55167.  
  55168.  
  55169.  
  55170.  
  55171.  
  55172.  
  55173.  
  55174.  
  55175.  
  55176.  
  55177.  
  55178.  
  55179.  
  55180.                                                              P1003.2/D11.2
  55181.  
  55182.  
  55183.  
  55184.  
  55185.  
  55186.  
  55187.  
  55188.  
  55189.                Section 5: User Portability Utilities Option
  55190.  
  55191.  
  55192.  
  55193.  BEGIN_RATIONALE
  55194.  
  55195.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_i_s _e_m_p_t_y _s_e_c_t_i_o_n _i_s _p_l_a_c_e_h_o_l_d_e_r _f_o_r _a _f_u_t_u_r_e _r_e_v_i_s_i_o_n
  55196.  (_t_h_e _U_s_e_r _P_o_r_t_a_b_i_l_i_t_y _E_x_t_e_n_s_i_o_n, _P_1_0_0_3._2_a) _t_o _c_o_n_t_a_i_n _d_e_s_c_r_i_p_t_i_o_n_s _o_f
  55197.  _u_t_i_l_i_t_i_e_s _t_h_a_t _a_r_e _s_u_i_t_a_b_l_e _f_o_r _u_s_e_r _p_o_r_t_a_b_i_l_i_t_y _o_n _a_s_y_n_c_h_r_o_n_o_u_s
  55198.  _c_h_a_r_a_c_t_e_r _t_e_r_m_i_n_a_l_s.  _P_1_0_0_3._2_a _i_s _c_u_r_r_e_n_t_l_y _b_a_l_l_o_t_i_n_g _w_i_t_h_i_n _t_h_e _I_E_E_E.
  55199.  _C_o_n_t_a_c_t _t_h_e _I_E_E_E _S_t_a_n_d_a_r_d_s _O_f_f_i_c_e _t_o _o_b_t_a_i_n _a _c_o_p_y _o_f _t_h_e _l_a_t_e_s_t _d_r_a_f_t.
  55200.  
  55201.  END_RATIONALE
  55202.  
  55203.  
  55204.  
  55205.  
  55206.  
  55207.  
  55208.  
  55209.  
  55210.  
  55211.  
  55212.  
  55213.  
  55214.  
  55215.  
  55216.  
  55217.  
  55218.  
  55219.  
  55220.  
  55221.  
  55222.  
  55223.  
  55224.  
  55225.  
  55226.  
  55227.  
  55228.  
  55229.  
  55230.  
  55231.  
  55232.  
  55233.                Copyright c 1991 IEEE.  All rights reserved.
  55234.       This is an unapproved IEEE Standards Draft, subject to change.
  55235.  
  55236.  
  55237.  
  55238.  
  55239.  
  55240.  5 User Portability Utilities Option                                   807
  55241.  
  55242.  
  55243.  
  55244.  
  55245.  
  55246.  
  55247.  
  55248.  
  55249.  
  55250.  
  55251.  
  55252.  
  55253.  
  55254.  
  55255.  
  55256.  
  55257.  
  55258.  
  55259.  
  55260.  
  55261.  
  55262.  
  55263.  
  55264.  
  55265.  
  55266.  
  55267.  
  55268.  
  55269.  
  55270.  
  55271.  
  55272.  
  55273.  
  55274.  
  55275.  
  55276.  
  55277.  
  55278.  
  55279.  
  55280.  
  55281.  
  55282.  
  55283.  
  55284.  
  55285.  
  55286.  
  55287.  
  55288.  
  55289.  
  55290.  
  55291.  
  55292.  
  55293.  
  55294.  
  55295.  
  55296.  
  55297.  
  55298.  
  55299.  
  55300.  
  55301.  
  55302.  
  55303.  
  55304.  
  55305.  
  55306.  
  55307.  
  55308.  
  55309.  
  55310.  
  55311.  
  55312.                                                              P1003.2/D11.2
  55313.  
  55314.  
  55315.  
  55316.  
  55317.  
  55318.  
  55319.  
  55320.  
  55321.              Section 6: Software Development Utilities Option
  55322.  
  55323.  
  55324.  
  55325.  This section describes utilities used for the development of
  55326.  applications, including compilation or translation of source code, the
  55327.  creation and maintenance of library archives, and the maintenance of
  55328.  groups of interdependent programs.
  55329.  
  55330.  The utilities described in this section may be provided by the conforming
  55331.  system; however, any system claiming conformance to the Software
  55332.  Development Utilities Option shall provide all of the utilities described
  55333.  here.
  55334.  
  55335.  
  55336.  
  55337.  6.1  ar - Create and maintain library archives
  55338.  
  55339.  
  55340.  6.1.1  Synopsis
  55341.  
  55342.  ar  -d [-v] _a_r_c_h_i_v_e _f_i_l_e ...
  55343.  
  55344.  ar  -p [-v] _a_r_c_h_i_v_e [_f_i_l_e ...]
  55345.  ar  -r [-cuv] _a_r_c_h_i_v_e _f_i_l_e ...
  55346.  
  55347.  ar  -t [-v] _a_r_c_h_i_v_e [_f_i_l_e ...]
  55348.  ar  -x [-v] _a_r_c_h_i_v_e [_f_i_l_e ...]
  55349.  
  55350.  
  55351.  6.1.2  Description
  55352.  
  55353.  The ar utility can be used to create and maintain groups of files
  55354.  combined into an archive.  Once an archive has been created, new files
  55355.  can be added, and existing files can be extracted, deleted, or replaced.
  55356.  When an archive consists entirely of valid object files, the
  55357.  implementation shall format the archive so that it is usable as a library
  55358.  for link editing (see A.1 and C.2).  When some of the archived files are
  55359.  not valid object files, the suitability of the archive for library use is
  55360.  undefined.
  55361.  
  55362.  
  55363.  
  55364.  
  55365.                Copyright c 1991 IEEE.  All rights reserved.
  55366.       This is an unapproved IEEE Standards Draft, subject to change.
  55367.  
  55368.  
  55369.  
  55370.  
  55371.  
  55372.  6.1 ar - Create and maintain library archives                         809
  55373.  
  55374.  
  55375.  
  55376.  
  55377.  
  55378.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  55379.  
  55380.  All _f_i_l_e operands can be pathnames.  However, files within archives shall
  55381.  be named by a filename, which is the last component of the pathname used
  55382.  when the file was entered into the archive.  The comparison of _f_i_l_e
  55383.  operands to the names of files in archives shall be performed by
  55384.  comparing the last component of the operand to the name of the archive
  55385.  file.
  55386.  
  55387.  It is unspecified whether multiple files in the archive may be
  55388.  identically named.  In the case of such files, however, each _f_i_l_e operand
  55389.  shall match only the first archive file having a name that is the same as
  55390.  the last component of the _f_i_l_e operand.
  55391.  
  55392.  
  55393.  6.1.3  Options
  55394.  
  55395.  The ar utility shall conform to the utility argument syntax guidelines
  55396.  described in 2.10.2.
  55397.  
  55398.  The following options shall be supported by the implementation:
  55399.  
  55400.     -c          Suppress the diagnostic message that is written to
  55401.                 standard error by default when the archive file _a_r_c_h_i_v_e is
  55402.                 created.
  55403.  
  55404.     -d          Delete _f_i_l_e(s) from _a_r_c_h_i_v_e.
  55405.  
  55406.     -p          Write the contents of the _f_i_l_e(s) from _a_r_c_h_i_v_e to the
  55407.                 standard output.  If no _f_i_l_e(s) are specified, the
  55408.                 contents of all files in the archive shall be written in
  55409.                 the order of the archive.
  55410.  
  55411.     -r          Replace or add _f_i_l_e(s) to _a_r_c_h_i_v_e. If the archive named by
  55412.                 _a_r_c_h_i_v_e does not exist, a new archive file shall be
  55413.                 created and a diagnostic message shall be written to
  55414.                 standard error (unless the -c option is specified).  If no
  55415.                 _f_i_l_e(s) are specified and the _a_r_c_h_i_v_e exists, the results
  55416.                 are undefined.  Files that replace existing files shall
  55417.                 not change the order of the archive.  Files that do not
  55418.                 replace existing files shall be appended to the archive.
  55419.  
  55420.     -t          Write a table of contents of _a_r_c_h_i_v_e to the standard
  55421.                 output.  The files specified by the _f_i_l_e operands shall be
  55422.                 included in the written list.  If no _f_i_l_e operands are
  55423.                 specified, all files in _a_r_c_h_i_v_e shall be included in the
  55424.                 order of the archive.
  55425.  
  55426.     -u          Update older files.  When used with the -r option, files
  55427.                 within the archive will be replaced only if the
  55428.                 corresponding _f_i_l_e has a modification time that is at
  55429.  
  55430.  
  55431.                Copyright c 1991 IEEE.  All rights reserved.
  55432.       This is an unapproved IEEE Standards Draft, subject to change.
  55433.  
  55434.  
  55435.  
  55436.  
  55437.  
  55438.  810                               6 Software Development Utilities Option
  55439.  
  55440.  
  55441.  
  55442.  
  55443.  
  55444.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  55445.  
  55446.                 least as new as the modification time of the file within
  55447.                 the archive.
  55448.  
  55449.     -v          Give verbose output.  When used with the option characters
  55450.                 -d, -r, or -x, write a detailed file-by-file description
  55451.                 of the archive creation and maintenance activity, as
  55452.                 described in 6.1.6.1.
  55453.  
  55454.                 When used with -p, write the name of the file to the
  55455.                 standard output before writing the file itself to the
  55456.                 standard output, as described in 6.1.6.1.
  55457.  
  55458.                 When used with -t, include a long listing of information
  55459.                 about the files within the archive, as described in
  55460.                 6.1.6.1.
  55461.  
  55462.     -x          Extract the files named by the _f_i_l_e operands from _a_r_c_h_i_v_e.
  55463.                 The contents of the archive file shall not be changed.  If
  55464.                 no _f_i_l_e operands are given, all files in the archive shall
  55465.                 be extracted.  If the filename of a file extracted from
  55466.                 the archive is longer than that supported in the directory
  55467.                 to which it is being extracted, the results are undefined.
  55468.                 The modification time of each file extracted shall be set
  55469.                 to the time the file is extracted from the archive.
  55470.  
  55471.  
  55472.  6.1.4  Operands
  55473.  
  55474.  The following operands shall be supported by the implementation:
  55475.  
  55476.     _a_r_c_h_i_v_e     A pathname of the archive file.
  55477.  
  55478.     _f_i_l_e        A pathname.  Only the last component shall be used when
  55479.                 comparing against the names of files in the archive.  If
  55480.                 two or more _f_i_l_e operands have the same last pathname
  55481.                 component (basename), the results are unspecified.  The
  55482.                 implementation's archive format shall not truncate valid
  55483.                 filenames of files added to, or replaced in, the archive.
  55484.  
  55485.  
  55486.  6.1.5  External Influences
  55487.  
  55488.  
  55489.  6.1.5.1  Standard Input
  55490.  
  55491.  None.
  55492.  
  55493.  
  55494.  
  55495.  
  55496.  
  55497.                Copyright c 1991 IEEE.  All rights reserved.
  55498.       This is an unapproved IEEE Standards Draft, subject to change.
  55499.  
  55500.  
  55501.  
  55502.  
  55503.  
  55504.  6.1 ar - Create and maintain library archives                         811
  55505.  
  55506.  
  55507.  
  55508.  
  55509.  
  55510.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  55511.  
  55512.  6.1.5.2  Input Files
  55513.  
  55514.  The input file named by _a_r_c_h_i_v_e shall be a file in the format created by
  55515.  ar -r.
  55516.  
  55517.  
  55518.  6.1.5.3  Environment Variables
  55519.  
  55520.  The following environment variables shall affect the execution of ar:
  55521.  
  55522.     LANG               This variable shall determine the locale to use for
  55523.                        the locale categories when both LC_ALL and the
  55524.                        corresponding environment variable (beginning with
  55525.                        LC_) do not specify a locale.  See 2.6.
  55526.  
  55527.     LC_ALL             This variable shall determine the locale to be used
  55528.                        to override any values for locale categories
  55529.                        specified by the settings of LANG or any
  55530.                        environment variables beginning with LC_.
  55531.  
  55532.     LC_CTYPE           This variable shall determine the locale for the
  55533.                        interpretation of sequences of bytes of text data
  55534.                        as characters (e.g., single- versus multibyte
  55535.                        characters in arguments).
  55536.  
  55537.     LC_MESSAGES        This variable shall determine the language in which
  55538.                        messages should be written.
  55539.  
  55540.     LC_TIME            This variable shall determine the format and
  55541.                        content for date and time strings written by ar.
  55542.  
  55543.  6.1.5.4  Asynchronous Events
  55544.  
  55545.  Default.
  55546.  
  55547.  
  55548.  6.1.6  External Effects
  55549.  
  55550.  
  55551.  6.1.6.1  Standard Output
  55552.  
  55553.  If the -d option is used with the -v option, the standard output format
  55554.  is:
  55555.  
  55556.        "d - %s\n", <_f_i_l_e>
  55557.  
  55558.  where _f_i_l_e is the operand specified on the command line.
  55559.  
  55560.  
  55561.  
  55562.  
  55563.                Copyright c 1991 IEEE.  All rights reserved.
  55564.       This is an unapproved IEEE Standards Draft, subject to change.
  55565.  
  55566.  
  55567.  
  55568.  
  55569.  
  55570.  812                               6 Software Development Utilities Option
  55571.  
  55572.  
  55573.  
  55574.  
  55575.  
  55576.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  55577.  
  55578.  If the -p option is used with the -v option, ar shall precede the
  55579.  contents of each file with:
  55580.  
  55581.        "\n<%s>\n\n", <_f_i_l_e>
  55582.  
  55583.  where _f_i_l_e is the operand specified on the command line, if _f_i_l_e operands
  55584.  were specified, and the name of the file in the archive if they were not.
  55585.  
  55586.  If the -r option is used with the -v option, and _f_i_l_e is already in the
  55587.  archive, the standard output format is:
  55588.  
  55589.        "r - %s\n", <_f_i_l_e>
  55590.  
  55591.  where _f_i_l_e is the operand specified on the command line.
  55592.  
  55593.  If _f_i_l_e is being added to the archive with the -r option, the standard
  55594.  output format is:
  55595.  
  55596.        "a - %s\n", <_f_i_l_e>
  55597.  
  55598.  where _f_i_l_e is the operand specified on the command line.
  55599.  
  55600.  If the -t option is used, ar writes the names of the files to the
  55601.  standard output in the format:
  55602.  
  55603.        "%s\n", <_f_i_l_e>
  55604.  
  55605.  where _f_i_l_e is the operand specified on the command line, if _f_i_l_e operands
  55606.  were specified, or the name of the file in the archive if they were not.
  55607.  
  55608.  If the -t option is used with the -v option, the standard output format
  55609.  is:
  55610.  
  55611.        "%s %u/%u %u %s %d %d:%d %d %s\n", <_m_e_m_b_e_r _m_o_d_e>, <_u_s_e_r _I_D>,
  55612.        <_g_r_o_u_p _I_D>, <_n_u_m_b_e_r _o_f _b_y_t_e_s _i_n _m_e_m_b_e_r>, <_a_b_b_r_e_v_i_a_t_e_d _m_o_n_t_h>,
  55613.        <_d_a_y-_o_f-_m_o_n_t_h>, <_h_o_u_r>, <_m_i_n_u_t_e>, <_y_e_a_r>, <_f_i_l_e>
  55614.  
  55615.  Where:
  55616.  
  55617.     _f_i_l_e             shall be the operand specified on the command line,
  55618.                      if _f_i_l_e operands were specified, or the name of the
  55619.                      file in the archive if they were not.
  55620.  
  55621.     <_m_e_m_b_e_r _m_o_d_e>    shall be formatted the same as the <_f_i_l_e _m_o_d_e> string
  55622.                      defined in 4.39.6.1 (Standard Output of ls), except
  55623.                      that the first character, the <_e_n_t_r_y _t_y_p_e>, is not
  55624.                      used; the string represents the file mode of the
  55625.                      archive member at the time it was added to, or
  55626.                      replaced in, the archive.
  55627.  
  55628.  
  55629.                Copyright c 1991 IEEE.  All rights reserved.
  55630.       This is an unapproved IEEE Standards Draft, subject to change.
  55631.  
  55632.  
  55633.  
  55634.  
  55635.  
  55636.  6.1 ar - Create and maintain library archives                         813
  55637.  
  55638.  
  55639.  
  55640.  
  55641.  
  55642.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  55643.  
  55644.  The following represent the last-modification time of a file when it was
  55645.  most recently added to or replaced in the archive:
  55646.  
  55647.     <_a_b_b_r_e_v_i_a_t_e_d _m_o_n_t_h>
  55648.                      shall be equivalent to the %b format in date (see
  55649.                      4.15).
  55650.  
  55651.     <_d_a_y-_o_f-_m_o_n_t_h>   shall be equivalent to the %e format in date.
  55652.  
  55653.     <_h_o_u_r>           shall be equivalent to the %H format in date.
  55654.  
  55655.     <_m_i_n_u_t_e>         shall be equivalent to the %M format in date.
  55656.  
  55657.     <_y_e_a_r>           shall be equivalent to the %Y format in date.
  55658.  
  55659.  When LC_TIME does not specify the POSIX Locale, a different format and
  55660.  order of presentation of these fields relative to each other may be used
  55661.  in a format appropriate in the specified locale.
  55662.  
  55663.  If the -x option is used with the -v option, the standard output format
  55664.  is:
  55665.  
  55666.        "x - %s\n", <_f_i_l_e>
  55667.  
  55668.  where _f_i_l_e is the operand specified on the command line, if _f_i_l_e operands
  55669.  were specified, or the name of the file in the archive if they were not.
  55670.  
  55671.  
  55672.  6.1.6.2  Standard Error
  55673.  
  55674.  Used only for diagnostic messages.  The diagnostic message about creating
  55675.  a new archive when -c is not specified shall not modify the exit status.
  55676.  
  55677.  6.1.6.3  Output Files
  55678.  
  55679.  Archives are files with unspecified formats.
  55680.  
  55681.  
  55682.  6.1.7  Extended Description
  55683.  
  55684.  None.
  55685.  
  55686.  
  55687.  6.1.8  Exit Status
  55688.  
  55689.  The ar utility shall exit with one of the following values:
  55690.  
  55691.      0    Successful completion.
  55692.  
  55693.  
  55694.  
  55695.                Copyright c 1991 IEEE.  All rights reserved.
  55696.       This is an unapproved IEEE Standards Draft, subject to change.
  55697.  
  55698.  
  55699.  
  55700.  
  55701.  
  55702.  814                               6 Software Development Utilities Option
  55703.  
  55704.  
  55705.  
  55706.  
  55707.  
  55708.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  55709.  
  55710.     >0    An error occurred.
  55711.  
  55712.  
  55713.  6.1.9  Consequences of Errors
  55714.  
  55715.  Default.
  55716.  
  55717.  BEGIN_RATIONALE
  55718.  
  55719.  
  55720.  6.1.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  55721.  
  55722.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  55723.  
  55724.  The archive format is not described.  It is recognized that there are
  55725.  several known ar formats, which are not compatible.  The ar utility is
  55726.  being included, however, to allow creation of archives that are intended
  55727.  for use only on the same machine.  The archive file is specified as a
  55728.  file and it can be moved as a file.  This does allow an archive to be
  55729.  moved from one machine to another machine that uses the same
  55730.  implementation of ar.
  55731.  
  55732.  Utilities such as pax (and its forebears tar and cpio) also provide        1
  55733.  portable ``archives.''  This is a not a duplication; the ar interface is
  55734.  included in the standard to provide an interface primarily for make and
  55735.  the compilers, based on a historical model.
  55736.  
  55737.  In historical implementations, the -q option is known to execute quickly
  55738.  because ar does not check whether the added members are already in the
  55739.  archive.  This is useful to bypass the searching otherwise done when
  55740.  creating a large archive piece-by-piece.  The remarks may or may not hold
  55741.  true for a brand-new POSIX.2 implementation; and hence, these remarks
  55742.  have been moved out of the specification and into the Rationale.
  55743.  
  55744.  Likewise, historical implementations maintain a symbol table to speed
  55745.  searches, particularly when the archive contains object files.  However,
  55746.  future implementors may or may not use a symbol table, and the -s option
  55747.  was removed from this clause to permit implementors freedom of choice.
  55748.  Instead, the requirement that archive libraries be suitable for link
  55749.  editing was added to ensure the intended functionality.  Systems such as
  55750.  System V maintain the symbol table without requiring the use of -s, so
  55751.  adding -s (even if it were worded as allowing a no-op) would essentially
  55752.  require all portable applications to use it in all invocations involving
  55753.  libraries.
  55754.  
  55755.  The Operands subclause requires what might seem to be true without
  55756.  specifying it:  the archive cannot truncate the filenames below
  55757.  {NAME_MAX}.  Some historical implementations do so, however, causing
  55758.  unexpected results for the application.  Therefore, POSIX.2 makes the
  55759.  
  55760.  
  55761.                Copyright c 1991 IEEE.  All rights reserved.
  55762.       This is an unapproved IEEE Standards Draft, subject to change.
  55763.  
  55764.  
  55765.  
  55766.  
  55767.  
  55768.  6.1 ar - Create and maintain library archives                         815
  55769.  
  55770.  
  55771.  
  55772.  
  55773.  
  55774.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  55775.  
  55776.  requirement explicit to avoid misunderstandings.
  55777.  
  55778.  According to the System V documentation, the options -dmpqrtx are not
  55779.  required to begin with a hyphen ( - ).  POSIX.2 requires that a
  55780.  conforming application use the leading hyphen.
  55781.  
  55782.  When extracting files with long filenames into a file system that
  55783.  supports only shorter filenames, an undefined condition occurs.  Typical
  55784.  implementation actions might be one of the following:
  55785.  
  55786.      - Extract and truncate the filename only when an existing file would
  55787.        not be overlaid.
  55788.  
  55789.      - Extract and truncate the filename and overlay an existing file only
  55790.        if some extension such as another command-line option were used to
  55791.        override this safety feature.
  55792.  
  55793.      - Refuse to extract any files unless an extension overrode the
  55794.        default.
  55795.  
  55796.  The archive format used by the 4.4BSD implementation is documented in the
  55797.  rationale as an example:
  55798.  
  55799.        A file created by ar begins with the ``magic'' string
  55800.        ``!<arch>\n''.  The rest of the archive is made up of objects, each
  55801.        of which is composed of a header for a file, a possible filename,
  55802.        and the file contents.  The header is portable between machine
  55803.        architectures, and, if the file contents are printable, the archive
  55804.        is itself printable.
  55805.  
  55806.        The header is made up of six ASCII fields, followed by a two-        2
  55807.        character trailer.  The fields are the object name (16 characters),
  55808.        the file last modification time (12 characters), the user and group
  55809.        IDs (each 6 characters), the file mode (8 characters) and the file
  55810.        size (10 characters).  All numeric fields are in decimal, except
  55811.        for the file mode, which is in octal.
  55812.  
  55813.        The modification time is the file _s_t__m_t_i_m_e field.  The user and
  55814.        group IDs are the file _s_t__u_i_d and _s_t__g_i_d fields.  The file mode is
  55815.        the file _s_t__m_o_d_e field.  The file size is the file _s_t__s_i_z_e field.
  55816.        The two-byte trailer is the string ```<newline>''.
  55817.  
  55818.        Only the name field has any provision for overflow.  If any
  55819.        filename is more than 16 characters in length or contains an
  55820.        embedded space, the string ``#1/'' followed by the ASCII length of
  55821.        the name is written in the name field.  The file size (stored in
  55822.        the archive header) is incremented by the length of the name.  The
  55823.        name is then written immediately following the archive header.
  55824.  
  55825.  
  55826.  
  55827.                Copyright c 1991 IEEE.  All rights reserved.
  55828.       This is an unapproved IEEE Standards Draft, subject to change.
  55829.  
  55830.  
  55831.  
  55832.  
  55833.  
  55834.  816                               6 Software Development Utilities Option
  55835.  
  55836.  
  55837.  
  55838.  
  55839.  
  55840.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  55841.  
  55842.        Any unused characters in any of these fields are written as <space>
  55843.        characters.  If any fields are their particular maximum number of
  55844.        characters in length, there will be no separation between the
  55845.        fields.
  55846.  
  55847.        Objects in the archive are always an even number of bytes long;
  55848.        files that are an odd number of bytes long are padded with a
  55849.        <newline> character, although the size in the header does not
  55850.        reflect this.
  55851.  
  55852.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  55853.  
  55854.  The ar utility description requires that (when all its members are valid
  55855.  object files) ar produce an object code library, which the linkage editor
  55856.  can use to extract object modules.  If the linkage editor needs a symbol
  55857.  table to permit random access to the archive, ar must provide it;
  55858.  however, ar does not require a symbol table.  The historical -m and -q
  55859.  positioning options were omitted, as were the positioning modifiers
  55860.  formerly associated with the -m and -r options, because the two functions
  55861.  of positioning are handled by the ranlib-style (a utility found on some    1
  55862.  historical systems to create symbol tables within the archive) symbol      1
  55863.  tables and/or the ability of portable applications to create multiple
  55864.  archives instead of loading from a single archive.
  55865.  
  55866.  Earlier drafts had elaborate descriptions in the Asynchronous Events
  55867.  subclause about how signals were caught and then resent to itself.  These
  55868.  were removed in favor of the default case because they are essentially
  55869.  implementation details, unnecessary for the application.  Similarly,
  55870.  information about where (and if) temporary files are created was removed
  55871.  from earlier drafts.
  55872.  
  55873.  The BSD -o option was omitted.  It is a rare portable application that
  55874.  will use ar to extract object code from a library with concern for its
  55875.  modification time, since this can only be of importance to make.  Hence,
  55876.  since this functionality is not deemed important for applications
  55877.  portability, the modification time of the extracted files is set to the
  55878.  current time.
  55879.  
  55880.  There is at least one known implementation (for a small computer) that
  55881.  can accommodate only object files for that system, disallowing mixed
  55882.  object and other files.  The ability to handle any type of file is not
  55883.  only existing practice for most implementations, but is also a reasonable
  55884.  expectation.
  55885.  
  55886.  Consideration was given to changing the output format of ar -tv to the
  55887.  same format as the output of ls -l.  This would have made parsing the
  55888.  output of ar the same as that of ls.  This was rejected in part because
  55889.  the current ar format is commonly used and changes would break existing
  55890.  usage.  Second, ar gives the user ID and group ID in numeric format
  55891.  
  55892.  
  55893.                Copyright c 1991 IEEE.  All rights reserved.
  55894.       This is an unapproved IEEE Standards Draft, subject to change.
  55895.  
  55896.  
  55897.  
  55898.  
  55899.  
  55900.  6.1 ar - Create and maintain library archives                         817
  55901.  
  55902.  
  55903.  
  55904.  
  55905.  
  55906.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  55907.  
  55908.  separated by a slash.  Changing this to be the user name and group name
  55909.  would not be right if the archive were moved to a machine that contained
  55910.  a different user database.  Since ar cannot know whether the archive file
  55911.  was generated on the same machine, it cannot tell what to report.
  55912.  
  55913.  The text on the -ur option combination is historical practice--since one
  55914.  filename can easily represent two different files (e.g., /a/foo and
  55915.  /b/foo), it is reasonable to replace the member in the archive even when
  55916.  the modification time in the archive is identical to that in the file
  55917.  system.
  55918.  
  55919.  END_RATIONALE
  55920.  
  55921.  
  55922.  
  55923.  6.2  make - Maintain, update, and regenerate groups of programs
  55924.  
  55925.  
  55926.  6.2.1  Synopsis
  55927.  
  55928.  make  [-einpqrst] [-f _m_a_k_e_f_i_l_e] ...  [ -k | -S ] [_m_a_c_r_o=_n_a_m_e] ...
  55929.        [_t_a_r_g_e_t__n_a_m_e ...]
  55930.  
  55931.  
  55932.  6.2.2  Description
  55933.  
  55934.  The make utility can be used as a part of software development to update   1
  55935.  files that are derived from other files.  A typical case is one where      1
  55936.  object files are derived from the corresponding source files.  The make    1
  55937.  utility examines time relationships and updates those derived files        1
  55938.  (called targets) that have modified times earlier than the modified times  1
  55939.  of the files (called prerequisites) from which they are derived.  A        1
  55940.  description file (``makefile'') contains a description of the              1
  55941.  relationships between files, and the commands that must be executed to     1
  55942.  update the targets to reflect changes in their prerequisites.  Each        1
  55943.  specification, or rule, shall consist of a target, optional                1
  55944.  prerequisites, and optional commands to be executed when a prerequisite
  55945.  is newer than the target.  There are two types of rules:
  55946.  
  55947.      - Inference rules, which have one target name with at least one
  55948.        period (.) and no slash (/)
  55949.  
  55950.      - Target rules, which can have more than one target name
  55951.  
  55952.  In addition, make shall have a collection of built-in macros and
  55953.  inference rules that infer prerequisite relationships to simplify
  55954.  maintenance of programs.
  55955.  
  55956.  
  55957.  
  55958.  
  55959.                Copyright c 1991 IEEE.  All rights reserved.
  55960.       This is an unapproved IEEE Standards Draft, subject to change.
  55961.  
  55962.  
  55963.  
  55964.  
  55965.  
  55966.  818                               6 Software Development Utilities Option
  55967.  
  55968.  
  55969.  
  55970.  
  55971.  
  55972.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  55973.  
  55974.  To receive exactly the behavior described in this clause, a portable
  55975.  makefile shall:
  55976.  
  55977.      - Include the special target .POSIX (see 6.2.7.3)
  55978.  
  55979.      - Omit any special target reserved for implementations (a leading
  55980.        period followed by uppercase letters) that has not been specified
  55981.        by this clause.
  55982.  
  55983.  The behavior of make is unspecified if either or both of these conditions  1
  55984.  are not met.                                                               1
  55985.  
  55986.  
  55987.  6.2.3  Options
  55988.  
  55989.  The make utility shall conform to the utility argument syntax guidelines
  55990.  described in 2.10.2.
  55991.  
  55992.  The following options shall be supported by the implementation:
  55993.  
  55994.     -e          Cause environment variables, including those with null
  55995.                 values, to override macro assignments within makefiles.
  55996.  
  55997.     -f _m_a_k_e_f_i_l_e Specify a different makefile.  The argument _m_a_k_e_f_i_l_e is a
  55998.                 pathname of a description file, which is also referred to
  55999.                 as the _m_a_k_e_f_i_l_e. A pathname of "-" shall denote the
  56000.                 standard input.  There can be multiple instances of this
  56001.                 option, and they shall be processed in the order
  56002.                 specified.  The effect of specifying the same option-
  56003.                 argument more than once is unspecified.  See 6.2.7.1.
  56004.  
  56005.     -i          Ignore error codes returned by invoked commands.  This
  56006.                 mode is the same as if the special target .IGNORE were
  56007.                 specified without prerequisites.  See 6.2.7.2.              1
  56008.  
  56009.     -k          Continue to update other targets that do not depend on the
  56010.                 current target if a nonignored error occurs while
  56011.                 executing the commands to bring a target up to date.
  56012.  
  56013.     -n          Write commands that would be executed on standard output,
  56014.                 but do not execute them.  However, lines with a plus-sign
  56015.                 (+) prefix shall be executed.  In this mode, lines with an
  56016.                 at-sign (@) character prefix shall be written to standard
  56017.                 output.
  56018.  
  56019.     -p          Write to standard output the complete set of macro
  56020.                 definitions and target descriptions.  The output format is
  56021.                 unspecified.
  56022.  
  56023.  
  56024.  
  56025.                Copyright c 1991 IEEE.  All rights reserved.
  56026.       This is an unapproved IEEE Standards Draft, subject to change.
  56027.  
  56028.  
  56029.  
  56030.  
  56031.  
  56032.  6.2 make - Maintain, update, and regenerate groups of programs        819
  56033.  
  56034.  
  56035.  
  56036.  
  56037.  
  56038.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  56039.  
  56040.     -q          Return a zero exit value if the target file is up-to-date;
  56041.                 otherwise, return an exit value of 1.  Targets shall not
  56042.                 be updated if this option is specified.  However, a
  56043.                 command line (associated with the targets) with a plus-
  56044.                 sign (+) prefix shall be executed.
  56045.  
  56046.     -r          Clear the suffix list and do not use the built-in rules.
  56047.  
  56048.     -S          Terminate make if an error occurs while executing the
  56049.                 commands to bring a target up-to-date.  This shall be the
  56050.                 default and the opposite of -k.
  56051.  
  56052.     -s          Do not write command lines or touch messages (see -t) to
  56053.                 standard output before executing.  This mode shall be the
  56054.                 same as if the special target .SILENT were specified        1
  56055.                 without prerequisites.  See 6.2.7.2.                        1
  56056.  
  56057.     -t          Update the modification time of each target as though a
  56058.                 touch _t_a_r_g_e_t had been executed.  See touch in 4.63.         1
  56059.                 Targets that have prerequisites but no commands (see        1
  56060.                 6.2.7.3), or that are already up-to-date, shall not be      1
  56061.                 touched in this manner.  Write messages to standard output  1
  56062.                 for each target file indicating the name of the file and
  56063.                 that it was touched.  Normally, the command lines
  56064.                 associated with each target are not executed.  However, a
  56065.                 command line with a plus-sign (+) prefix shall be
  56066.                 executed.
  56067.  
  56068.  If the -k and -S options are both specified on the command line, by the
  56069.  MAKEFLAGS environment variable, or by the MAKEFLAGS macro, the last one
  56070.  evaluated shall take precedence.  The MAKEFLAGS environment variable
  56071.  shall be evaluated first and the command line shall be evaluated second.
  56072.  Assignments to the MAKEFLAGS macro shall be evaluated as described in
  56073.  6.2.5.3.
  56074.  
  56075.  
  56076.  6.2.4  Operands
  56077.  
  56078.  The following operands shall be supported by the implementation:
  56079.  
  56080.     _t_a_r_g_e_t__n_a_m_e    Target names, as defined in 6.2.7.  If no target is
  56081.                    specified, while make is processing the makefiles, the
  56082.                    first target that make encounters that is not a special
  56083.                    target or an inference rule shall be used.
  56084.  
  56085.     _m_a_c_r_o=_n_a_m_e     Macro definitions, as defined in 6.2.7.4.
  56086.  
  56087.  If the _t_a_r_g_e_t__n_a_m_e and _m_a_c_r_o=_n_a_m_e operands are intermixed on the command
  56088.  line, the results are unspecified.
  56089.  
  56090.  
  56091.                Copyright c 1991 IEEE.  All rights reserved.
  56092.       This is an unapproved IEEE Standards Draft, subject to change.
  56093.  
  56094.  
  56095.  
  56096.  
  56097.  
  56098.  820                               6 Software Development Utilities Option
  56099.  
  56100.  
  56101.  
  56102.  
  56103.  
  56104.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  56105.  
  56106.  6.2.5  External Influences
  56107.  
  56108.  
  56109.  6.2.5.1  Standard Input
  56110.  
  56111.  The standard input shall be used only if the _m_a_k_e_f_i_l_e option-argument is
  56112.  -.  See Input Files.
  56113.  
  56114.  6.2.5.2  Input Files
  56115.  
  56116.  The input file, otherwise known as the makefile, is a text file
  56117.  containing rules, macro definitions, and comments.  (See 6.2.7.)           1
  56118.  
  56119.  
  56120.  6.2.5.3  Environment Variables
  56121.  
  56122.  The following environment variables shall affect the execution of make:
  56123.  
  56124.     LANG               This variable shall determine the locale to use for
  56125.                        the locale categories when both LC_ALL and the
  56126.                        corresponding environment variable (beginning with
  56127.                        LC_) do not specify a locale.  See 2.6.
  56128.  
  56129.     LC_ALL             This variable shall determine the locale to be used
  56130.                        to override any values for locale categories
  56131.                        specified by the settings of LANG or any
  56132.                        environment variables beginning with LC_.
  56133.  
  56134.     LC_CTYPE           This variable shall determine the locale for the
  56135.                        interpretation of sequences of bytes of text data
  56136.                        as characters (e.g., single- versus multibyte
  56137.                        characters in arguments and input files).
  56138.  
  56139.     LC_MESSAGES        This variable shall determine the language in which
  56140.                        messages should be written.
  56141.  
  56142.     MAKEFLAGS          This variable shall be interpreted as a character
  56143.                        string representing a series of option characters
  56144.                        to be used as the default options.  The
  56145.                        implementation shall accept both of the following
  56146.                        formats (but need not accept them when intermixed):
  56147.  
  56148.                         (1)  The characters are option letters without the
  56149.                              leading hyphens or <blank> separation used on
  56150.                              a command line.
  56151.  
  56152.                         (2)  The characters are formatted in a manner
  56153.                              similar to a portion of the make command
  56154.                              line:  options are preceded by hyphens and
  56155.                              <blank>-separated as described in 2.10.2.
  56156.  
  56157.                Copyright c 1991 IEEE.  All rights reserved.
  56158.       This is an unapproved IEEE Standards Draft, subject to change.
  56159.  
  56160.  
  56161.  
  56162.  
  56163.  
  56164.  6.2 make - Maintain, update, and regenerate groups of programs        821
  56165.  
  56166.  
  56167.  
  56168.  
  56169.  
  56170.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  56171.  
  56172.                              The _m_a_c_r_o=_n_a_m_e macro definition operands can
  56173.                              also be included.  The difference between the
  56174.                              contents of MAKEFLAGS and the command line is
  56175.                              that the contents of the variable shall not
  56176.                              be subjected to the word expansions (see 3.6)
  56177.                              associated with parsing the command line
  56178.                              values.
  56179.  
  56180.                        When the command-line options -f or -p are used,     1
  56181.                        they shall take effect regardless of whether they    1
  56182.                        also appear in MAKEFLAGS.  If they otherwise appear  1
  56183.                        in MAKEFLAGS, the result is undefined.               1
  56184.  
  56185.                        The MAKEFLAGS variable shall be accessed from the
  56186.                        environment before the makefile is read.  At that
  56187.                        time, all of the options (except -f and -p) and
  56188.                        command-line macros not already included in
  56189.                        MAKEFLAGS shall be added to the MAKEFLAGS macro.
  56190.                        The MAKEFLAGS macro shall be passed into the
  56191.                        environment as an environment variable for all
  56192.                        child processes.  If the MAKEFLAGS macro is
  56193.                        subsequently set by the makefile, it shall replace
  56194.                        the MAKEFLAGS variable currently found in the
  56195.                        environment.
  56196.  
  56197.  The value of the SHELL environment variable shall not be used as a macro
  56198.  and shall not be modified by defining the SHELL macro in a makefile or on  1
  56199.  the command line.  All other environment variables, including those with   1
  56200.  null values, shall be used as macros, as defined in 6.2.7.4.
  56201.  
  56202.  
  56203.  6.2.5.4  Asynchronous Events
  56204.  
  56205.  If not already ignored, make shall trap SIGHUP, SIGTERM, SIGINT, and
  56206.  SIGQUIT and remove the current target unless the target is a directory or
  56207.  the target is a prerequisite of the special target .PRECIOUS or unless
  56208.  one of the -n, -p, or -q options was specified.  Any targets removed in
  56209.  this manner shall be reported in diagnostic messages of unspecified
  56210.  format, written to standard error.  After this cleanup process, if any,    1
  56211.  make shall take the standard action for all other signals; see 2.11.5.4.   1
  56212.  
  56213.  
  56214.  6.2.6  External Effects
  56215.  
  56216.  
  56217.  
  56218.  
  56219.  
  56220.  
  56221.  
  56222.  
  56223.                Copyright c 1991 IEEE.  All rights reserved.
  56224.       This is an unapproved IEEE Standards Draft, subject to change.
  56225.  
  56226.  
  56227.  
  56228.  
  56229.  
  56230.  822                               6 Software Development Utilities Option
  56231.  
  56232.  
  56233.  
  56234.  
  56235.  
  56236.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  56237.  
  56238.  6.2.6.1  Standard Output
  56239.  
  56240.  The make utility shall write all commands to be executed to standard
  56241.  output unless the -s option was specified, the command is prefixed with
  56242.  an at-sign, or the special target .SILENT has either the current target
  56243.  as a prerequisite or has no prerequisites.  If make is invoked without
  56244.  any work needing to be done, it shall write a message to standard output
  56245.  indicating that no action was taken.
  56246.  
  56247.  
  56248.  6.2.6.2  Standard Error
  56249.  
  56250.  Used only for diagnostic messages.
  56251.  
  56252.  6.2.6.3  Output Files
  56253.  
  56254.  None.  However, utilities invoked by make may create additional files.
  56255.  
  56256.  
  56257.  6.2.7  Extended Description
  56258.  
  56259.  The make utility attempts to perform the actions required to ensure that
  56260.  the specified target(s) are up-to-date.  A target is considered out-of-
  56261.  date if it is older than any of its prerequisites or if it does not
  56262.  exist.  The make utility shall treat all prerequisites as targets
  56263.  themselves and recursively ensure that they are up-to-date, processing     1
  56264.  them in the order in which they appear in the rule.  The make utility      1
  56265.  shall use the modification times of files to determine if the              1
  56266.  corresponding targets are out-of-date.  (See 2.9.1.6.)                     1
  56267.  
  56268.  After make has ensured that all of the prerequisites of a target are up-
  56269.  to-date, and if the target is out-of-date, the commands associated with
  56270.  the target entry shall be executed.  If there are no commands listed for
  56271.  the target, the target shall be treated as up-to-date.
  56272.  
  56273.  
  56274.  6.2.7.1  Makefile Syntax
  56275.  
  56276.  A makefile can contain rules, macro definitions (see 6.2.7.4), and         1
  56277.  comments.  There are two kinds of rules:  inference rules (6.2.7.5) and    1
  56278.  target rules (6.2.7.3).  The make utility shall contain a set of built-in  1
  56279.  inference rules.  If the -r option is present, the built-in rules shall    1
  56280.  not be used and the suffix list shall be cleared.  Additional rules of     1
  56281.  both types can be specified in a makefile.  If a rule or macro is defined  1
  56282.  more than once, the value of the rule or macro shall be that of the last   1
  56283.  one specified.  Comments start with a number-sign (#) and continue until   1
  56284.  an unescaped <newline> is reached.                                         1
  56285.  
  56286.  
  56287.  
  56288.  
  56289.                Copyright c 1991 IEEE.  All rights reserved.
  56290.       This is an unapproved IEEE Standards Draft, subject to change.
  56291.  
  56292.  
  56293.  
  56294.  
  56295.  
  56296.  6.2 make - Maintain, update, and regenerate groups of programs        823
  56297.  
  56298.  
  56299.  
  56300.  
  56301.  
  56302.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  56303.  
  56304.  By default, the file ./makefile shall be used.  If ./makefile is not       1
  56305.  found, the file ./Makefile shall be tried.  If neither ./makefile nor      1
  56306.  ./Makefile are found, other implementation-defined pathnames may also be   1
  56307.  tried.                                                                     1
  56308.  
  56309.  The -f option shall direct make to ignore ./makefile and ./Makefile (and
  56310.  any implementation-defined variants) and use the specified argument as a
  56311.  makefile instead.  If the - argument is specified, standard input shall
  56312.  be used.
  56313.  
  56314.  The term _m_a_k_e_f_i_l_e is used to refer to any rules provided by the user
  56315.  whether in ./makefile, ./Makefile, or specified by the -f option.
  56316.  
  56317.  The rules in makefiles shall consist of the following types of lines:
  56318.  target rules, including special targets (see 6.2.7.3); inference rules
  56319.  (see 6.2.7.5); macro definitions (see 6.2.7.4); empty lines; and           1
  56320.  comments.  Comments start with a number sign (#) and continue until an
  56321.  unescaped <newline> is reached.
  56322.  
  56323.  When an escaped <newline> (one preceded by a backslash) is found anywhere
  56324.  in the makefile, it shall be replaced, along with any leading white space  1
  56325.  on the following line, with a single <space>.                              1
  56326.  
  56327.  
  56328.  6.2.7.2  Makefile Execution
  56329.  
  56330.  Command lines shall be processed one at a time by writing the command
  56331.  line to the standard output (unless one of the conditions listed below     1
  56332.  under ``@'' suppresses the writing) and executing the command(s) in the    1
  56333.  line.  A <tab> character may precede the command to standard output.
  56334.  Commands shall be executed by passing the command line to the command
  56335.  interpreter in the same manner as if the string were the argument to the
  56336.  function in 7.1.1 [such as the _s_y_s_t_e_m() function in the C binding].
  56337.  
  56338.  The environment for the command being executed shall contain all of the    1
  56339.  variables in the environment of make.  The macros from the command line    1
  56340.  to make shall be added to make'_s environment.  Other implementation-       1
  56341.  defined variables may also be added to make'_s environment.  If any         1
  56342.  command-line macro has been defined elsewhere, the command-line value      1
  56343.  shall overwrite the existing value.  If the MAKEFLAGS variable is not set  1
  56344.  in the environment in which make was invoked, in the makefile, or on the   1
  56345.  command line, it shall be created by make, and shall contain all options   1
  56346.  specified on the command line except for the -f and -p options.  It may    1
  56347.  also contain implementation-defined options.                               1
  56348.  
  56349.  By default, when make receives a nonzero status from the execution of a
  56350.  command, it terminates with an error message to standard error.
  56351.  
  56352.  
  56353.  
  56354.  
  56355.                Copyright c 1991 IEEE.  All rights reserved.
  56356.       This is an unapproved IEEE Standards Draft, subject to change.
  56357.  
  56358.  
  56359.  
  56360.  
  56361.  
  56362.  824                               6 Software Development Utilities Option
  56363.  
  56364.  
  56365.  
  56366.  
  56367.  
  56368.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  56369.  
  56370.  Command lines can have one or more of the following prefixes:  a hyphen
  56371.  (-), an at-sign (@), or a plus-sign (+).  These modify the way in which
  56372.  make processes the command.  When a command is written to standard
  56373.  output, the prefix shall not be included in the output.
  56374.  
  56375.     -  If the command prefix contains a hyphen, or the -i option is
  56376.        present, or the special target .IGNORE has either the current
  56377.        target as a prerequisite or has no prerequisites, any error found
  56378.        while executing the command shall be ignored.
  56379.  
  56380.     @  If the command prefix contains an at-sign and the command-line -n    1
  56381.        option is not specified, or the -s option is present, or the         1
  56382.        special target .SILENT has either the current target as a
  56383.        prerequisite or has no prerequisites, the command shall not be
  56384.        written to standard output before it is executed.
  56385.  
  56386.     +  If the command prefix contains a plus-sign, this indicates a
  56387.        command line that shall be executed even if -n, -q, or -t is
  56388.        specified.
  56389.  
  56390.  
  56391.  6.2.7.3  Target Rules
  56392.  
  56393.  Target rules are formatted as follows:
  56394.  
  56395.        _t_a_r_g_e_t [_t_a_r_g_e_t ...]: [_p_r_e_r_e_q_u_i_s_i_t_e ...][;_c_o_m_m_a_n_d]                    1
  56396.        [<tab>_c_o_m_m_a_n_d                                                        1
  56397.        <tab>_c_o_m_m_a_n_d                                                         1
  56398.        ...]                                                                 1
  56399.  
  56400.        (_l_i_n_e _t_h_a_t _d_o_e_s _n_o_t _b_e_g_i_n _w_i_t_h <_t_a_b>)                                1
  56401.  
  56402.  Target entries are specified by a <blank>-separated, nonnull list of
  56403.  targets, then a colon, then a <blank>-separated, possibly empty list of
  56404.  prerequisites.  Text following a semicolon, if any, and all following      1
  56405.  lines that begin with a <tab>, are command lines to be executed to update  1
  56406.  the target.  The first nonempty line that does not begin with a <tab> or   1
  56407.  # shall begin a new entry.  An empty or blank line, or a line beginning    1
  56408.  with #, may begin a new entry.                                             1
  56409.  
  56410.  Applications shall select target names from the set of characters
  56411.  consisting solely of periods, underscores, digits, and alphabetics from
  56412.  the portable character set (see 2.4).  Implementations may allow other
  56413.  characters in target names as extensions.  The interpretation of targets   1
  56414.  containing the characters ``%'' and ``"'' is implementation defined.       1
  56415.  
  56416.  A target that has prerequisites, but does not have any commands, can be
  56417.  used to add to the prerequisite list for that target.  Only one target
  56418.  rule for any given target can contain commands.
  56419.  
  56420.  
  56421.                Copyright c 1991 IEEE.  All rights reserved.
  56422.       This is an unapproved IEEE Standards Draft, subject to change.
  56423.  
  56424.  
  56425.  
  56426.  
  56427.  
  56428.  6.2 make - Maintain, update, and regenerate groups of programs        825
  56429.  
  56430.  
  56431.  
  56432.  
  56433.  
  56434.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  56435.  
  56436.  Lines that begin with one of the following are called _s_p_e_c_i_a_l _t_a_r_g_e_t_s and
  56437.  control the operation of make:
  56438.  
  56439.     .DEFAULT    If the makefile uses this special target, it shall be
  56440.                 specified with commands, but without prerequisites.  The
  56441.                 commands shall be used by make if there are no other rules
  56442.                 available to build a target.
  56443.  
  56444.     .IGNORE     Prerequisites of this special target are targets
  56445.                 themselves; this shall cause errors from commands
  56446.                 associated with them to be ignored in the same manner as
  56447.                 specified by the -i option.  Subsequent occurrences of
  56448.                 .IGNORE shall add to the list of targets ignoring command
  56449.                 errors.  If no prerequisites are specified, make shall
  56450.                 behave as if the -i option had been specified and errors
  56451.                 from all commands associated with all targets shall be
  56452.                 ignored.
  56453.  
  56454.     .POSIX      This special target shall be specified without
  56455.                 prerequisites or commands.  If it appears before the first
  56456.                 noncomment line in the makefile, make shall process the
  56457.                 makefile as specified by this clause; otherwise, the
  56458.                 behavior of make is unspecified.
  56459.  
  56460.     .PRECIOUS   Prerequisites of this special target shall not be removed
  56461.                 if make receives one of the asynchronous events explicitly
  56462.                 described in 6.2.5.4.  Subsequent occurrences of .PRECIOUS
  56463.                 shall add to the list of precious files.  If no
  56464.                 prerequisites are specified, all targets in the makefile
  56465.                 shall be treated as if specified with .PRECIOUS.
  56466.  
  56467.     .SILENT     Prerequisites of this special target are targets
  56468.                 themselves; this shall cause commands associated with them
  56469.                 to not be written to the standard output before they are
  56470.                 executed.  Subsequent occurrences of .SILENT shall add to
  56471.                 the list of targets with silent commands.  If no
  56472.                 prerequisites are specified, make shall behave as if the
  56473.                 -s option had been specified and no commands or touch
  56474.                 messages associated with any target shall be written to
  56475.                 standard output.
  56476.  
  56477.     .SUFFIXES   Prerequisites of .SUFFIXES shall be appended to the list
  56478.                 of known suffixes and are used in conjunction with the
  56479.                 inference rules (see 6.2.7.5).  If .SUFFIXES does not have
  56480.                 any prerequisites, the list of known suffixes shall be
  56481.                 cleared.  Makefiles shall not associate commands with
  56482.                 .SUFFIXES.
  56483.  
  56484.  
  56485.  
  56486.  
  56487.                Copyright c 1991 IEEE.  All rights reserved.
  56488.       This is an unapproved IEEE Standards Draft, subject to change.
  56489.  
  56490.  
  56491.  
  56492.  
  56493.  
  56494.  826                               6 Software Development Utilities Option
  56495.  
  56496.  
  56497.  
  56498.  
  56499.  
  56500.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  56501.  
  56502.  Targets with names consisting of a leading period followed by the
  56503.  uppercase letters POSIX and then any other characters are reserved for
  56504.  future standardization.  Targets with names consisting of a leading
  56505.  period followed by one or more uppercase letters are reserved for
  56506.  implementation extensions.
  56507.  
  56508.  
  56509.  6.2.7.4  Macros
  56510.  
  56511.  Macro definitions are in the form:
  56512.  
  56513.        _s_t_r_i_n_g_1 = [_s_t_r_i_n_g_2]                                                  1
  56514.  
  56515.  The macro named _s_t_r_i_n_g_1 is defined as having the value of _s_t_r_i_n_g_2, where
  56516.  _s_t_r_i_n_g_2 is defined as all characters, if any, after the equals-sign, up    1
  56517.  to a comment character (#) or an unescaped <newline> character.  Any
  56518.  <blank>s immediately before or after the equals-sign shall be ignored.
  56519.  
  56520.  Subsequent appearances of $(_s_t_r_i_n_g_1) or ${_s_t_r_i_n_g_1} shall be replaced by
  56521.  _s_t_r_i_n_g_2. The parentheses or braces are optional if _s_t_r_i_n_g_1 is a single
  56522.  character.  The macro $$ shall be replaced by the single character $.
  56523.  
  56524.  Applications shall select macro names from the set of characters           2
  56525.  consisting solely of periods, underscores, digits, and alphabetics from    2
  56526.  the portable character set (see 2.4).  A macro name shall not contain an   2
  56527.  equals-sign.  Implementations may allow other characters in macro names    2
  56528.  as extensions.                                                             2
  56529.  
  56530.  Macros can appear anywhere in the makefile.  Macros in target lines shall
  56531.  be evaluated when the target line is read.  Macros in command lines shall
  56532.  be evaluated when the command is executed.  Macros in macro definition
  56533.  lines shall not be evaluated until the new macro being defined is used in
  56534.  a rule or command.  A macro that has not been defined shall evaluate to a
  56535.  null string without causing any error condition.
  56536.  
  56537.  The forms $(_s_t_r_i_n_g_1[:_s_u_b_s_t_1=[_s_u_b_s_t_2]]) or ${_s_t_r_i_n_g_1[:_s_u_b_s_t_1=[_s_u_b_s_t_2]]}
  56538.  can be used to replace all occurrences of _s_u_b_s_t_1 with _s_u_b_s_t_2 when the      2
  56539.  macro substitution is performed.  The _s_u_b_s_t_1 to be replaced shall be
  56540.  recognized when it is a suffix at the end of a word in _s_t_r_i_n_g_1 (where a
  56541.  ``word,'' in this context, is defined to be a string delimited by the
  56542.  beginning of the line, a <blank>, or a <newline>).
  56543.  
  56544.  Macro assignments shall be accepted from the sources listed below, in the
  56545.  order shown.  If a macro name already exists at the time it is being
  56546.  processed, the newer definition shall replace the existing definition.
  56547.  
  56548.      (1)  Macros defined in make's built-in inference rules.
  56549.  
  56550.  
  56551.  
  56552.  
  56553.                Copyright c 1991 IEEE.  All rights reserved.
  56554.       This is an unapproved IEEE Standards Draft, subject to change.
  56555.  
  56556.  
  56557.  
  56558.  
  56559.  
  56560.  6.2 make - Maintain, update, and regenerate groups of programs        827
  56561.  
  56562.  
  56563.  
  56564.  
  56565.  
  56566.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  56567.  
  56568.      (2)  The contents of the environment, including the variables with
  56569.           null values, in the order defined in the environment.
  56570.  
  56571.      (3)  Macros defined in the makefile(s), processed in the order
  56572.           specified.
  56573.  
  56574.      (4)  Macros specified on the command line.  It is unspecified whether
  56575.           the internal macros defined in 6.2.7.7 are accepted from the
  56576.           command line.
  56577.  
  56578.  If the -e option is specified, the order of processing sources (2) and
  56579.  (3) shall be reversed.
  56580.  
  56581.  The SHELL macro shall be treated specially.  It shall be provided by make
  56582.  and set to the pathname of the shell command language interpreter (see sh
  56583.  in 4.56).  The SHELL environment variable shall not affect the value of
  56584.  the SHELL macro.  If SHELL is defined in the makefile or is specified on
  56585.  the command line, it shall replace the original value of the SHELL macro,
  56586.  but shall not affect the SHELL environment variable.  Other effects of
  56587.  defining SHELL in the makefile or on the command line are implementation
  56588.  defined.
  56589.  
  56590.  
  56591.  6.2.7.5  Inference Rules
  56592.  
  56593.  Inference rules are formatted as follows:
  56594.  
  56595.        _t_a_r_g_e_t:                                                              1
  56596.        <tab>_c_o_m_m_a_n_d                                                         1
  56597.        [<tab>_c_o_m_m_a_n_d]                                                       1
  56598.        ...
  56599.  
  56600.        (_l_i_n_e _t_h_a_t _d_o_e_s _n_o_t _b_e_g_i_n _w_i_t_h <_t_a_b> _o_r #)
  56601.  
  56602.  The _t_a_r_g_e_t portion shall be a valid target name (see 6.2.7.3) and shall    2
  56603.  be of the form ._s_2 or ._s_1._s_2 (where ._s_1 and ._s_2 are suffixes that have     2
  56604.  been given as prerequisites of the .SUFFIXES special target and _s_1 and _s_2  2
  56605.  do not contain any slashes or periods.)  If there is only one period in    2
  56606.  the target, it is a single-suffix inference rule.  Targets with two
  56607.  periods are double-suffix inference rules.  Inference rules can have only  1
  56608.  one target before the colon.                                               1
  56609.  
  56610.  The makefile shall not specify prerequisites for inference rules; no
  56611.  characters other than white space shall follow the colon in the first
  56612.  line, except when creating the ``empty rule,'' described below.            1
  56613.  Prerequisites are inferred, as described below.                            1
  56614.  
  56615.  Inference rules can be redefined.  A target that matches an existing
  56616.  inference rule shall overwrite the old inference rule.  An ``empty rule''
  56617.  can be created with a command consisting of simply a semicolon (that is,
  56618.  
  56619.                Copyright c 1991 IEEE.  All rights reserved.
  56620.       This is an unapproved IEEE Standards Draft, subject to change.
  56621.  
  56622.  
  56623.  
  56624.  
  56625.  
  56626.  828                               6 Software Development Utilities Option
  56627.  
  56628.  
  56629.  
  56630.  
  56631.  
  56632.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  56633.  
  56634.  the rule still exists and is found during inference rule search, but
  56635.  since it is empty, execution has no effect).  The empty rule also can be
  56636.  formatted as follows:
  56637.  
  56638.        _r_u_l_e: ;
  56639.  
  56640.  where zero or more <blank>s separate the colon and semicolon.              2
  56641.  
  56642.  The make utility uses the suffixes of targets and their prerequisites to
  56643.  infer how a target can be made up-to-date.  A list of inference rules
  56644.  defines the commands to be executed.  By default, make contains a built-
  56645.  in set of inference rules.  Additional rules can be specified in the
  56646.  makefile.
  56647.  
  56648.  The special target .SUFFIXES contains as its prerequisites a list of
  56649.  suffixes that are to be used by the inference rules.  The order in which   1
  56650.  the suffixes are specified defines the order in which the inference rules  1
  56651.  for the suffixes are used.  New suffixes shall be appended to the current
  56652.  list by specifying a .SUFFIXES special target in the makefile.  A
  56653.  .SUFFIXES target with no prerequisites shall clear the list of suffixes.
  56654.  An empty .SUFFIXES target followed by a new .SUFFIXES list is required to
  56655.  change the order of the suffixes.
  56656.  
  56657.  Normally, the user would provide an inference rule for each suffix.  The   1
  56658.  inference rule to update a target with a suffix ._s_1 from a prerequisite    1
  56659.  with a suffix ._s_2 is specified as a target ._s_2._s_1. The internal macros
  56660.  provide the means to specify general inference rules.  (See 6.2.7.7.)      1
  56661.  
  56662.  When no target rule is found to update a target, the inference rules
  56663.  shall be checked.  The suffix of the target (._s_1) to be built is compared
  56664.  to the list of suffixes specified by the .SUFFIXES special targets.  If
  56665.  the ._s_1 suffix is found in .SUFFIXES, the inference rules shall be
  56666.  searched in the order defined for the first ._s_2._s_1 rule whose
  56667.  prerequisite file ($*._s_2) exists.  If the target is out-of-date with
  56668.  respect to this prerequisite, the commands for that inference rule shall
  56669.  be executed.
  56670.  
  56671.  If the target to be built does not contain a suffix and there is no rule
  56672.  for the target, the single suffix inference rules shall be checked.  The
  56673.  single-suffix inference rules define how to build a target if a file is    1
  56674.  found with a name that matches the target name with one of the single      1
  56675.  suffixes appended.  A rule with one suffix ._s_2 is the definition of how    1
  56676.  to build _t_a_r_g_e_t from _t_a_r_g_e_t._s_2. The other suffix (._s_1) is treated as
  56677.  null.
  56678.  
  56679.  
  56680.  
  56681.  
  56682.  
  56683.  
  56684.  
  56685.                Copyright c 1991 IEEE.  All rights reserved.
  56686.       This is an unapproved IEEE Standards Draft, subject to change.
  56687.  
  56688.  
  56689.  
  56690.  
  56691.  
  56692.  6.2 make - Maintain, update, and regenerate groups of programs        829
  56693.  
  56694.  
  56695.  
  56696.  
  56697.  
  56698.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  56699.  
  56700.  6.2.7.6  Libraries
  56701.  
  56702.  If a target or prerequisite contains parentheses, it shall be treated as
  56703.  a member of an archive library.  For the _l_i_b(_m_e_m_b_e_r._o) expression _l_i_b
  56704.  refers to the name of the archive library and _m_e_m_b_e_r.o to the member
  56705.  name.  The member shall be an object file with the .o suffix.  The
  56706.  modification time of the expression is the modification time for the
  56707.  member as kept in the archive library.  See 6.1.  The .a suffix refers to
  56708.  an archive library.  The ._s_2.a rule is used to update a member in the
  56709.  library from a file with a suffix ._s_2.
  56710.  
  56711.  
  56712.  6.2.7.7  Internal Macros
  56713.  
  56714.  The make utility shall maintain five internal macros that can be used in   1
  56715.  target and inference rules.  In order to clearly define the meaning of     1
  56716.  these macros, some clarification of the terms ``target rule,''             1
  56717.  ``inference rule,'' ``target,'' and ``prerequisite'' is necessary.         1
  56718.  
  56719.  Target rules are specified by the user in a makefile for a particular      1
  56720.  target.  Inference rules are user- or make-specified rules for a           1
  56721.  particular class of target names.  Explicit prerequisites are those        1
  56722.  prerequisites specified in a makefile on target lines.  Implicit           1
  56723.  prerequisites are those prerequisites that are generated when inference    1
  56724.  rules are used.  Inference rules are applied to implicit prerequisites or  1
  56725.  to explicit prerequisites that do not have target rules defined for them   1
  56726.  in the makefile.  Target rules are applied to targets specified in the     1
  56727.  makefile.                                                                  1
  56728.  
  56729.  Before any target in the makefile is updated, each of its prerequisites    1
  56730.  (both explicit and implicit) shall be updated.  This shall be              1
  56731.  accomplished by recursively processing each prerequisite.  Upon            1
  56732.  recursion, each prequisite shall become a target itself.  Its              1
  56733.  prerequisites in turn shall be processed recursively until a target is     1
  56734.  found that has no prerequisites, at which point the recursion shall stop.  1
  56735.  The recursion then shall back up, updating each target as it goes.         1
  56736.  
  56737.  In the definitions that follow, the word ``target'' refers to one of:      1
  56738.  
  56739.      - A target specified in the makefile,                                  1
  56740.  
  56741.      - An explicit prerequisite specified in the makefile that becomes the  1
  56742.        target when make processes it during recursion, or                   1
  56743.  
  56744.      - An implicit prerequisite that becomes a target when make processes   1
  56745.        it during recursion.                                                 1
  56746.  
  56747.  In the definitions that follow, the word ``prerequisite'' refers to        1
  56748.  either:                                                                    1
  56749.  
  56750.  
  56751.                Copyright c 1991 IEEE.  All rights reserved.
  56752.       This is an unapproved IEEE Standards Draft, subject to change.
  56753.  
  56754.  
  56755.  
  56756.  
  56757.  
  56758.  830                               6 Software Development Utilities Option
  56759.  
  56760.  
  56761.  
  56762.  
  56763.  
  56764.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  56765.  
  56766.      - An explicit prerequisite specified in the makefile for a particular  1
  56767.        target, or                                                           1
  56768.  
  56769.      - An implicit prerequisite generated as a result of locating an        1
  56770.        appropriate inference rule and corresponding file that matches the   1
  56771.        suffix of the target.                                                1
  56772.  
  56773.  The five internal macros are:                                              1
  56774.  
  56775.     $@    The $@ macro shall evaluate to the full target name of the        1
  56776.           current target, or the archive filename part of a library         1
  56777.           archive target.  It shall be evaluated for both target and        1
  56778.           inference rules.                                                  1
  56779.  
  56780.           For example, in the .c.a inference rule, $@ represents the out-   1
  56781.           of-date .a file to be built.  Similarly, in a makefile target     1
  56782.           rule to build lib.a from file.c, $@ represents the out-of-date    1
  56783.           lib.a.                                                            1
  56784.  
  56785.     $%    The $% macro shall be evaluated only when the current target is   1
  56786.           an archive library member of the form _l_i_b_n_a_m_e(_m_e_m_b_e_r.o).  In      1
  56787.           these cases, $@ shall evaluate to _l_i_b_n_a_m_e and $% shall evaluate   1
  56788.           to _m_e_m_b_e_r.o.  The $% macro shall be evaluated for both target     1
  56789.           and inference rules.                                              1
  56790.  
  56791.           For example, in a makefile target rule to build lib.a(file.o),    1
  56792.           $% represents file.o--as opposed to $@, which represents lib.a.   1
  56793.  
  56794.     $?    The $? macro shall evaluate to the list of prerequisites that     1
  56795.           are newer than the current target.  It shall be evaluated for     1
  56796.           both target and inference rules.                                  1
  56797.  
  56798.           For example, in a makefile target rule to build prog from         1
  56799.           file1.o, file2.o, and file3.o, and where prog is not out of date  1
  56800.           with respect to file1.o, but is out of date with respect to       1
  56801.           file2.o and file3.o, $? represents file2.o and file3.o.           1
  56802.  
  56803.     $<    In an inference rule, $< shall evaluate to the file name whose    1
  56804.           existence allowed the inference rule to be chosen for the         1
  56805.           target.  In the .DEFAULT rule, the $< macro shall evaluate to     1
  56806.           the current target name.  The $< macro shall be evaluated only    1
  56807.           for inference rules.                                              1
  56808.  
  56809.           For example, in the .c.a inference rule, $< represents the        1
  56810.           prerequisite .c file.                                             1
  56811.  
  56812.     $*    The $* macro shall evaluate to the current target name with its   1
  56813.           suffix deleted.  It shall be evaluated at least for inference     2
  56814.           rules.                                                            2
  56815.  
  56816.  
  56817.                Copyright c 1991 IEEE.  All rights reserved.
  56818.       This is an unapproved IEEE Standards Draft, subject to change.
  56819.  
  56820.  
  56821.  
  56822.  
  56823.  
  56824.  6.2 make - Maintain, update, and regenerate groups of programs        831
  56825.  
  56826.  
  56827.  
  56828.  
  56829.  
  56830.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  56831.  
  56832.           For example, in the .c.a inference rule, $*.o represents the
  56833.           out-of-date .o file that corresponds to the prerequisite .c
  56834.           file.
  56835.  
  56836.  Each of the internal macros has an alternate form.  When an uppercase D
  56837.  or F is appended to any of the macros, the meaning is changed to the
  56838.  _d_i_r_e_c_t_o_r_y _p_a_r_t for D and _f_i_l_e_n_a_m_e _p_a_r_t for F.  The directory part is the
  56839.  path prefix of the file without a trailing slash; for the current
  56840.  directory, the directory part is ".".  When the $? macro contains more
  56841.  than one prerequisite filename, the $(?D) and $(?F) [or ${?D} and ${?F}]
  56842.  macros expand to a list of directory name parts and filename parts
  56843.  respectively.
  56844.  
  56845.  For the target _l_i_b(_m_e_m_b_e_r._o) and the ._s_2.a rule, the internal macros are
  56846.  defined as:
  56847.  
  56848.     $<    _m_e_m_b_e_r._s_2
  56849.  
  56850.     $*    _m_e_m_b_e_r
  56851.  
  56852.     $@    _l_i_b
  56853.  
  56854.     $?    _m_e_m_b_e_r._s_2
  56855.  
  56856.     $%    _m_e_m_b_e_r._o
  56857.  
  56858.  
  56859.  6.2.7.8  Default Rules
  56860.  
  56861.  The default rules for make shall achieve results that are the same as if
  56862.  the following were used.  Implementations that do not support the C
  56863.  Language Development Utilities Option may omit CC, CFLAGS, YACC, YFLAGS,
  56864.  LEX, LFLAGS, LDFLAGS, and the .c, .y, and .l inference rules.
  56865.  Implementations that do not support the FORTRAN Language Development
  56866.  Utilities Option may omit FC, FFLAGS, and the .f inference rules.
  56867.  Implementations may provide additional macros and rules.
  56868.  NOTE:  In a future version of this standard, the default rules may be
  56869.  specified separately from the make clause, such as with the language-
  56870.  dependent development options.
  56871.  
  56872.  
  56873.        _S_U_F_F_I_X_E_S _A_N_D _M_A_C_R_O_S
  56874.  
  56875.        ._S_U_F_F_I_X_E_S: ._o ._c ._y ._l ._a ._s_h ._f                                     _1
  56876.  
  56877.        _M_A_K_E=_m_a_k_e
  56878.        _A_R=_a_r
  56879.        _A_R_F_L_A_G_S=-_r_v
  56880.        _Y_A_C_C=_y_a_c_c
  56881.        _Y_F_L_A_G_S=
  56882.  
  56883.                Copyright c 1991 IEEE.  All rights reserved.
  56884.       This is an unapproved IEEE Standards Draft, subject to change.
  56885.  
  56886.  
  56887.  
  56888.  
  56889.  
  56890.  832                               6 Software Development Utilities Option
  56891.  
  56892.  
  56893.  
  56894.  
  56895.  
  56896.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  56897.  
  56898.        _L_E_X=_l_e_x
  56899.        _L_F_L_A_G_S=
  56900.        _L_D_F_L_A_G_S=
  56901.        _C_C=_c_8_9
  56902.        _C_F_L_A_G_S=-_O
  56903.        _F_C=_f_o_r_t_7_7
  56904.        _F_F_L_A_G_S=-_O _1
  56905.  
  56906.        _S_I_N_G_L_E _S_U_F_F_I_X _R_U_L_E_S
  56907.  
  56908.        ._c:
  56909.                $(_C_C) $(_C_F_L_A_G_S) $(_L_D_F_L_A_G_S) -_o $@ $<
  56910.  
  56911.        ._f:
  56912.                $(_F_C) $(_F_F_L_A_G_S) $(_L_D_F_L_A_G_S) -_o $@ $<
  56913.  
  56914.        ._s_h:
  56915.                _c_p $< $@
  56916.                _c_h_m_o_d _a+_x $@
  56917.  
  56918.        _D_O_U_B_L_E _S_U_F_F_I_X _R_U_L_E_S
  56919.  
  56920.        ._c._o:
  56921.                $(_C_C) $(_C_F_L_A_G_S) -_c $<
  56922.  
  56923.        ._f._o:
  56924.                $(_F_C) $(_F_F_L_A_G_S) -_c $<
  56925.  
  56926.        ._y._o:
  56927.                $(_Y_A_C_C) $(_Y_F_L_A_G_S) $<
  56928.                $(_C_C) $(_C_F_L_A_G_S) -_c _y._t_a_b._c
  56929.                _r_m -_f _y._t_a_b._c                                                _1
  56930.                _m_v _y._t_a_b._o $@
  56931.  
  56932.        ._l._o:
  56933.                $(_L_E_X) $(_L_F_L_A_G_S) $<
  56934.                $(_C_C) $(_C_F_L_A_G_S) -_c _l_e_x._y_y._c
  56935.                _r_m -_f _l_e_x._y_y._c                                               _1
  56936.                _m_v _l_e_x._y_y._o $@
  56937.  
  56938.        ._y._c:
  56939.                $(_Y_A_C_C) $(_Y_F_L_A_G_S) $<
  56940.                _m_v _y._t_a_b._c $@
  56941.  
  56942.        ._l._c:
  56943.                $(_L_E_X) $(_L_F_L_A_G_S) $<
  56944.                _m_v _l_e_x._y_y._c $@
  56945.  
  56946.  
  56947.  
  56948.  
  56949.                Copyright c 1991 IEEE.  All rights reserved.
  56950.       This is an unapproved IEEE Standards Draft, subject to change.
  56951.  
  56952.  
  56953.  
  56954.  
  56955.  
  56956.  6.2 make - Maintain, update, and regenerate groups of programs        833
  56957.  
  56958.  
  56959.  
  56960.  
  56961.  
  56962.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  56963.  
  56964.        ._c._a:
  56965.                $(_C_C) -_c $(_C_F_L_A_G_S) $<
  56966.                $(_A_R) $(_A_R_F_L_A_G_S) $@ $*._o
  56967.                _r_m -_f $*._o
  56968.  
  56969.        ._f._a:
  56970.                $(_F_C) -_c $(_F_F_L_A_G_S) $<
  56971.                $(_A_R) $(_A_R_F_L_A_G_S) $@ $*._o
  56972.                _r_m -_f $*._o
  56973.  
  56974.  
  56975.  6.2.8  Exit Status
  56976.  
  56977.  When the -q option is specified, the make utility shall exit with one of
  56978.  the following values:
  56979.  
  56980.      0    Successful completion.
  56981.  
  56982.      1    The target was not up-to-date.
  56983.  
  56984.     >1    An error occurred.
  56985.  
  56986.  When the -q option is not specified, the make utility shall exit with one
  56987.  of the following values:
  56988.  
  56989.      0    Successful completion.
  56990.  
  56991.     >0    An error occurred.
  56992.  
  56993.  
  56994.  6.2.9  Consequences of Errors
  56995.  
  56996.  Default.
  56997.  
  56998.  BEGIN_RATIONALE
  56999.  
  57000.  
  57001.  6.2.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  57002.  
  57003.  The make provided here is intended to provide the means for changing
  57004.  portable source code into runnable executables on a POSIX.2 system.  It
  57005.  reflects the most common features present in System V and BSD makes.
  57006.  
  57007.  Historically, the make utility has been an especially fertile ground for
  57008.  vendor- and research-organization-specific syntax modifications and
  57009.  extensions.  Examples include:
  57010.  
  57011.      - Syntax supporting parallel execution (Sequent, Cray, GNU, and
  57012.        others)
  57013.  
  57014.  
  57015.                Copyright c 1991 IEEE.  All rights reserved.
  57016.       This is an unapproved IEEE Standards Draft, subject to change.
  57017.  
  57018.  
  57019.  
  57020.  
  57021.  
  57022.  834                               6 Software Development Utilities Option
  57023.  
  57024.  
  57025.  
  57026.  
  57027.  
  57028.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  57029.  
  57030.      - Additional ``operators'' separating targets and their prerequisites
  57031.        (System V, BSD, and others)
  57032.  
  57033.      - Specifying that command lines containing the strings ${MAKE} and
  57034.        $(MAKE) are executed when the -n option is specified (GNU and
  57035.        System V)
  57036.  
  57037.      - Modifications of the meaning of internal macros when referencing
  57038.        libraries (BSD and others)
  57039.  
  57040.      - Using a single instance of the shell for all of a target's command
  57041.        lines (BSD and others)
  57042.  
  57043.      - Allowing spaces as well as tabs to delimit command lines (BSD)
  57044.  
  57045.      - Adding C-preprocessor-style ``include'' and ``ifdef'' constructs
  57046.        (System V, GNU, BSD, and others)
  57047.  
  57048.      - Remote execution of command lines (Sprite and others)
  57049.  
  57050.      - Specifying additional special targets (Sun, BSD, System V, and most
  57051.        others).
  57052.  
  57053.  Additionally, many vendors and research organizations have rethought the
  57054.  basic concepts of make, creating vastly extended, as well as completely
  57055.  new, syntaxes.  Each of these versions of ``make'' fulfills the needs of
  57056.  a different community of users; it is unreasonable for this standard to
  57057.  require behavior that would be incompatible (and probably inferior) to
  57058.  existing practice for such a community.
  57059.  
  57060.  In similar circumstances, when the industry has enough sufficiently
  57061.  incompatible formats as to make them irreconcilable, POSIX.2 has followed
  57062.  one or both of two courses of action.  Commands have been renamed (cksum,
  57063.  echo, and pax) and/or command-line options have been provided to select
  57064.  the desired behavior (grep, od, and pax).
  57065.  
  57066.  Because the syntax specified for the make utility is, by and large, a
  57067.  subset of the syntaxes accepted by almost all versions of make, it was
  57068.  decided that it would be counter-productive to change the name.  And
  57069.  since the makefile itself is a basic unit of portability, it would not be
  57070.  completely effective to reserve a new option letter, such as make -P, to
  57071.  achieve the portable behavior.  Therefore, the special target .POSIX was
  57072.  added to the makefile, allowing users to specify ``standard'' behavior.
  57073.  This special target does not preclude extensions in the make utility, or
  57074.  such extensions being used by the makefile specifying the target; it
  57075.  does, however, preclude any extensions from being applied that could
  57076.  alter the behavior of previously valid syntax; such extensions must be
  57077.  controlled via command-line options or new special targets.  It is
  57078.  incumbent upon portable makefiles to specify the .POSIX special target in
  57079.  
  57080.  
  57081.                Copyright c 1991 IEEE.  All rights reserved.
  57082.       This is an unapproved IEEE Standards Draft, subject to change.
  57083.  
  57084.  
  57085.  
  57086.  
  57087.  
  57088.  6.2 make - Maintain, update, and regenerate groups of programs        835
  57089.  
  57090.  
  57091.  
  57092.  
  57093.  
  57094.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  57095.  
  57096.  order to guarantee that they are not affected by local extensions.
  57097.  
  57098.  The portable version of make described in this clause is not intended to
  57099.  be the state of the art software generation tool and, as such, some newer
  57100.  and more leading-edge features have not been included.  An attempt has
  57101.  been made to describe the portable makefile in a manner that does not
  57102.  preclude such extensions as long as they do not disturb the portable
  57103.  behavior described here.
  57104.  
  57105.  One use of this make and the makefile syntax is as a format that newer
  57106.  versions of make can generate for portability purposes.
  57107.  
  57108.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  57109.  
  57110.  The following command:
  57111.  
  57112.        make
  57113.  
  57114.  makes the first target found in the makefile.
  57115.  
  57116.  The following command:
  57117.  
  57118.        make junk
  57119.  
  57120.  makes the target junk.
  57121.  
  57122.  The following makefile says that pgm depends on two files, a.o and b.o,
  57123.  and that they in turn depend on their corresponding source files (a.c and
  57124.  b.c), and a common file incl.h:
  57125.  
  57126.     pgm: a.o b.o
  57127.                 c89 a.o b.o -o pgm
  57128.  
  57129.     a.o: incl.h a.c
  57130.                 c89 -c a.c
  57131.  
  57132.     b.o: incl.h b.c
  57133.                 c89 -c b.c
  57134.  
  57135.  An example for making optimized .o files from .c files is:
  57136.  
  57137.     .c.o:
  57138.                 c89 -c -O $*.c
  57139.  
  57140.  or:
  57141.  
  57142.     .c.o:
  57143.                 c89 -c -O $<
  57144.  
  57145.  
  57146.  
  57147.                Copyright c 1991 IEEE.  All rights reserved.
  57148.       This is an unapproved IEEE Standards Draft, subject to change.
  57149.  
  57150.  
  57151.  
  57152.  
  57153.  
  57154.  836                               6 Software Development Utilities Option
  57155.  
  57156.  
  57157.  
  57158.  
  57159.  
  57160.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  57161.  
  57162.  The most common use of the archive interface follows.  Here, it is
  57163.  assumed that the source files are all C language source:
  57164.  
  57165.        lib:    lib(file1.o) lib(file2.o) lib(file3.o)
  57166.                @echo lib is now up-to-date
  57167.  
  57168.  The .c.a rule is used to make file1.o, file2.o, and file3.o and insert     1
  57169.  them into lib.                                                             1
  57170.  
  57171.  The -k and -S options are both present so that the relationship between
  57172.  the command line, the MAKEFLAGS variable, and the makefile can be
  57173.  controlled precisely.  If the k flag is passed in MAKEFLAGS and a command
  57174.  is of the form:
  57175.  
  57176.        $(MAKE) -S foo
  57177.  
  57178.  then the default behavior is restored for the child make.
  57179.  
  57180.  When the -n option is specified, it is always added to MAKEFLAGS.  This
  57181.  allows a recursive make -n _t_a_r_g_e_t to be used to see all of the action
  57182.  that would be taken to update _t_a_r_g_e_t.
  57183.  
  57184.  The definition of MAKEFLAGS allows both the System V letter string and
  57185.  the BSD command-line formats.  The two formats are sufficiently different
  57186.  to allow implementations to support both without ambiguity.
  57187.  
  57188.  Because of widespread historical practice, interpreting a # number sign
  57189.  inside a variable as the start of a comment has the unfortunate side
  57190.  effect of making it impossible to place a number sign in a variable, thus
  57191.  forbidding something like
  57192.  
  57193.        CFLAGS = "-D COMMENT_CHAR='#'"
  57194.  
  57195.  Earlier drafts stated that an ``unquoted'' number sign was treated as the
  57196.  start of a comment.  The make utility does not pay any attention to
  57197.  quotes.  A number sign starts a comment regardless of its surroundings.
  57198.  
  57199.  The treatment of escaped <newline>s throughout the makefile is historical
  57200.  practice.  For example, the inference rule:
  57201.  
  57202.        .c.o\
  57203.  
  57204.        :
  57205.  
  57206.  works and the macro
  57207.  
  57208.  
  57209.  
  57210.  
  57211.  
  57212.  
  57213.                Copyright c 1991 IEEE.  All rights reserved.
  57214.       This is an unapproved IEEE Standards Draft, subject to change.
  57215.  
  57216.  
  57217.  
  57218.  
  57219.  
  57220.  6.2 make - Maintain, update, and regenerate groups of programs        837
  57221.  
  57222.  
  57223.  
  57224.  
  57225.  
  57226.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  57227.  
  57228.        f=      bar baz\
  57229.  
  57230.                biz
  57231.  
  57232.        a:
  57233.                echo ==$f==
  57234.  
  57235.  will echo ==bar baz biz==.
  57236.  
  57237.  If $? were
  57238.  
  57239.        /usr/include/stdio.h /usr/include/unistd.h foo.h
  57240.  
  57241.  then $(?D) would be
  57242.  
  57243.        /usr/include /usr/include .
  57244.  
  57245.  and $(?F) would be
  57246.  
  57247.        stdio.h unistd.h foo.h
  57248.  
  57249.  The contents of the built-in rules can be viewed by running:
  57250.  
  57251.        make -p -f /dev/null 2>/dev/null
  57252.  
  57253.  Many historical makes stop chaining together inference rules when an       1
  57254.  intermediate target is nonexistent.  For example, it might be possible     1
  57255.  for a make to determine that both .y.c and .c.o could be used to convert   1
  57256.  a .y to a .o.  Instead, in this case, make requires the use of a .y.o      1
  57257.  rule.                                                                      1
  57258.  
  57259.  The text about ``other implementation-defined pathnames may also be
  57260.  tried'' in addition to ./makefile and ./Makefile is to allow such
  57261.  extensions as SCCS/s.Makefile and other variations.  It was made an
  57262.  implementation-defined requirement (as opposed to unspecified behavior)
  57263.  to highlight surprising implementations that might select something
  57264.  unexpected like /etc/Makefile.
  57265.  
  57266.  For inference rules, the description of $< and $? seem similar.  However,
  57267.  an example shows the minor difference.  In a makefile containing
  57268.  
  57269.        foo.o: foo.h
  57270.  
  57271.  if foo.h is newer than foo.o, yet foo.c is older than foo.o, the built-in
  57272.  rule to make foo.o from foo.c will be used, with $< equal to foo.c and $?
  57273.  equal to foo.h.  (If foo.c is also newer than foo.o, $< is equal to foo.c
  57274.  and $? is equal to ``foo.h foo.c''.)
  57275.  
  57276.  
  57277.  
  57278.  
  57279.                Copyright c 1991 IEEE.  All rights reserved.
  57280.       This is an unapproved IEEE Standards Draft, subject to change.
  57281.  
  57282.  
  57283.  
  57284.  
  57285.  
  57286.  838                               6 Software Development Utilities Option
  57287.  
  57288.  
  57289.  
  57290.  
  57291.  
  57292.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  57293.  
  57294.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  57295.  
  57296.  Earlier drafts contained the macro NPROC as a means of specifying that
  57297.  make should use _n processes to do the work required.  While this feature
  57298.  is a valuable extension for many systems, it is not common usage and
  57299.  could require other nontrivial extensions to makefile syntax.  This
  57300.  extension is not required by the standard, but could be provided as a
  57301.  compatible extension.  The macro PARALLEL is used by some historical       1
  57302.  systems with essentially the same meaning (but without using a name that   1
  57303.  is a common system limit value).  It is suggested that implementors        1
  57304.  recognize the existing use of NPROC and/or PARALLEL as extensions to       1
  57305.  make.                                                                      1
  57306.  
  57307.  The default rules are based on System V.  The default CC= value is c89
  57308.  instead of cc because POSIX.2 does not standardize the utility named cc.
  57309.  Thus, every conforming application would be required to define CC=c89 to
  57310.  expect to run.  There is no advantage conferred by the hope that the
  57311.  makefile might hit the ``preferred'' compiler because there is no way
  57312.  that this can be guaranteed to work.  Also, since the portable makescript
  57313.  can only use the c89 options, no advantage is conferred in terms of what
  57314.  the script can do.  It is a quality of implementation issue as to whether
  57315.  c89 is as good as cc.
  57316.  
  57317.  Since SCCS and RCS are not part of POSIX.2, all make references to SCCS
  57318.  extensions have been omitted.
  57319.  
  57320.  The -d option to make is frequently used to produce debugging
  57321.  information, but is too implementation-dependent to add to the standard.
  57322.  
  57323.  The -p option is not passed in MAKEFLAGS on most existing implementations
  57324.  and to change this would cause many implementations to break without
  57325.  sufficiently increased portability.
  57326.  
  57327.  Commands that begin with a plus-sign (+) are executed even if the -n
  57328.  option is present.  Based on the GNU version of make, the behavior of -n
  57329.  when the plus-sign prefix is encountered has been extended to apply to -q
  57330.  and -t as well.  However, the System V convention of forcing command
  57331.  execution with -n when a target's command line contains either of the
  57332.  strings $(MAKE) or ${MAKE} has not been adopted.  This functionality
  57333.  appeared in earlier drafts, but the danger of this approach was pointed
  57334.  out with the following example of a portion of a makefile:
  57335.  
  57336.        subdir:
  57337.                cd subdir; rm all_the_files; $(MAKE)
  57338.  
  57339.  The loss of the System V behavior in this case is well-balanced by the
  57340.  safety afforded to other makefiles that were not aware of this situation.
  57341.  In any event, the command-line plus-sign prefix can provide the desired
  57342.  functionality.
  57343.  
  57344.  
  57345.                Copyright c 1991 IEEE.  All rights reserved.
  57346.       This is an unapproved IEEE Standards Draft, subject to change.
  57347.  
  57348.  
  57349.  
  57350.  
  57351.  
  57352.  6.2 make - Maintain, update, and regenerate groups of programs        839
  57353.  
  57354.  
  57355.  
  57356.  
  57357.  
  57358.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  57359.  
  57360.  The double colon in the target rule format is supported in BSD systems to
  57361.  allow more than one target line containing the same target name to have
  57362.  commands associated with it.  Since this is not functionality described
  57363.  in the _S_V_I_D or XPG3, it has been allowed as an extension, but not
  57364.  mandated.
  57365.  
  57366.  The default rules are provided with text specifying that the built-in
  57367.  rules are to be the same _a_s _i_f the listed set were used.  The intent is
  57368.  that implementations should be able to use the rules without change, but
  57369.  will be allowed to alter them in ways that do not affect the primary
  57370.  behavior.
  57371.  
  57372.  The best way to provide portable makefiles is to include all of the rules
  57373.  needed in the makefile itself.  The rules provided use only features
  57374.  provided by other parts of the standard.  The default rules include rules
  57375.  for optional commands in the standard.  Only rules pertaining to commands
  57376.  that are provided are needed in an implementation's default set.
  57377.  
  57378.  The argument could be made to drop the default rules list from the
  57379.  standard.  They provide convenience, but do not enhance portability of
  57380.  applications.  The prime benefit is in portability of users who wish to
  57381.  type make command and have the command build from a command.c file.
  57382.  
  57383.  The historical MAKESHELL feature was omitted.  In some implementations it
  57384.  is used to provide a way of letting a user override the shell to be used
  57385.  to run make commands.  This was confusing; for a portable make, the shell
  57386.  should be chosen by the makefile writer or specified on the make command
  57387.  line and not by a user running make.
  57388.  
  57389.  The make utilities in most historical implementations process the
  57390.  prerequisites of a target in left-to-right order, and the POSIX.2          1
  57391.  makefile format requires this.  It supports the standard idiom used in     1
  57392.  many makefiles that produce yacc programs, for example:                    1
  57393.  
  57394.        foo:    y.tab.o lex.o main.o                                         1
  57395.                $(CC) $(CFLAGS) -o $@ t.tab.o lex.o main.o                   1
  57396.  
  57397.  In this example, if make chose any arbitrary order, the lex.o might not    1
  57398.  be made with the correct y.tab.h.  Although there may be better ways to    1
  57399.  express this relationship, it is widely used historically.                 1
  57400.  Implementations that desire to update prerequisites in parallel should     1
  57401.  require an explicit extension to make or the makefile format to            1
  57402.  accomplish it, as described previously.                                    1
  57403.  
  57404.  The algorithm for determining a new entry for target rules is partially    1
  57405.  unspecified.  Some historical makes allow blank, empty, or comment lines   1
  57406.  within the collection of commands marked by leading <tab>s.  A conforming  1
  57407.  makefile must ensure that each command starts with a <tab>, but            1
  57408.  implementations are free to ignore blank, empty, and comment lines         1
  57409.  
  57410.  
  57411.                Copyright c 1991 IEEE.  All rights reserved.
  57412.       This is an unapproved IEEE Standards Draft, subject to change.
  57413.  
  57414.  
  57415.  
  57416.  
  57417.  
  57418.  840                               6 Software Development Utilities Option
  57419.  
  57420.  
  57421.  
  57422.  
  57423.  
  57424.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  57425.  
  57426.  without triggering the start of a new entry.                               1
  57427.  
  57428.  The Asynchronous Events subclause includes having SIGTERM and SIGHUP,
  57429.  along with the more traditional SIGINT and SIGQUIT, remove the current
  57430.  target unless directed not to.  SIGTERM and SIGHUP were added to parallel
  57431.  other utilities that have historically cleaned up their work as a result
  57432.  of these signals.  All but SIGQUIT is required to resend itself the
  57433.  signal it received to cause make to exit with a status that reflects the
  57434.  signal.  The results from SIGQUIT are partially unspecified because, on
  57435.  systems that create core files upon receipt of SIGQUIT, the core from
  57436.  make would conflict with a core file from the command that was running
  57437.  when the SIGQUIT arrived.  The main concern here was to prevent damaged
  57438.  files from appearing up-to-date when make is rerun.
  57439.  
  57440.  The .PRECIOUS special target was extended to globally affect all targets
  57441.  (by specifying no prerequisites).  The .IGNORE and .SILENT special
  57442.  targets were extended to allow prerequisites; it was judged to be more
  57443.  useful in some cases to be able to turn off errors or echoing for a list
  57444.  of targets than for the entire makefile.  These extensions to System V's
  57445.  make were made to match historical practice from the BSD make.
  57446.  
  57447.  Macros are not exported to the environment of commands to be run.  This
  57448.  was never the case in any historical make and would have serious
  57449.  consequences.  The environment is the same as the environment to make
  57450.  except that MAKEFLAGS and macros defined on the make command line are
  57451.  added.
  57452.  
  57453.  Some implementations do not use _s_y_s_t_e_m() for all command lines, as
  57454.  required by the POSIX.2 portable makefile format; as a performance
  57455.  enhancement, they select lines without shell metacharacters for direct
  57456.  execution by _e_x_e_c_v_e().  There is no requirement that _s_y_s_t_e_m() be used
  57457.  specifically, but merely that the same results be achieved.  The
  57458.  metacharacters typically used to bypass the direct _e_x_e_c_v_e() execution
  57459.  have been any of:
  57460.  
  57461.        =  |  ^  (  )  ;  &  <  >  *  ?  [  ]  :  $  `  '  "  \  \n
  57462.  
  57463.  The default in some advanced versions of make is to group all the command
  57464.  lines for a target and execute them using a single shell invocation; the
  57465.  System V method is to pass each line individually to a separate shell.
  57466.  The single-shell method has the advantages in performance and the lack of
  57467.  a requirement for many continued lines.  However, converting to this
  57468.  newer method has caused portability problems with many historical
  57469.  makefiles, so the behavior with the POSIX makefile is specified to be the
  57470.  same as System V's.  It is suggested that the special target .ONESHELL be
  57471.  used as an implementation extension to achieve the single-shell grouping
  57472.  for a target or group of targets.
  57473.  
  57474.  
  57475.  
  57476.  
  57477.                Copyright c 1991 IEEE.  All rights reserved.
  57478.       This is an unapproved IEEE Standards Draft, subject to change.
  57479.  
  57480.  
  57481.  
  57482.  
  57483.  
  57484.  6.2 make - Maintain, update, and regenerate groups of programs        841
  57485.  
  57486.  
  57487.  
  57488.  
  57489.  
  57490.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  57491.  
  57492.  Novice users of make have had difficulty with the historical need to
  57493.  start commands with a <tab> character.  Since it is often difficult to
  57494.  discern differences between <tab> and <space> characters on terminals or
  57495.  printed listings, confusing bugs can arise.  In earlier drafts, an
  57496.  attempt was made to correct this problem by allowing leading <blank>_s
  57497.  instead of <tab>_s.  However, implementors reported many makefiles that
  57498.  failed in subtle ways following this change and it is difficult to
  57499.  implement a make that unambiguously can differentiate between macro and
  57500.  command lines.  There is extensive historical practice of allowing
  57501.  leading spaces before macro definitions.  Forcing macro lines into column
  57502.  1 would be a significant backward compatibility problem for some
  57503.  makefiles.  Therefore, historical practice was restored.
  57504.  
  57505.  The System V INCLUDE feature was considered, but not included.  This
  57506.  would treat a line that began in the first column and contained INCLUDE
  57507.  <_f_i_l_e_n_a_m_e> as an indication to read <_f_i_l_e_n_a_m_e> at that point in the
  57508.  makefile.  This is difficult to use in a portable way and it raises
  57509.  concerns about nesting levels and diagnostics.  System V, BSD, GNU, and
  57510.  others have used different methods for including files.
  57511.  
  57512.  Macros used within other macros are evaluated when the new macro is used
  57513.  rather than when the new macro is defined.  Therefore:
  57514.  
  57515.        MACRO = _v_a_l_u_e_1
  57516.        NEW   = $(MACRO)
  57517.        MACRO = _v_a_l_u_e_2
  57518.  
  57519.        target:
  57520.                echo $(NEW)
  57521.  
  57522.  would produce _v_a_l_u_e_2 and not _v_a_l_u_e_1 since NEW was not expanded until it
  57523.  was needed in the echo command line.
  57524.  
  57525.  The System V dynamic dependency feature was not added.  It would support:
  57526.  
  57527.        cat: $$@.c
  57528.  
  57529.  that would expand to
  57530.  
  57531.        cat: cat.c
  57532.  
  57533.  This feature exists only in the new version of System V make and, while
  57534.  useful, is not in wide usage.  This means that macros are expanded twice
  57535.  for prerequisites:  once at makefile parse time and once at target update
  57536.  time.
  57537.  
  57538.  Consideration was given to adding metarules to the POSIX make.  This
  57539.  would make "%.o: %.c" the same as ".c.o:".  This is quite useful and
  57540.  available from some vendors, but it would cause too many changes to this
  57541.  
  57542.  
  57543.                Copyright c 1991 IEEE.  All rights reserved.
  57544.       This is an unapproved IEEE Standards Draft, subject to change.
  57545.  
  57546.  
  57547.  
  57548.  
  57549.  
  57550.  842                               6 Software Development Utilities Option
  57551.  
  57552.  
  57553.  
  57554.  
  57555.  
  57556.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  57557.  
  57558.  make to support.  It would have introduced rule chaining and new
  57559.  substitution rules.  However, the rules for target names have been set to  1
  57560.  reserve the % and " characters.  These are traditionally used to           1
  57561.  implement metarules and quoting of target names, respectively.             1
  57562.  Implementors are strongly encouraged to use these characters only for      1
  57563.  these purposes.                                                            1
  57564.  
  57565.  A request was made to extend the suffix delimiter character from a period
  57566.  to any character.  The metarules in newer makes solves this problem in a
  57567.  more general way.  POSIX.2 is staying with the more conservative
  57568.  historical definition until a clear industry consensus on make technology
  57569.  might prompt a revision of this standard.
  57570.  
  57571.  The standard output format for the -p option is not described because it
  57572.  is primarily a debugging option and the format is not generally useful to
  57573.  programs.  In historical implementations the output is not suitable for
  57574.  use in generating makefiles.  The -p format has been variable across
  57575.  historical implementations.  Therefore, the definition of -p was only to
  57576.  provide a consistently named option for obtaining make script debugging
  57577.  information.
  57578.  
  57579.  Some historical implementations have not cleared the suffix list with -r.
  57580.  
  57581.  Implementations should be aware that some historical applications have
  57582.  intermixed _t_a_r_g_e_t__n_a_m_e and _m_a_c_r_o=_n_a_m_e operands on the command line,
  57583.  expecting that all of the macros will be processed before any of the
  57584.  targets are dealt with.  Portable applications do not do this, but some
  57585.  backward compatibility support may be warranted.
  57586.  
  57587.  Empty inference rules are specified with a semicolon command rather than
  57588.  omitting all commands, as described in a previous draft.  The latter case
  57589.  has no traditional meaning and is reserved for implementation extensions,
  57590.  such as in GNU make.
  57591.  
  57592.  END_RATIONALE
  57593.  
  57594.  
  57595.  
  57596.  
  57597.  
  57598.  
  57599.  
  57600.  
  57601.  
  57602.  
  57603.  
  57604.  
  57605.  
  57606.  
  57607.  
  57608.  
  57609.                Copyright c 1991 IEEE.  All rights reserved.
  57610.       This is an unapproved IEEE Standards Draft, subject to change.
  57611.  
  57612.  
  57613.  
  57614.  
  57615.  
  57616.  6.2 make - Maintain, update, and regenerate groups of programs        843
  57617.  
  57618.  
  57619.  
  57620.  
  57621.  
  57622.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  57623.  
  57624.  6.3  strip - Remove unnecessary information from executable files
  57625.  
  57626.  
  57627.  6.3.1  Synopsis
  57628.  
  57629.  
  57630.  strip  _f_i_l_e ...
  57631.  
  57632.  
  57633.  6.3.2  Description
  57634.  
  57635.  The strip utility shall remove from executable files named by the _f_i_l_e
  57636.  operands any information the implementor deems unnecessary to proper
  57637.  execution of those files.  The nature of that information is unspecified.
  57638.  The effect of strip shall be the same as the use of the -s option to any
  57639.  of the compilers defined by this standard.
  57640.  
  57641.  
  57642.  6.3.3  Options
  57643.  
  57644.  None.
  57645.  
  57646.  
  57647.  6.3.4  Operands
  57648.  
  57649.  The following operand shall be supported by the implementation:
  57650.  
  57651.     _f_i_l_e        A pathname referring to an executable file.
  57652.  
  57653.  
  57654.  6.3.5  External Influences
  57655.  
  57656.  6.3.5.1  Standard Input
  57657.  
  57658.  None.
  57659.  
  57660.  
  57661.  6.3.5.2  Input Files
  57662.  
  57663.  The input files shall be in the form of executable files successfully
  57664.  produced by any compiler defined by this standard.
  57665.  
  57666.  6.3.5.3  Environment Variables
  57667.  
  57668.  The following environment variables shall affect the execution of strip:
  57669.  
  57670.     LANG               This variable shall determine the locale to use for
  57671.                        the locale categories when both LC_ALL and the
  57672.                        corresponding environment variable (beginning with
  57673.  
  57674.  
  57675.                Copyright c 1991 IEEE.  All rights reserved.
  57676.       This is an unapproved IEEE Standards Draft, subject to change.
  57677.  
  57678.  
  57679.  
  57680.  
  57681.  
  57682.  844                               6 Software Development Utilities Option
  57683.  
  57684.  
  57685.  
  57686.  
  57687.  
  57688.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  57689.  
  57690.                        LC_) do not specify a locale.  See 2.6.
  57691.  
  57692.     LC_ALL             This variable shall determine the locale to be used
  57693.                        to override any values for locale categories
  57694.                        specified by the settings of LANG or any
  57695.                        environment variables beginning with LC_.
  57696.  
  57697.     LC_CTYPE           This variable shall determine the locale for the
  57698.                        interpretation of sequences of bytes of text data
  57699.                        as characters (e.g., single- versus multibyte
  57700.                        characters in arguments).
  57701.  
  57702.     LC_MESSAGES        This variable shall determine the language in which
  57703.                        messages should be written.
  57704.  
  57705.  
  57706.  6.3.5.4  Asynchronous Events
  57707.  
  57708.  Default.
  57709.  
  57710.  
  57711.  6.3.6  External Effects
  57712.  
  57713.  6.3.6.1  Standard Output
  57714.  
  57715.  None.
  57716.  
  57717.  
  57718.  6.3.6.2  Standard Error
  57719.  
  57720.  Used only for diagnostic messages.
  57721.  
  57722.  6.3.6.3  Output Files
  57723.  
  57724.  The strip utility shall produce executable files of unspecified format.
  57725.  
  57726.  
  57727.  6.3.7  Extended Description
  57728.  
  57729.  None.
  57730.  
  57731.  
  57732.  6.3.8  Exit Status
  57733.  
  57734.  The strip utility shall exit with one of the following values:
  57735.  
  57736.      0    Successful completion.
  57737.  
  57738.  
  57739.  
  57740.  
  57741.                Copyright c 1991 IEEE.  All rights reserved.
  57742.       This is an unapproved IEEE Standards Draft, subject to change.
  57743.  
  57744.  
  57745.  
  57746.  
  57747.  
  57748.  6.3 strip - Remove unnecessary information from executable files      845
  57749.  
  57750.  
  57751.  
  57752.  
  57753.  
  57754.  P1003.2/D11.2
  57755.  
  57756.     >0    An error occurred.
  57757.  
  57758.  
  57759.  6.3.9  Consequences of Errors
  57760.  
  57761.  Default.
  57762.  
  57763.  BEGIN_RATIONALE
  57764.  
  57765.  
  57766.  6.3.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  57767.  
  57768.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  57769.  
  57770.  None.
  57771.  
  57772.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  57773.  
  57774.  Historically, this utility has been used to remove the symbol table from
  57775.  an executable file.  It was included since it is known that the amount of
  57776.  symbolic information can amount to several megabytes; the ability to
  57777.  remove it in a portable manner was deemed important, especially for
  57778.  smaller systems.
  57779.  
  57780.  The behavior of strip is said to be the same as the -s option to a
  57781.  compiler.  While the end result is essentially the same it is not
  57782.  required to be identical.  The same effect can be achieved with either -s
  57783.  during a compile or a strip on the final object file.
  57784.  
  57785.  END_RATIONALE
  57786.  
  57787.  
  57788.  
  57789.  
  57790.  
  57791.  
  57792.  
  57793.  
  57794.  
  57795.  
  57796.  
  57797.  
  57798.  
  57799.  
  57800.  
  57801.  
  57802.  
  57803.  
  57804.  
  57805.  
  57806.  
  57807.                Copyright c 1991 IEEE.  All rights reserved.
  57808.       This is an unapproved IEEE Standards Draft, subject to change.
  57809.  
  57810.  
  57811.  
  57812.  
  57813.  
  57814.  846                               6 Software Development Utilities Option
  57815.  
  57816.  
  57817.  
  57818.  
  57819.  
  57820.                                                              P1003.2/D11.2
  57821.  
  57822.  
  57823.  
  57824.  
  57825.  
  57826.  
  57827.  
  57828.  
  57829.               Section 7: Language-Independent System Services
  57830.  
  57831.  
  57832.  
  57833.  This clause contains functional specifications for services that give
  57834.  applications access to features defined elsewhere in this standard.
  57835.  These services allow applications written in high-level languages to
  57836.  
  57837.      (1)  execute commands using the shell language,
  57838.  
  57839.      (2)  obtain values of environment variables,
  57840.  
  57841.      (3)  perform regular expression and pattern matching,
  57842.  
  57843.      (4)  process command arguments in a standard manner,
  57844.  
  57845.      (5)  generate pathnames from a pattern,
  57846.  
  57847.      (6)  perform shell word expansions,
  57848.  
  57849.      (7)  obtain system configuration information, and
  57850.  
  57851.      (8)  set locale control information
  57852.  
  57853.  This clause does not define interfaces, but services that shall be
  57854.  provided by the interfaces in a language-dependent binding.  This clause
  57855.  is optional, in that an implementation is not required to support any
  57856.  language binding to these services.  However, any language binding shall
  57857.  support all of the services described here.  Implementations therefore
  57858.  provide support for services in this clause by supplying a language-
  57859.  dependent binding such as the one defined in Annex B.  Such a system
  57860.  would specify conformance to the language-dependent binding, not to the
  57861.  language-independent bindings given here.
  57862.  
  57863.  BEGIN_RATIONALE
  57864.  
  57865.  
  57866.  
  57867.  
  57868.  
  57869.  
  57870.  
  57871.  
  57872.  
  57873.                Copyright c 1991 IEEE.  All rights reserved.
  57874.       This is an unapproved IEEE Standards Draft, subject to change.
  57875.  
  57876.  
  57877.  
  57878.  
  57879.  
  57880.  7 Language-Independent System Services                                847
  57881.  
  57882.  
  57883.  
  57884.  
  57885.  
  57886.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  57887.  
  57888.  7.0.1  Language-Independent System Services Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s
  57889.         _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  57890.  
  57891.  Section 7 essentially is a metastandard, in that it specifies services
  57892.  that must be in a language-dependent binding.  An implementation conforms
  57893.  to a specific language-dependent binding such as for the C language, in
  57894.  Annex B, and the language-dependent binding must conform to the
  57895.  specifications in this clause.
  57896.  
  57897.  In this standard, the language-independent specifications have not yet
  57898.  been developed.  The language-independent syntax is being created in
  57899.  parallel by the POSIX.1 working group.  Therefore, the C language
  57900.  bindings temporarily described in Annex B are actually the full interface
  57901.  specifications.  It is the intention of the P1003.2 working group to
  57902.  rectify this situation in a later supplement by moving the majority of
  57903.  the interface specifications back into this clause, leaving Annex B with
  57904.  only brief descriptions of the C bindings to those services.
  57905.  
  57906.  This clause does not attempt to include everything that would be required
  57907.  of a language binding.  The services here are those that are necessary to
  57908.  make use of features defined elsewhere in the standard, but that are not
  57909.  normally available in every language.  Clearly a language that could not
  57910.  open, read, and write the files manipulated by the utilities in this
  57911.  standard would not be very useful, but this service is normally provided
  57912.  by any language and therefore isn't called out here.  The ability to
  57913.  obtain values of environment variables exported from the shell, on the
  57914.  other hand, is not universally available, so that service is included
  57915.  here.
  57916.  
  57917.  END_RATIONALE
  57918.  
  57919.  
  57920.  
  57921.  7.1  Shell Command Interface
  57922.  
  57923.  
  57924.  7.1.1  Execute Shell Command
  57925.  
  57926.  Any language binding to Language-Independent System Services shall
  57927.  include a facility to execute a shell command.
  57928.  
  57929.  The language-independent specification for this facility has not been
  57930.  developed.  The C binding for this facility is the _s_y_s_t_e_m() function
  57931.  described in B.3.1.
  57932.  
  57933.  
  57934.  
  57935.  
  57936.  
  57937.  
  57938.  
  57939.                Copyright c 1991 IEEE.  All rights reserved.
  57940.       This is an unapproved IEEE Standards Draft, subject to change.
  57941.  
  57942.  
  57943.  
  57944.  
  57945.  
  57946.  848                                7 Language-Independent System Services
  57947.  
  57948.  
  57949.  
  57950.  
  57951.  
  57952.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  57953.  
  57954.  7.1.2  Pipe Communications with Programs
  57955.  
  57956.  Any language binding to Language-Independent System Services shall
  57957.  include a facility to execute a shell command, and to write the standard
  57958.  input or read the standard output of that command via a pipe.
  57959.  
  57960.  The language-independent specification for this facility has not been
  57961.  developed.  The C binding for this facility is the _p_o_p_e_n() and _p_c_l_o_s_e()
  57962.  functions described in B.3.2.
  57963.  
  57964.  
  57965.  
  57966.  7.2  Access Environment Variables
  57967.  
  57968.  Any language binding to Language-Independent System Services shall
  57969.  include a facility to obtain values of environment variables, as
  57970.  specified in POSIX.1 {8}.
  57971.  
  57972.  The language-independent specification for this facility has not been
  57973.  developed.  The C binding for this facility is the _g_e_t_e_n_v() function
  57974.  described in POSIX.1 {8} 4.6.1.
  57975.  
  57976.  BEGIN_RATIONALE
  57977.  
  57978.  
  57979.  7.2.1  Access Environment Variables Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  57980.         _p_a_r_t _o_f _P_1_0_0_3._2)
  57981.  
  57982.  This facility is required in POSIX.2 so that applications can obtain
  57983.  values of exported shell variables.
  57984.  
  57985.  END_RATIONALE
  57986.  
  57987.  
  57988.  7.3  Regular Expression Matching
  57989.  
  57990.  Any language binding to Language-Independent System Services shall
  57991.  include a facility to interpret regular expressions as described in 2.8.
  57992.  
  57993.  The language-independent specification for this facility has not been
  57994.  developed.  The C binding is the _r_e_g_c_o_m_p(), _r_e_g_e_x_e_c(), and _r_e_g_f_r_e_e()
  57995.  functions described in B.5.
  57996.  
  57997.  BEGIN_RATIONALE
  57998.  
  57999.  
  58000.  
  58001.  
  58002.  
  58003.  
  58004.  
  58005.                Copyright c 1991 IEEE.  All rights reserved.
  58006.       This is an unapproved IEEE Standards Draft, subject to change.
  58007.  
  58008.  
  58009.  
  58010.  
  58011.  
  58012.  7.3 Regular Expression Matching                                       849
  58013.  
  58014.  
  58015.  
  58016.  
  58017.  
  58018.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  58019.  
  58020.  7.3.1  Regular Expression Matching Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  58021.         _p_a_r_t _o_f _P_1_0_0_3._2)
  58022.  
  58023.  This service is important enough that it should be required by any
  58024.  language binding to POSIX.2.
  58025.  
  58026.  Regular expression parsing and pattern matching are listed separately,
  58027.  since they are different services.  A language binding could provide
  58028.  different functions to support regular expressions and patterns, or could
  58029.  combine them into a single function.
  58030.  
  58031.  END_RATIONALE
  58032.  
  58033.  
  58034.  
  58035.  7.4  Pattern Matching
  58036.  
  58037.  Any language binding to Language-Independent System Services shall
  58038.  include a facility to interpret patterns as described in 3.13.1 and
  58039.  3.13.2.  This facility shall allow the application to specify whether a
  58040.  slash character in the string to be matched will be treated as a regular
  58041.  character, or must be explicitly matched against a slash in the pattern.
  58042.  
  58043.  The language-independent specification for this facility has not been
  58044.  developed.  The C binding is the _f_n_m_a_t_c_h() function described in B.6.
  58045.  
  58046.  
  58047.  7.5  Command Option Parsing
  58048.  
  58049.  Any language binding to Language-Independent System Services shall
  58050.  include a facility to parse the options and operands from the command
  58051.  line that invoked the application.
  58052.  
  58053.  The language-independent specification for this facility has not been
  58054.  developed.  The C binding for this facility is the _g_e_t_o_p_t() function
  58055.  described in B.7.
  58056.  
  58057.  
  58058.  
  58059.  7.6  Generate Pathnames Matching a Pattern
  58060.  
  58061.  Any language binding to Language-Independent System Services shall
  58062.  include a facility to generate pathnames matching a pattern as described
  58063.  in 3.13.
  58064.  
  58065.  The language-independent specifications for this facility has not been
  58066.  developed.  The C binding is the _g_l_o_b() and _g_l_o_b_f_r_e_e() functions
  58067.  described in B.8.
  58068.  
  58069.  
  58070.  
  58071.                Copyright c 1991 IEEE.  All rights reserved.
  58072.       This is an unapproved IEEE Standards Draft, subject to change.
  58073.  
  58074.  
  58075.  
  58076.  
  58077.  
  58078.  850                                7 Language-Independent System Services
  58079.  
  58080.  
  58081.  
  58082.  
  58083.  
  58084.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  58085.  
  58086.  7.7  Perform Word Expansions
  58087.  
  58088.  Any language binding to Language-Independent System Services shall
  58089.  include a facility to do shell word expansions as described in 3.6.
  58090.  
  58091.  The language-independent specification for this facility has not been
  58092.  developed.  The C binding is the _w_o_r_d_e_x_p() and _w_o_r_d_f_r_e_e() functions
  58093.  described in B.9.
  58094.  
  58095.  BEGIN_RATIONALE
  58096.  
  58097.  
  58098.  7.7.1  Perform Word Expansions Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t
  58099.         _o_f _P_1_0_0_3._2)
  58100.  
  58101.  See the rationale for this function in B.9.
  58102.  
  58103.  END_RATIONALE
  58104.  
  58105.  
  58106.  
  58107.  7.8  Get POSIX Configurable Variables
  58108.  
  58109.  
  58110.  7.8.1  Get String-Valued Configurable Variables
  58111.  
  58112.  Any language binding to Language-Independent System Services shall
  58113.  include a facility to obtain string configurable variables.
  58114.  
  58115.  The language-independent specification for this facility has not been
  58116.  developed.  The C binding for this facility is the _c_o_n_f_s_t_r() function
  58117.  described in B.10.1.
  58118.  
  58119.  
  58120.  7.8.2  Get Numeric-Valued Configurable Variables
  58121.  
  58122.  Any language binding to Language-Independent System Services shall
  58123.  include facilities to determine the current values of system and pathname
  58124.  limits or options (_v_a_r_i_a_b_l_e_s), as specified by POSIX.1 {8}.  The
  58125.  configurable variables listed in Table 7-1, which are defined in
  58126.  POSIX.1 {8}, shall be available in any POSIX.2 language-dependent
  58127.  binding, with minimum values as given in POSIX.1 {8}.  Other POSIX.1 {8}
  58128.  configurable variables may be supported, but are not required by POSIX.2.
  58129.  This facility shall also make available current values for all system
  58130.  limits defined in 2.13.
  58131.  
  58132.  The language-independent specifications for these facilities have not
  58133.  been developed.  The C bindings are the _s_y_s_c_o_n_f() function described in
  58134.  POSIX.1 {8} 4.8, and the _p_a_t_h_c_o_n_f() and _f_p_a_t_h_c_o_n_f() functions defined in
  58135.  POSIX.1 {8} 5.7.
  58136.  
  58137.                Copyright c 1991 IEEE.  All rights reserved.
  58138.       This is an unapproved IEEE Standards Draft, subject to change.
  58139.  
  58140.  
  58141.  
  58142.  
  58143.  
  58144.  7.8 Get POSIX Configurable Variables                                  851
  58145.  
  58146.  
  58147.  
  58148.  
  58149.  
  58150.  P1003.2/D11.2
  58151.  
  58152.  BEGIN_RATIONALE
  58153.  
  58154.  
  58155.  7.8.2.1  Get Numeric-Valued Configurable Variables Rationale. (_T_h_i_s
  58156.           _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  58157.  
  58158.  This description calls out specific values that _s_y_s_c_o_n_f(), _p_a_t_h_c_o_n_f(),
  58159.  and _f_p_a_t_h_c_o_n_f() are required to support.  Some of the POSIX.1 {8} values
  58160.  are excluded from this list because they are not relevant in a POSIX.2-
  58161.  only environment.  Currently, only {CLK_TCK} is not required by POSIX.2.
  58162.  
  58163.  This description does not specify the _n_a_m_e values for the arguments to
  58164.  the various functions.  This is because different language bindings might
  58165.  use different naming conventions, or might use a completely different
  58166.  scheme for obtaining the required configurable values.  Specific names
  58167.  for the _n_a_m_e values for the C language binding are given in B.10.2.
  58168.  
  58169.  END_RATIONALE
  58170.  
  58171.  
  58172.  7.9  Locale Control
  58173.  
  58174.  Any language binding to Language-Independent System Services shall
  58175.  include a facility to set locale control information.
  58176.  
  58177.  The language-independent specification for this facility has not been
  58178.  developed.  The C binding for this facility is described in B.11.
  58179.  
  58180.  BEGIN_RATIONALE
  58181.  
  58182.  
  58183.  7.9.0.1  Locale Control Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  58184.           _P_1_0_0_3._2)
  58185.  
  58186.  This facility is required in POSIX.2 so that applications can control the
  58187.  locale, which affects the operation of POSIX.2 utilities.
  58188.  
  58189.  END_RATIONALE
  58190.  
  58191.  
  58192.  
  58193.  
  58194.  
  58195.  
  58196.  
  58197.  
  58198.  
  58199.  
  58200.  
  58201.  
  58202.  
  58203.                Copyright c 1991 IEEE.  All rights reserved.
  58204.       This is an unapproved IEEE Standards Draft, subject to change.
  58205.  
  58206.  
  58207.  
  58208.  
  58209.  
  58210.  852                                7 Language-Independent System Services
  58211.  
  58212.  
  58213.  
  58214.  
  58215.  
  58216.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  58217.  
  58218.  
  58219.         Table 7-1  -  POSIX.1 Numeric-Valued Configurable Variables
  58220.  __________________________________________________________________________________________________________________________________________________
  58221.  
  58222.           {ARG_MAX}     {NAME_MAX}      {_POSIX_CHOWN_RESTRICTED}
  58223.           {CHILD_MAX}   {NGROUPS_MAX}   {_POSIX_JOB_CONTROL}
  58224.           {LINK_MAX}    {OPEN_MAX}      {_POSIX_NO_TRUNC}
  58225.           {MAX_CANON}   {PATH_MAX}      {_POSIX_SAVED_IDS}
  58226.           {MAX_INPUT}   {PIPE_BUF}      {_POSIX_VDISABLE}
  58227.  __________________________________________________________________________________________________________________________________________________
  58228.  
  58229.  
  58230.  
  58231.  
  58232.  
  58233.  
  58234.  
  58235.  
  58236.  
  58237.  
  58238.  
  58239.  
  58240.  
  58241.  
  58242.  
  58243.  
  58244.  
  58245.  
  58246.  
  58247.  
  58248.  
  58249.  
  58250.  
  58251.  
  58252.  
  58253.  
  58254.  
  58255.  
  58256.  
  58257.  
  58258.  
  58259.  
  58260.  
  58261.  
  58262.  
  58263.  
  58264.  
  58265.  
  58266.  
  58267.  
  58268.  
  58269.                Copyright c 1991 IEEE.  All rights reserved.
  58270.       This is an unapproved IEEE Standards Draft, subject to change.
  58271.  
  58272.  
  58273.  
  58274.  
  58275.  
  58276.  7.9 Locale Control                                                    853
  58277.  
  58278.  
  58279.  
  58280.  
  58281.  
  58282.  
  58283.  
  58284.  
  58285.  
  58286.  
  58287.  
  58288.  
  58289.  
  58290.  
  58291.  
  58292.  
  58293.  
  58294.  
  58295.  
  58296.  
  58297.  
  58298.  
  58299.  
  58300.  
  58301.  
  58302.  
  58303.  
  58304.  
  58305.  
  58306.  
  58307.  
  58308.  
  58309.  
  58310.  
  58311.  
  58312.  
  58313.  
  58314.  
  58315.  
  58316.  
  58317.  
  58318.  
  58319.  
  58320.  
  58321.  
  58322.  
  58323.  
  58324.  
  58325.  
  58326.  
  58327.  
  58328.  
  58329.  
  58330.  
  58331.  
  58332.  
  58333.  
  58334.  
  58335.  
  58336.  
  58337.  
  58338.  
  58339.  
  58340.  
  58341.  
  58342.  
  58343.  
  58344.  
  58345.  
  58346.  
  58347.  
  58348.                                                              P1003.2/D11.2
  58349.  
  58350.  
  58351.  
  58352.  
  58353.  
  58354.  
  58355.                                   Annex A
  58356.                                 (normative)
  58357.                   C Language Development Utilities Option
  58358.  
  58359.  
  58360.  
  58361.  
  58362.  This annex describes utilities used for the development of C language
  58363.  applications, including compilation or translation of C source code and
  58364.  complex program generators for simple lexical tasks and processing of
  58365.  context-free grammars.
  58366.  
  58367.  The utilities described in this annex may be provided by the conforming
  58368.  system; however, any system claiming conformance to the C Language
  58369.  Development Utilities Option shall provide all of the utilities described
  58370.  here.  The utilities described in Section 6 are prerequisites to this
  58371.  annex.
  58372.  
  58373.  BEGIN_RATIONALE
  58374.  
  58375.  
  58376.  A.0.1  C Language Development Utilities Option Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e
  58377.         _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  58378.  
  58379.  The portions of this standard that concern specific languages--currently
  58380.  C and FORTRAN--have been collected to the rear of the document as
  58381.  Normative Annexes.  For purposes of conformance, they are no less a part
  58382.  of the standard than one of the numbered sections.  They were grouped as
  58383.  Annexes to illustrate that the base standard is [planned to be] language
  58384.  independent, giving a small degree of separation.  The working group also
  58385.  wished to send a message to those groups planning other language
  58386.  bindings:  the standard is not C-oriented, and there's plenty of room to
  58387.  add more annexes for your languages as you develop them, right alongside
  58388.  C and FORTRAN.
  58389.  
  58390.  END_RATIONALE
  58391.  
  58392.  
  58393.  
  58394.  
  58395.  
  58396.  
  58397.  
  58398.  
  58399.  
  58400.  
  58401.               Copyright (c) 1991 IEEE.  All rights reserved.
  58402.       This is an unapproved IEEE Standards Draft, subject to change.
  58403.  
  58404.  
  58405.  
  58406.  
  58407.  Annex A C Language Development Utilities Option                       855
  58408.  
  58409.  
  58410.  
  58411.  
  58412.  
  58413.  
  58414.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  58415.  
  58416.  A.1  c89 - Compile Standard C programs
  58417.  
  58418.  
  58419.  A.1.1  Synopsis
  58420.  
  58421.  c89  [-c] [-D _n_a_m_e[=_v_a_l_u_e]] ...  [-E] [-g] [-I _d_i_r_e_c_t_o_r_y] ...
  58422.       [-L _d_i_r_e_c_t_o_r_y] ...  [-o _o_u_t_f_i_l_e] [-O] [-s] [-U _n_a_m_e] ...  _o_p_e_r_a_n_d
  58423.       ...
  58424.  
  58425.  
  58426.  A.1.2  Description
  58427.  
  58428.  The c89 utility is the interface to the standard C compilation system; it
  58429.  shall accept source code conforming to the C Standard {7}.  The system
  58430.  conceptually consists of a compiler and link editor.  The files
  58431.  referenced by _o_p_e_r_a_n_ds shall be compiled and linked to produce an
  58432.  executable file.  (It is unspecified whether the linking occurs entirely
  58433.  within the operation of c89; some systems may produce objects that are
  58434.  not fully resolved until the file is executed.)
  58435.  
  58436.  If the -c option is specified, for all pathname operands of the form
  58437.  _f_i_l_e.c, the files
  58438.  
  58439.        $(basename _p_a_t_h_n_a_m_e ._c)._o
  58440.  
  58441.  shall be created as the result of successful compilation.  If the -c
  58442.  option is not specified, it is unspecified whether such .o files are
  58443.  created or deleted for the _f_i_l_e.c operands.
  58444.  
  58445.  If there are no options that prevent link editing (such as -c or -E), and
  58446.  all operands compile and link without error, the resulting executable
  58447.  file shall be written according to the -o _o_u_t_f_i_l_e option (if present) or
  58448.  to the file a.out.
  58449.  
  58450.  The executable file shall be created as specified in 2.9.1.4, except that
  58451.  the file permissions shall be set to
  58452.  
  58453.        S_IRWXO | S_IRWXG | S_IRWXU
  58454.  
  58455.  (see 5.6.1.2 in POSIX.1 {8}) and that the bits specified by the _u_m_a_s_k of
  58456.  the process shall be cleared.
  58457.  
  58458.  
  58459.  A.1.3  Options
  58460.  
  58461.  The c89 utility shall conform to the utility argument syntax guidelines
  58462.  described in 2.10.2, except that:
  58463.  
  58464.  
  58465.  
  58466.  
  58467.               Copyright (c) 1991 IEEE.  All rights reserved.
  58468.       This is an unapproved IEEE Standards Draft, subject to change.
  58469.  
  58470.  
  58471.  
  58472.  
  58473.  856                             A C Language Development Utilities Option
  58474.  
  58475.  
  58476.  
  58477.  
  58478.  
  58479.  
  58480.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  58481.  
  58482.      - The -l _l_i_b_r_a_r_y operands have the format of options, but their
  58483.        position within a list of operands affects the order in which
  58484.        libraries are searched.
  58485.  
  58486.      - The order of specifying the -I and -L options is significant.        1
  58487.  
  58488.      - Conforming applications shall specify each option separately; that
  58489.        is, grouping option letters (e.g., -cO) need not be recognized by
  58490.        all implementations.
  58491.  
  58492.  The following options shall be supported by the implementation:
  58493.  
  58494.     -c          Suppress the link-edit phase of the compilation, and do
  58495.                 not remove any object files that are produced.
  58496.  
  58497.     -g          Produce symbolic information in the object or executable
  58498.                 files; the nature of this information is unspecified, and
  58499.                 may be modified by implementation-defined interactions
  58500.                 with other options.
  58501.  
  58502.     -s          Produce object and/or executable files from which symbolic
  58503.                 and other information not required for proper execution
  58504.                 using _e_x_e_c (see POSIX.1 {8} 3.1.2) has been removed
  58505.                 (stripped).  If both -g and -s options are present, the
  58506.                 action taken is unspecified.
  58507.  
  58508.     -o _o_u_t_f_i_l_e  Use the pathname _o_u_t_f_i_l_e, instead of the default a.out,
  58509.                 for the executable file produced.  If the -o option is
  58510.                 present with -c or -E, the result is unspecified.
  58511.  
  58512.     -D _n_a_m_e[=_v_a_l_u_e]
  58513.                 Define _n_a_m_e as if by a C-language #define directive.  If
  58514.                 no =_v_a_l_u_e is given, a value of 1 shall be used.  The -D
  58515.                 option has lower precedence than the -U option.  That is,
  58516.                 if _n_a_m_e is used in both a -U and a -D option, _n_a_m_e shall
  58517.                 be undefined regardless of the order of the options.
  58518.                 Additional implementation-defined _n_a_m_e_s may be provided by
  58519.                 the compiler.  Implementations shall support at least 2048
  58520.                 bytes of -D definitions and 256 _n_a_m_e_s.
  58521.  
  58522.     -E          Copy C-language source files to the standard output,
  58523.                 expanding all preprocessor directives; no compilation
  58524.                 shall be performed.  If any operand is not a text file,
  58525.                 the effects are unspecified.
  58526.  
  58527.     -I _d_i_r_e_c_t_o_r_y
  58528.                 Change the algorithm for searching for headers whose names
  58529.                 are not absolute pathnames to look in the directory named
  58530.                 by the _d_i_r_e_c_t_o_r_y pathname before looking in the usual
  58531.  
  58532.  
  58533.               Copyright (c) 1991 IEEE.  All rights reserved.
  58534.       This is an unapproved IEEE Standards Draft, subject to change.
  58535.  
  58536.  
  58537.  
  58538.  
  58539.  A.1 c89 - Compile Standard C programs                                 857
  58540.  
  58541.  
  58542.  
  58543.  
  58544.  
  58545.  
  58546.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  58547.  
  58548.                 places.  Thus, headers whose names are enclosed in
  58549.                 double-quotes ("") shall be searched for first in the
  58550.                 directory of the file with the #include line, then in
  58551.                 directories named in -I options, and last in the usual
  58552.                 places.  For headers whose names are enclosed in angle
  58553.                 brackets (<>), the header shall be searched for only in
  58554.                 directories named in -I options and then in the usual
  58555.                 places.  Directories named in -I options shall be searched
  58556.                 in the order specified.  Implementations shall support at
  58557.                 least ten instances of this option in a single c89 command
  58558.                 invocation.
  58559.  
  58560.     -L _d_i_r_e_c_t_o_r_y
  58561.                 Change the algorithm of searching for the libraries named
  58562.                 in the -l objects to look in the directory named by the
  58563.                 _d_i_r_e_c_t_o_r_y pathname before looking in the usual places.
  58564.                 Directories named in -L options shall be searched in the
  58565.                 order specified.  Implementations shall support at least
  58566.                 ten instances of this option in a single c89 command
  58567.                 invocation.  If a directory specified by a -L option
  58568.                 contains files named libc.a, libm.a, libl.a, or liby.a,
  58569.                 the results are unspecified.
  58570.  
  58571.     -O          Optimize.  The nature of the optimization is unspecified.
  58572.  
  58573.     -U _n_a_m_e     Remove any initial definition of _n_a_m_e.
  58574.  
  58575.  Multiple instances of the -D, -I, -U, and -L options can be specified.
  58576.  
  58577.  
  58578.  A.1.4  Operands
  58579.  
  58580.  An _o_p_e_r_a_n_d is either in the form of a pathname or the form -l _l_i_b_r_a_r_y.
  58581.  At least one operand of the pathname form shall be specified.  The
  58582.  following operands shall be supported by the implementation:
  58583.  
  58584.     _f_i_l_e._c      A C-language source file to be compiled and optionally
  58585.                 linked.  The operand shall be of this form if the -c
  58586.                 option is used.
  58587.  
  58588.     _f_i_l_e._a      A library of object files typically produced by ar (see
  58589.                 6.1), and passed directly to the link editor.
  58590.                 Implementations may recognize implementation-defined
  58591.                 suffixes other than .a as denoting object file libraries.
  58592.  
  58593.     _f_i_l_e._o      An object file produced by c89 -c, and passed directly to
  58594.                 the link editor.  Implementations may recognize
  58595.                 implementation-defined suffixes other than .o as denoting
  58596.                 object files.
  58597.  
  58598.  
  58599.               Copyright (c) 1991 IEEE.  All rights reserved.
  58600.       This is an unapproved IEEE Standards Draft, subject to change.
  58601.  
  58602.  
  58603.  
  58604.  
  58605.  858                             A C Language Development Utilities Option
  58606.  
  58607.  
  58608.  
  58609.  
  58610.  
  58611.  
  58612.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  58613.  
  58614.  The processing of other files is implementation defined.
  58615.  
  58616.     -l _l_i_b_r_a_r_y  (The letter ell.)  Search the library named:
  58617.  
  58618.                       lib_l_i_b_r_a_r_y._a
  58619.  
  58620.                 A library shall be searched when its name is encountered,
  58621.                 so the placement of a -l operand is significant.  Several
  58622.                 standard libraries can be specified in this manner, as
  58623.                 described in A.1.7.  Implementations may recognize
  58624.                 implementation-defined suffixes other than .a as denoting
  58625.                 libraries.
  58626.  
  58627.  
  58628.  A.1.5  External Influences
  58629.  
  58630.  A.1.5.1  Standard Input
  58631.  
  58632.  None.
  58633.  
  58634.  A.1.5.2  Input Files
  58635.  
  58636.  The input file shall be one of the following:  a text file containing a
  58637.  C-language source program; an object file in the format produced by
  58638.  c89 -c; or a library of object files, in the format produced by archiving
  58639.  zero or more object files, using ar.  Implementations may supply
  58640.  additional utilities that produce files in these formats.  Additional
  58641.  input file formats are implementation defined.
  58642.  
  58643.  A.1.5.3  Environment Variables
  58644.  
  58645.  The following environment variables shall affect the execution of c89:
  58646.  
  58647.     LANG               This variable shall determine the locale to use for
  58648.                        the locale categories when both LC_ALL and the
  58649.                        corresponding environment variable (beginning with
  58650.                        LC_) do not specify a locale.  See 2.6.
  58651.  
  58652.     LC_ALL             This variable shall determine the locale to be used
  58653.                        to override any values for locale categories
  58654.                        specified by the settings of LANG or any
  58655.                        environment variables beginning with LC_.
  58656.  
  58657.     LC_CTYPE           This variable shall determine the locale for the
  58658.                        interpretation of sequences of bytes of text data
  58659.                        as characters (e.g., single- versus multibyte
  58660.                        characters in arguments and input files).
  58661.  
  58662.  
  58663.  
  58664.  
  58665.               Copyright (c) 1991 IEEE.  All rights reserved.
  58666.       This is an unapproved IEEE Standards Draft, subject to change.
  58667.  
  58668.  
  58669.  
  58670.  
  58671.  A.1 c89 - Compile Standard C programs                                 859
  58672.  
  58673.  
  58674.  
  58675.  
  58676.  
  58677.  
  58678.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  58679.  
  58680.     LC_MESSAGES        This variable shall determine the language in which
  58681.                        messages should be written.
  58682.  
  58683.     TMPDIR             This variable shall be interpreted as a pathname
  58684.                        that should override the default directory for
  58685.                        temporary files, if any.
  58686.  
  58687.  A.1.5.4  Asynchronous Events
  58688.  
  58689.  Default.
  58690.  
  58691.  
  58692.  A.1.6  External Effects
  58693.  
  58694.  A.1.6.1  Standard Output
  58695.  
  58696.  If more than one file operand ending in .c (or possibly other unspecified
  58697.  suffixes) is given, for each such file:
  58698.  
  58699.        "%s:\n", <_f_i_l_e>
  58700.  
  58701.  may be written.  These messages, if written, shall precede the processing
  58702.  of each input file; they shall not be written to standard output if they
  58703.  are written to standard error, as described in A.1.6.2.
  58704.  
  58705.  If the -E option is specified, the standard output shall be a text file    1
  58706.  that represents the results of the preprocessing stage of the language;    1
  58707.  it may contain extra information appropriate for subsequent compilation    1
  58708.  passes.                                                                    1
  58709.  
  58710.  A.1.6.2  Standard Error
  58711.  
  58712.  Used only for diagnostic messages.  If more than one file operand ending
  58713.  in .c (or possibly other unspecified suffixes) is given, for each such
  58714.  file:
  58715.  
  58716.        "%s:\n", <_f_i_l_e>
  58717.  
  58718.  may be written to allow identification of the diagnostic and warning
  58719.  messages with the appropriate input file.  These messages, if written,
  58720.  shall precede the processing of each input file; they shall not be
  58721.  written to the standard error if they are written to the standard output,
  58722.  as described in A.1.6.1.
  58723.  
  58724.  This utility may produce warning messages about certain conditions that
  58725.  do not warrant returning an error (nonzero) exit value.
  58726.  
  58727.  
  58728.  
  58729.  
  58730.  
  58731.               Copyright (c) 1991 IEEE.  All rights reserved.
  58732.       This is an unapproved IEEE Standards Draft, subject to change.
  58733.  
  58734.  
  58735.  
  58736.  
  58737.  860                             A C Language Development Utilities Option
  58738.  
  58739.  
  58740.  
  58741.  
  58742.  
  58743.  
  58744.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  58745.  
  58746.  A.1.6.3  Output Files
  58747.  
  58748.  Object files or executable files or both are produced in unspecified
  58749.  formats.
  58750.  
  58751.  
  58752.  A.1.7  Extended Description
  58753.  
  58754.  A.1.7.1  Standard Libraries
  58755.  
  58756.  The c89 utility shall recognize the following -l operands for standard
  58757.  libraries:
  58758.  
  58759.     -l c     This library contains all library functions referenced in
  58760.              <stdlib.h>, <stdio.h>, <time.h>, <setjmp.h>, <signal.h>,
  58761.              <unistd.h>, <sys/types.h>, <string.h>, and <ctype.h>, except
  58762.              for those functions referenced in <math.h>.  If an invocation
  58763.              of
  58764.  
  58765.                    getconf _POSIX_VERSION
  58766.  
  58767.              exits with a status of zero, the library searched also shall
  58768.              include all functions defined by POSIX.1 {8}; if the status
  58769.              is nonzero, it is unspecified whether these functions are
  58770.              available.  If an invocation of
  58771.  
  58772.                    getconf _POSIX2_C_BIND
  58773.  
  58774.              exits with a status of zero, the library searched also shall
  58775.              include all functions specified in Annex B; if the status is
  58776.              nonzero, it is unspecified whether these functions are
  58777.              available.  An implementation shall not require this operand
  58778.              to be present to cause a search of this library.
  58779.  
  58780.     -l m     This library contains all functions referenced in <math.h>.
  58781.              An implementation may search this library in the absence of
  58782.              this operand.
  58783.  
  58784.     -l l     This library contains all functions required by the C-
  58785.              language output of lex (see A.2) that are not made available
  58786.              through the -l c operand.
  58787.  
  58788.     -l y     This library contains all functions required by the C-
  58789.              language output of yacc (see A.3) that are not made available
  58790.              through the -l c operand.
  58791.  
  58792.  In the absence of options that inhibit invocation of the link editor,
  58793.  such as -c or -E, the c89 utility shall cause the equivalent of a -l c
  58794.  operand to be passed to the link editor as the last -l operand, causing
  58795.  
  58796.  
  58797.               Copyright (c) 1991 IEEE.  All rights reserved.
  58798.       This is an unapproved IEEE Standards Draft, subject to change.
  58799.  
  58800.  
  58801.  
  58802.  
  58803.  A.1 c89 - Compile Standard C programs                                 861
  58804.  
  58805.  
  58806.  
  58807.  
  58808.  
  58809.  
  58810.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  58811.  
  58812.  it to be searched after all other object files and libraries are loaded.
  58813.  
  58814.  It is unspecified whether the libraries libc.a, libm.a, libl.a, and
  58815.  liby.a exist as regular files.  The implementation may accept as -l
  58816.  operands names of objects that do not exist as regular files.
  58817.  
  58818.  A.1.7.2  External Symbols
  58819.  
  58820.  The C compiler and link editor shall support the significance of external  1
  58821.  symbols up to a length of at least 31 bytes; the action taken upon         1
  58822.  encountering symbols exceeding the implementation-defined maximum symbol
  58823.  length is unspecified.
  58824.  
  58825.  The compiler and link editor shall support a minimum of 511 external
  58826.  symbols per source or object file, and a minimum of 4095 external symbols
  58827.  total.  A diagnostic message shall be written to the standard output if
  58828.  the implementation-defined limit is exceeded; other actions are
  58829.  unspecified.
  58830.  
  58831.  
  58832.  A.1.8  Exit Status
  58833.  
  58834.  The c89 utility shall exit with one of the following values:
  58835.  
  58836.      0    Successful compilation or link edit.
  58837.  
  58838.     >0    An error occurred.
  58839.  
  58840.  
  58841.  A.1.9  Consequences of Errors
  58842.  
  58843.  When c89 encounters a compilation error that causes an object file not to
  58844.  be created, it shall write a diagnostic to standard error and continue to
  58845.  compile other source code operands, but it shall not perform the link
  58846.  phase and shall return a nonzero exit status.  If the link edit is
  58847.  unsuccessful, a diagnostic message shall be written to standard error and
  58848.  c89 shall exit with a nonzero status.
  58849.  
  58850.  BEGIN_RATIONALE
  58851.  
  58852.  
  58853.  A.1.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  58854.  
  58855.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  58856.  
  58857.  Note that some implementations support a finer-grained model of
  58858.  compilation than the one described above.  In this model, the following
  58859.  conceptual phases may exist:  preprocessor, compiler, optimizer,
  58860.  assembler, link editor.  Such implementations may support these
  58861.  
  58862.  
  58863.               Copyright (c) 1991 IEEE.  All rights reserved.
  58864.       This is an unapproved IEEE Standards Draft, subject to change.
  58865.  
  58866.  
  58867.  
  58868.  
  58869.  862                             A C Language Development Utilities Option
  58870.  
  58871.  
  58872.  
  58873.  
  58874.  
  58875.  
  58876.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  58877.  
  58878.  additional options to the c89 utility:
  58879.  
  58880.     -P    Preprocess, but do not compile, the named C programs and leave
  58881.           the result on corresponding files suffixed .i.
  58882.  
  58883.     -S    Compile the named C programs into assembly language, and leave
  58884.           the assembler-language output on corresponding files suffixed
  58885.           .s.  No object files are created.
  58886.  
  58887.     [-W_c,_a_r_g_1[,_a_r_g_2 ...]]
  58888.           Hand off the argument(s) _a_r_g_i to phase _c where _c is one of
  58889.           [p02al] indicating preprocessor, compiler, optimizer, assembler,
  58890.           or link editor, respectively.  For example, -Wa,-m passes -m to
  58891.           the assembler phase.  (Note the rationale concerning -W in
  58892.           2.10.1.1.)
  58893.  
  58894.  The -fpq options have been excluded, since they use features that are not
  58895.  in this standard.
  58896.  
  58897.  In specifying that _f_i_l_e.a operands are _t_y_p_i_c_a_l_l_y produced by ar, it is
  58898.  the intention of POSIX.2 to require that object libraries produced by ar
  58899.  be usable by c89, but not to preclude an implementation from supplying
  58900.  another utility that creates object library files.
  58901.  
  58902.  The following are examples of usage:
  58903.  
  58904.     c89 -o foo foo.c     Compiles foo.c and creates the executable foo.
  58905.  
  58906.     c89 -c foo.c         Compiles foo.c and creates the object file foo.o.
  58907.  
  58908.     c89 foo.c            Compiles foo.c and creates the executable a.out.
  58909.  
  58910.     c89 foo.c bar.o      Compiles foo.c, links it with bar.o, and creates
  58911.                          the executable a.out.  Also creates and leaves
  58912.                          foo.o.
  58913.  
  58914.  The following examples clarify the use and interactions of -L options and
  58915.  -l operands:
  58916.  
  58917.        Consider the case in which module a.c calls function _f() in library
  58918.        libQ.a, and module b.c calls function _g() in library libp.a.
  58919.        Assume that both libraries reside in /a/b/c.  The command line to
  58920.        compile and link in the desired way is:
  58921.  
  58922.              c89 -L /a/b/c main.o a.c -l Q b.c -l p
  58923.  
  58924.        In this case the -l Q operand need only precede the first -l p
  58925.        operand, since both libQ.a and libp.a reside in the same directory.
  58926.  
  58927.  
  58928.  
  58929.               Copyright (c) 1991 IEEE.  All rights reserved.
  58930.       This is an unapproved IEEE Standards Draft, subject to change.
  58931.  
  58932.  
  58933.  
  58934.  
  58935.  A.1 c89 - Compile Standard C programs                                 863
  58936.  
  58937.  
  58938.  
  58939.  
  58940.  
  58941.  
  58942.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  58943.  
  58944.        Multiple -L operands can be used when library name collisions
  58945.        occur.  Building on the previous example, suppose that we now want
  58946.        to use a new libp.a, in /a/a/a, but we still want _f() from
  58947.        /a/b/c/libQ.a.
  58948.  
  58949.              c89 -L /a/a/a -L /a/b/c main.o a.c -l Q b.c -l p
  58950.  
  58951.        In this example, the linker searches the -L options in the order
  58952.        specified, and finds /a/a/a/libp.a before /a/b/c/libp.a when
  58953.        resolving references for b.c.  The order of the -l operands is
  58954.        still important, however.
  58955.  
  58956.  There is the possible implication that if a user supplies versions of the
  58957.  standard library functions (before they would be encountered by an
  58958.  implicit -l c or explicit -l m), that those versions would be used in
  58959.  place of the standard versions.  There are various reasons this might not
  58960.  be true (functions defined as macros, manipulations for clean namespace,
  58961.  etc.), so the existence of files named in the same manner as the standard
  58962.  libraries within the -L directories is explicitly stated to produce
  58963.  unspecified behavior.
  58964.  
  58965.  Some historical implementations have permitted -L options to be
  58966.  interspersed with -l operands on the command line; with respect to POSIX,
  58967.  such behavior would be considered a vendor extension.  For an application
  58968.  to compile consistently on systems that do not behave like this, it is
  58969.  necessary for a conforming application to supply all -L options before
  58970.  any of the -l options.
  58971.  
  58972.  Some historical implementations have created .o files when -c is not
  58973.  specified and more than one source file is given.  Since this area is
  58974.  left unspecified, the application cannot rely on .o files being created,
  58975.  but it also must be prepared for any related .o files that already exist
  58976.  being deleted at the completion of the link edit.
  58977.  
  58978.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  58979.  
  58980.  The name of this utility differs from the historical cc name.  The
  58981.  C Standard {7} document was approved during the development of POSIX.2,
  58982.  and it is clear that POSIX must support Standard C; there is no other
  58983.  good way of specifying a C language.  The support of the C Standard {7}
  58984.  by c89 also mandates the Standard C math libraries.  An alternative
  58985.  approach was considered:  provide an option to select the type of
  58986.  compilation required.  However, it was found that all available option
  58987.  letters were already in use in the various historical cc utilities.
  58988.  Thus, this name change is being used essentially as a switch.  There was
  58989.  some temptation to use the name change as an excuse to mandate a cleaner
  58990.  interface (e.g., conform to the utility syntax guidelines), but this was
  58991.  resisted; the majority of early c89 implementations are expected to be
  58992.  satisfied with historical ccs with only minimal changes.  This was
  58993.  
  58994.  
  58995.               Copyright (c) 1991 IEEE.  All rights reserved.
  58996.       This is an unapproved IEEE Standards Draft, subject to change.
  58997.  
  58998.  
  58999.  
  59000.  
  59001.  864                             A C Language Development Utilities Option
  59002.  
  59003.  
  59004.  
  59005.  
  59006.  
  59007.  
  59008.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  59009.  
  59010.  decided more from the standpoint of existing applications and makefiles
  59011.  than for the implementors' sake.
  59012.  
  59013.  The -l _l_i_b_r_a_r_y operand must be capable of being interspersed with file
  59014.  name operands so that the order in which libraries are searched by the
  59015.  link editor can be specified.
  59016.  
  59017.  The search algorithm for -I _d_i_r_e_c_t_o_r_y states that the directory of the
  59018.  file with the #include file is searched first, rather than being
  59019.  implementation defined.  It is believed that this reflects most
  59020.  implementations, and it disallows variations on different
  59021.  implementations, since this would make it very difficult to distribute
  59022.  source code in a compatible form.
  59023.  
  59024.  The -I options are searched in the order specified (which is left to
  59025.  right in English).  This resolves the conflict of what header file is
  59026.  used if multiple files with the same name exist in different directories
  59027.  in the include path.
  59028.  
  59029.  In a future extension or supplement to this standard, _s_h_o_u_l_d will be
  59030.  changed to _s_h_a_l_l with respect to support for TMPDIR by applications.
  59031.  
  59032.  It is unclear whether c89 requires such a large number of file
  59033.  descriptors that its requirement should be documented here; POSIX.2
  59034.  remains silent on the issue.  It is also noted that an undocumented
  59035.  feature of some C compilers is that if file descriptor 9 is open, a
  59036.  linkage trace is written to it.
  59037.  
  59038.  There is no pseudo-_p_r_i_n_t_f() specification for compile errors because no
  59039.  common format could be identified.  As new C compilers are written, they
  59040.  are encouraged to use the following format:
  59041.  
  59042.        "%s: %s: %d %s\n", <_c_o_m_p_i_l_e_r _p_h_a_s_e>, <_f_i_l_e _n_a_m_e>, <_l_i_n_e _n_u_m_b_e_r>,
  59043.        <_e_x_p_l_a_n_a_t_i_o_n>
  59044.  
  59045.  The following option proposals were considered and rejected:
  59046.  
  59047.      (1)  The -M option in BSD does not exist in System V, and is not seen
  59048.           to enhance application portability.
  59049.  
  59050.      (2)  The -S option was not seen to enhance application portability,
  59051.           and makes assumptions about the underlying architecture.
  59052.  
  59053.  Earlier drafts included a -v option to select a compiler version.  Not
  59054.  only did this letter (and every other upper- and lowercase letter)
  59055.  collide with one historical implementation or another, but there was no
  59056.  agreement on how many compiler versions should be defined, or what they
  59057.  should mean.  Another choice is to specify that the cc utility invoke a
  59058.  Standard C compiler.  By specifying c89 instead, an installation is able
  59059.  
  59060.  
  59061.               Copyright (c) 1991 IEEE.  All rights reserved.
  59062.       This is an unapproved IEEE Standards Draft, subject to change.
  59063.  
  59064.  
  59065.  
  59066.  
  59067.  A.1 c89 - Compile Standard C programs                                 865
  59068.  
  59069.  
  59070.  
  59071.  
  59072.  
  59073.  
  59074.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  59075.  
  59076.  to link either a ``common usage'' or a Standard C compiler to the name
  59077.  cc.  Implementors are free to select implementation-defined options to
  59078.  select (nonportable) extensions to their existing C compiler to aid the
  59079.  transition to Standard C.
  59080.  
  59081.  The -g and -s options are not specified as mutually exclusive.
  59082.  Historically these two options have been mutually exclusive, but because
  59083.  both are so loosely specified, it seemed cleaner to leave their
  59084.  interaction unspecified.
  59085.  
  59086.  The -E option was added because headers are not required to be separate
  59087.  files in a POSIX.1-conformant system; these values could be hard-coded
  59088.  into the compiler, or might only be accessible in a nonportable way.
  59089.  Hence, while not strictly required for application portability, this
  59090.  option is a practical necessity as a portable means for ascertaining the
  59091.  real effects of preprocessor statements.
  59092.  
  59093.  In BSD systems, using -c and -o in the same command causes the object
  59094.  module to be stored in the specified file.  In System V, this produces an
  59095.  error condition.  Therefore, POSIX.2 indicates that this is an
  59096.  unspecified condition.
  59097.  
  59098.  Reasonably precise specification of standard library access is required.
  59099.  Implementations are not required to have /usr/lib/libc.a, etc., as many
  59100.  historical implementations do, but if not they are required to recognize
  59101.  c, m, l, and y as tokens.  Libraries l and y can be empty if the library
  59102.  functions specified for lex and yacc are accessible through the -l c
  59103.  operand.  Historically, these libraries have been necessary, but they are
  59104.  not required for a conforming implementation.
  59105.  
  59106.  External symbol size limits are in a normative subclause; portable
  59107.  applications need to know these limits.  However, the minimum maximum
  59108.  symbol length should be taken as a constraint on a portable application,
  59109.  not on an implementation, and consequently the action taken for a symbol
  59110.  exceeding the limit is unspecified.  The minimum size for the external
  59111.  symbol table was added for similar reasons.
  59112.  
  59113.  The Consequences of Errors subclause clearly specifies the compiler's
  59114.  behavior when compilation or link-edit error occur.  The behavior of
  59115.  several historical implementations was examined, and the choice was made
  59116.  to be silent on the status of the executable, or a.out, file in the face
  59117.  of compiler or linker errors.  If a linker writes the executable file,
  59118.  then links it on disk with _l_s_e_e_k()s and _w_r_i_t_e()s, the partially-linked
  59119.  executable can be left on disk and its execute bits turned off if the
  59120.  link edit fails.  However, if the linker links the image in memory before
  59121.  writing the file to disk, it need not touch the executable file (if it
  59122.  already exists) because the link edit fails.  Since both approaches are
  59123.  existing practice, a portable application shall rely on the exit status
  59124.  of c89, rather than on the existence or mode of the executable file.
  59125.  
  59126.  
  59127.               Copyright (c) 1991 IEEE.  All rights reserved.
  59128.       This is an unapproved IEEE Standards Draft, subject to change.
  59129.  
  59130.  
  59131.  
  59132.  
  59133.  866                             A C Language Development Utilities Option
  59134.  
  59135.  
  59136.  
  59137.  
  59138.  
  59139.  
  59140.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  59141.  
  59142.  The requirement that portable applications specify compiler options
  59143.  separately is to reserve the multicharacter option namespace for vendor-
  59144.  specific compiler options, which are known to exist in many historical
  59145.  implementations.  Implementations are not required to recognize, for
  59146.  example -gc as if it were -g -c; nor are they forbidden from doing so.
  59147.  The synopsis shows all of the options separately to highlight this
  59148.  requirement on applications.
  59149.  
  59150.  Echoing filenames to standard error is considered a diagnostic message,
  59151.  because it might otherwise be difficult to associate an error message
  59152.  with the erring file.  The text specifies either standard error or
  59153.  standard output for these messages because some historical practice uses
  59154.  standard output, but there was considerable sentiment expressed for
  59155.  allowing it to be on standard error instead.  The rationale for using
  59156.  standard output is that these are not really error message headers, but a
  59157.  running progress report on which files have been processed.  The messages
  59158.  are described as optional because there might be different ways of
  59159.  constructing the compiler's messages that should not be precluded.
  59160.  
  59161.  END_RATIONALE
  59162.  
  59163.  
  59164.  
  59165.  A.2  lex - Generate programs for lexical tasks
  59166.  
  59167.  
  59168.  A.2.1  Synopsis
  59169.  
  59170.  lex  [-t] [ -n | -v ] [_f_i_l_e ...]
  59171.  
  59172.  _O_b_s_o_l_e_s_c_e_n_t _V_e_r_s_i_o_n:
  59173.  lex  -c [-t] [ -n | -v ] [_f_i_l_e ...]
  59174.  
  59175.  
  59176.  A.2.2  Description
  59177.  
  59178.  The lex utility shall generate C programs to be used in lexical
  59179.  processing of character input, and that can be used as an interface to
  59180.  yacc (see A.3).  The C programs shall be generated from lex source code
  59181.  and conform to the C Standard {7}.  Usually, the lex utility writes the
  59182.  program it generates to the file lex.yy.c; the state of this file is
  59183.  unspecified if lex exits with a nonzero exit status.  See A.2.7 for a
  59184.  complete description of the lex input language.
  59185.  
  59186.  
  59187.  
  59188.  
  59189.  
  59190.  
  59191.  
  59192.  
  59193.               Copyright (c) 1991 IEEE.  All rights reserved.
  59194.       This is an unapproved IEEE Standards Draft, subject to change.
  59195.  
  59196.  
  59197.  
  59198.  
  59199.  A.2 lex - Generate programs for lexical tasks                         867
  59200.  
  59201.  
  59202.  
  59203.  
  59204.  
  59205.  
  59206.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  59207.  
  59208.  A.2.3  Options
  59209.  
  59210.  The lex utility shall conform to the utility argument syntax guidelines
  59211.  described in 2.10.2.
  59212.  
  59213.  The following options shall be supported by the implementation:
  59214.  
  59215.     -c          (Obsolescent.)  Indicate C-language action (default
  59216.                 option).
  59217.  
  59218.     -n          Suppress the summary of statistics usually written with
  59219.                 the -v option.  If no table sizes are specified in the lex
  59220.                 source code and the -v option is not specified, then -n is
  59221.                 implied.
  59222.  
  59223.     -t          Write the resulting program to standard output instead of
  59224.                 lex.yy.c.
  59225.  
  59226.     -v          Write a summary of lex statistics to the standard output.
  59227.                 (See the discussion of lex table sizes in A.2.7.1.)  If
  59228.                 the -t option is specified and -n is not specified, this
  59229.                 report shall be written to standard error.  If table sizes
  59230.                 are specified in the lex source code, and if the -n option
  59231.                 is not specified, the -v option may be enabled.
  59232.  
  59233.  
  59234.  A.2.4  Operands
  59235.  
  59236.  The following operand shall be supported by the implementation:
  59237.  
  59238.     _f_i_l_e        A pathname of an input file.  If more than one such _f_i_l_e
  59239.                 is specified, all files shall be concatenated to produce a
  59240.                 single lex program.  If no _f_i_l_e operands are specified, or
  59241.                 if a _f_i_l_e operand is -, the standard input shall be used.
  59242.  
  59243.  
  59244.  A.2.5  External Influences
  59245.  
  59246.  A.2.5.1  Standard Input
  59247.  
  59248.  The standard input shall be used if no _f_i_l_e operands are specified, or if
  59249.  a _f_i_l_e operand is -.  See Input Files.
  59250.  
  59251.  A.2.5.2  Input Files
  59252.  
  59253.  The input files shall be text files containing lex source code, as
  59254.  described in A.2.7.
  59255.  
  59256.  
  59257.  
  59258.  
  59259.               Copyright (c) 1991 IEEE.  All rights reserved.
  59260.       This is an unapproved IEEE Standards Draft, subject to change.
  59261.  
  59262.  
  59263.  
  59264.  
  59265.  868                             A C Language Development Utilities Option
  59266.  
  59267.  
  59268.  
  59269.  
  59270.  
  59271.  
  59272.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  59273.  
  59274.  A.2.5.3  Environment Variables
  59275.  
  59276.  The following environment variables shall affect the execution of lex:
  59277.  
  59278.     LANG               This variable shall determine the locale to use for
  59279.                        the locale categories when both LC_ALL and the
  59280.                        corresponding environment variable (beginning with
  59281.                        LC_) do not specify a locale.  See 2.6.
  59282.  
  59283.     LC_ALL             This variable shall determine the locale to be used
  59284.                        to override any values for locale categories
  59285.                        specified by the settings of LANG or any
  59286.                        environment variables beginning with LC_.
  59287.  
  59288.     LC_COLLATE         This variable shall determine the locale for the
  59289.                        behavior of ranges, equivalence classes, and
  59290.                        multicharacter collating elements within regular
  59291.                        expressions.  If this variable is not set to the
  59292.                        POSIX Locale, the results are unspecified.
  59293.  
  59294.     LC_CTYPE           This variable shall determine the locale for the
  59295.                        interpretation of sequences of bytes of text data
  59296.                        as characters (e.g., single- versus multibyte
  59297.                        characters in arguments and input files) and the
  59298.                        behavior of character classes within extended
  59299.                        regular expressions.  If this variable is not set
  59300.                        to the POSIX Locale, the results are unspecified.
  59301.  
  59302.     LC_MESSAGES        This variable shall determine the language in which
  59303.                        messages should be written.
  59304.  
  59305.  A.2.5.4  Asynchronous Events
  59306.  
  59307.  Default.
  59308.  
  59309.  
  59310.  A.2.6  External Effects
  59311.  
  59312.  A.2.6.1  Standard Output
  59313.  
  59314.  If the -t option is specified, the text file of C source code output of
  59315.  lex shall be written to standard output.
  59316.  
  59317.  If the -t option is not specified:
  59318.  
  59319.      (1)  Implementation-defined informational, error, and warning
  59320.           messages concerning the contents of lex source code input shall
  59321.           be written to either the standard output or standard error.
  59322.  
  59323.  
  59324.  
  59325.               Copyright (c) 1991 IEEE.  All rights reserved.
  59326.       This is an unapproved IEEE Standards Draft, subject to change.
  59327.  
  59328.  
  59329.  
  59330.  
  59331.  A.2 lex - Generate programs for lexical tasks                         869
  59332.  
  59333.  
  59334.  
  59335.  
  59336.  
  59337.  
  59338.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  59339.  
  59340.      (2)  If the -v option is specified and the -n option is not
  59341.           specified, lex statistics shall also be written to either the
  59342.           standard output or standard error, in an implementation-defined
  59343.           format.  These statistics may also be generated if table sizes
  59344.           are specified with a % operator in the _D_e_f_i_n_i_t_i_o_n_s section (see
  59345.           A.2.7), as long as the -n option is not specified.
  59346.  
  59347.  A.2.6.2  Standard Error
  59348.  
  59349.  If the -t option is specified, implementation-defined informational,
  59350.  error, and warning messages concerning the contents of lex source code
  59351.  input shall be written to the standard error.
  59352.  
  59353.  If the -t option is not specified:
  59354.  
  59355.      (1)  Implementation-defined informational, error, and warning
  59356.           messages concerning the contents of lex source code input shall
  59357.           be written to either the standard output or standard error.
  59358.  
  59359.      (2)  If the -v option is specified and the -n option is not
  59360.           specified, lex statistics shall also be written to either the
  59361.           standard output or standard error, in an implementation-defined
  59362.           format.  These statistics may also be generated if table sizes
  59363.           are specified with a % operator in the _D_e_f_i_n_i_t_i_o_n_s section (see
  59364.           A.2.7), as long as the -n option is not specified.
  59365.  
  59366.  A.2.6.3  Output Files
  59367.  
  59368.  A text file containing C source code shall be written to lex.yy.c, or to
  59369.  the standard output if the -t option is present.
  59370.  
  59371.  
  59372.  A.2.7  Extended Description
  59373.  
  59374.  Each input file contains lex source code, which is a table of regular
  59375.  expressions with corresponding actions in the form of C program
  59376.  fragments.
  59377.  
  59378.  When lex.yy.c is compiled and linked with the lex library (using the -l l
  59379.  operand with c89), the resulting program reads character input from the
  59380.  standard input and partitions it into strings that match the given
  59381.  expressions.
  59382.  
  59383.  When an expression is matched, these actions shall occur:
  59384.  
  59385.      - The input string that was matched is left in _y_y_t_e_x_t as a null-
  59386.        terminated string; _y_y_t_e_x_t is either an external character array or
  59387.        a pointer to a character string.  As explained in A.2.7.1, the type
  59388.        can be explicitly selected using the %array or %pointer
  59389.  
  59390.  
  59391.               Copyright (c) 1991 IEEE.  All rights reserved.
  59392.       This is an unapproved IEEE Standards Draft, subject to change.
  59393.  
  59394.  
  59395.  
  59396.  
  59397.  870                             A C Language Development Utilities Option
  59398.  
  59399.  
  59400.  
  59401.  
  59402.  
  59403.  
  59404.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  59405.  
  59406.        declarations, but the default is implementation defined.
  59407.  
  59408.      - The external _i_n_t _y_y_l_e_n_g is set to the length of the matching
  59409.        string.
  59410.  
  59411.      - The expression's corresponding program fragment, or action, is
  59412.        executed.
  59413.  
  59414.  During pattern matching, lex shall search the set of patterns for the      1
  59415.  single longest possible match.  Among rules that match the same number of  1
  59416.  characters, the rule given first shall be chosen.
  59417.  
  59418.  The general format of lex source is:
  59419.  
  59420.        _D_e_f_i_n_i_t_i_o_n_s
  59421.        %%
  59422.        _R_u_l_e_s
  59423.        %%
  59424.        _U_s_e_r _S_u_b_r_o_u_t_i_n_e_s
  59425.  
  59426.  The first %% is required to mark the beginning of the rules (regular
  59427.  expressions and actions); the second %% is required only if user
  59428.  subroutines follow.
  59429.  
  59430.  Any line in the _D_e_f_i_n_i_t_i_o_n_s section beginning with a <blank> shall be
  59431.  assumed to be a C program fragment and shall be copied to the external
  59432.  definition area of the lex.yy.c file.  Similarly, anything in the
  59433.  _D_e_f_i_n_i_t_i_o_n_s section included between delimiter lines containing only %{
  59434.  and %} shall also be copied unchanged to the external definition area of
  59435.  the lex.yy.c file.
  59436.  
  59437.  Any such input (beginning with a <blank> or within %{ and %} delimiter
  59438.  lines) appearing at the beginning of the _R_u_l_e_s section before any rules
  59439.  are specified shall be written to lex.yy.c after the declarations of
  59440.  variables for the _y_y_l_e_x() function and before the first line of code in
  59441.  _y_y_l_e_x().  Thus, user variables local to _y_y_l_e_x() can be declared here, as
  59442.  well as application code to execute upon entry to _y_y_l_e_x().
  59443.  
  59444.  The action taken by lex when encountering any input beginning with a
  59445.  <blank> or within %{ and %} delimiter lines appearing in the _R_u_l_e_s
  59446.  section but coming after one or more rules is undefined.  The presence of
  59447.  such input may result in an erroneous definition of the _y_y_l_e_x() function.
  59448.  
  59449.  _A._2._7._1  lex _D_e_f_i_n_i_t_i_o_n_s
  59450.  
  59451.  _D_e_f_i_n_i_t_i_o_n_s appear before the first %% delimiter.  Any line in this
  59452.  section not contained between %{ and %} lines and not beginning with a
  59453.  <blank> shall be assumed to define a lex substitution string.  The format
  59454.  of these lines is:
  59455.  
  59456.  
  59457.               Copyright (c) 1991 IEEE.  All rights reserved.
  59458.       This is an unapproved IEEE Standards Draft, subject to change.
  59459.  
  59460.  
  59461.  
  59462.  
  59463.  A.2 lex - Generate programs for lexical tasks                         871
  59464.  
  59465.  
  59466.  
  59467.  
  59468.  
  59469.  
  59470.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  59471.  
  59472.        _n_a_m_e _s_u_b_s_t_i_t_u_t_e
  59473.  
  59474.  If a _n_a_m_e does not meet the requirements for identifiers in the
  59475.  C Standard {7}, the result is undefined.  The string _s_u_b_s_t_i_t_u_t_e shall
  59476.  replace the string {_n_a_m_e} when it is used in a rule.  The _n_a_m_e string
  59477.  shall be recognized in this context only when the braces are provided and
  59478.  when it does not appear within a bracket expression or within double-
  59479.  quotes.
  59480.  
  59481.  In the _D_e_f_i_n_i_t_i_o_n_s section, any line beginning with a % (percent-sign)
  59482.  character and followed by an alphanumeric word beginning with either s or
  59483.  S shall define a set of start conditions.  Any line beginning with a %
  59484.  followed by a word beginning with either x or X shall define a set of
  59485.  exclusive start conditions.  When the generated scanner is in a %s state,
  59486.  patterns with no state specified shall be also active; in a %x state,
  59487.  such patterns shall not be active.  The rest of the line, after the first
  59488.  word, shall be considered to be one or more <blank>-_s_e_p_a_r_a_t_e_d names of
  59489.  start conditions.  Start condition names shall be constructed in the same
  59490.  way as definition names.  Start conditions can be used to restrict the
  59491.  matching of regular expressions to one or more states as described in the
  59492.  section A.2.7.4.
  59493.  
  59494.  Implementations shall accept either of the following two mutually
  59495.  exclusive declarations in the _D_e_f_i_n_i_t_i_o_n_s section:
  59496.  
  59497.     %array      Declare the type of _y_y_t_e_x_t to be a null-terminated
  59498.                 character array.
  59499.  
  59500.     %pointer    Declare the type of _y_y_t_e_x_t to be a pointer to a null-
  59501.                 terminated character string.
  59502.  
  59503.  The default type of _y_y_t_e_x_t is implementation defined.  If an application
  59504.  refers to _y_y_t_e_x_t outside of the scanner source file (i.e., via an
  59505.  extern), the application shall include the appropriate %array or %pointer
  59506.  declaration in the scanner source file.
  59507.  
  59508.  Implementations shall accept declarations in the _D_e_f_i_n_i_t_i_o_n_s section for
  59509.  setting certain internal table sizes.  The declarations are shown in
  59510.  Table A-1.  In the table, _n represents a positive decimal integer,
  59511.  preceded by one or more <blank>s.  The exact meaning of these table size
  59512.  numbers is implementation defined.  The implementation shall document how
  59513.  these numbers affect the lex utility and how they are related to any
  59514.  output that may be generated by the implementation should space
  59515.  limitations be encountered during the execution of lex.  It shall be
  59516.  possible to determine from this output which of the table size values
  59517.  needs to be modified to permit lex to successfully generate tables for
  59518.  the input language.  The values in the column Minimum Value represent the
  59519.  lowest values conforming implementations shall provide.
  59520.  
  59521.  
  59522.  
  59523.               Copyright (c) 1991 IEEE.  All rights reserved.
  59524.       This is an unapproved IEEE Standards Draft, subject to change.
  59525.  
  59526.  
  59527.  
  59528.  
  59529.  872                             A C Language Development Utilities Option
  59530.  
  59531.  
  59532.  
  59533.  
  59534.  
  59535.  
  59536.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  59537.  
  59538.  
  59539.                  Table A-1  -  lex Table Size Declarations
  59540.  __________________________________________________________________________________________________________________________________________________
  59541.                                                          Minimum
  59542.           Declaration            Description              Value
  59543.           ______________________________________________________
  59544.  
  59545.              %p _n       Number of positions               2500
  59546.              %n _n       Number of states                   500
  59547.              %a _n       Number of transitions             2000
  59548.              %e _n       Number of parse tree nodes        1000
  59549.              %k _n       Number of packed character        1000
  59550.                         classes
  59551.              %o _n       Size of the output array          3000
  59552.  __________________________________________________________________________________________________________________________________________________
  59553.  
  59554.  
  59555.  A.2.7.2  lex Rules
  59556.  
  59557.  The rules in lex source files are a table in which the left column
  59558.  contains regular expressions and the right column contains actions (C
  59559.  program fragments) to be executed when the expressions are recognized.
  59560.  
  59561.        _E_R_E _a_c_t_i_o_n
  59562.        _E_R_E _a_c_t_i_o_n
  59563.            ...
  59564.  
  59565.  The extended regular expression (_E_R_E) portion of a rule shall be
  59566.  separated from _a_c_t_i_o_n by one or more <blank>_s.  A regular expression
  59567.  containing <blank>_s shall be recognized under the following conditions:
  59568.  the entire expression appears within double-quotes; or, the <blank>_s
  59569.  appear within double-quotes or square brackets; or, each <blank> is
  59570.  preceded by a backslash character.
  59571.  
  59572.  _A._2._7._3  lex _U_s_e_r _S_u_b_r_o_u_t_i_n_e_s
  59573.  
  59574.  Anything in the user subroutines section shall be copied to lex.yy.c       1
  59575.  following _y_y_l_e_x().                                                         1
  59576.  
  59577.  _A._2._7._4  lex _R_e_g_u_l_a_r _E_x_p_r_e_s_s_i_o_n_s
  59578.  
  59579.  The lex utility shall support the set of extended regular expressions
  59580.  (see 2.8.4), with the following additions and exceptions to the syntax:
  59581.  
  59582.     "..."       Any string enclosed in double-quotes shall represent the    1
  59583.                 characters within the double-quotes as themselves, except   1
  59584.                 that backslash escapes (which appear in Table A-2) shall    1
  59585.                 be recognized.  Any backslash-escape sequence shall be      1
  59586.                 terminated by the closing quote.  For example, "\01""1"     1
  59587.  
  59588.  
  59589.               Copyright (c) 1991 IEEE.  All rights reserved.
  59590.       This is an unapproved IEEE Standards Draft, subject to change.
  59591.  
  59592.  
  59593.  
  59594.  
  59595.  A.2 lex - Generate programs for lexical tasks                         873
  59596.  
  59597.  
  59598.  
  59599.  
  59600.  
  59601.  
  59602.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  59603.  
  59604.                 represents a single string:  the octal value 1 followed by  1
  59605.                 the character 1.                                            1
  59606.  
  59607.     <_s_t_a_t_e>_r                                                                1
  59608.     <_s_t_a_t_e_1,_s_t_a_t_e_2,...>_r                                                    1
  59609.                 The regular expression _r shall be matched only when the     1
  59610.                 program is in one of the start conditions indicated by      1
  59611.                 _s_t_a_t_e, _s_t_a_t_e_1, etc.; see A.2.7.5.  (As an exception to the  1
  59612.                 typographical conventions of the rest of this standard, in
  59613.                 this case <_s_t_a_t_e> does not represent a metavariable, but
  59614.                 the literal angle-bracket characters surrounding a
  59615.                 symbol.)  The start condition shall be recognized as such   1
  59616.                 only at the beginning of a regular expression.              1
  59617.  
  59618.     _r/_x         The regular expression _r shall be matched only if it is
  59619.                 followed by an occurrence of regular expression _x.  The
  59620.                 token returned in _y_y_t_e_x_t shall only match _r.  If the
  59621.                 trailing portion of _r matches the beginning of _x, the
  59622.                 result is unspecified.  The _r expression cannot include
  59623.                 further trailing context or the $ (match-end-of-line)
  59624.                 operator; _x cannot include the ^ (match-beginning-of-line)
  59625.                 operator, nor trailing context, nor the $ operator.  That
  59626.                 is, only one occurrence of trailing context is allowed in
  59627.                 a lex regular expression, and the ^ operator only can be
  59628.                 used at the beginning of such an expression.
  59629.  
  59630.     {_n_a_m_e}      When _n_a_m_e is one of the substitution symbols from the
  59631.                 _D_e_f_i_n_i_t_i_o_n_s section (see A.2.7.1), the string, including
  59632.                 the enclosing braces, shall be replaced by the _s_u_b_s_t_i_t_u_t_e
  59633.                 value.  The _s_u_b_s_t_i_t_u_t_e value shall be treated in the
  59634.                 extended regular expression as if it were enclosed in
  59635.                 parentheses.  No substitution shall occur if {_n_a_m_e} occurs
  59636.                 within a bracket expression or within double-quotes.
  59637.  
  59638.  Within an ERE, a backslash character shall be considered to begin an
  59639.  escape sequence as specified in Table 2-15 (see 2.12).  In addition, the
  59640.  escape sequences in Table A-2 shall be recognized.
  59641.  
  59642.  A literal <newline> character cannot occur within an ERE; the escape       1
  59643.  sequence \n can be used to represent a <newline>.  A <newline> shall not   2
  59644.  be matched by a period operator.                                           2
  59645.  
  59646.  The order of precedence given to extended regular expressions for lex      2
  59647.  differs from that specified in Table 2-13.  The order of precedence for
  59648.  lex shall be as shown in Table A-3, from high to low.
  59649.  NOTE:  The escaped characters entry is not meant to imply that these are   2
  59650.  operators, but they are included in the table to show their relationships  2
  59651.  to the true operators.  The start condition, trailing context, and         2
  59652.  anchoring notations have been omitted from the table because of the        2
  59653.  
  59654.  
  59655.               Copyright (c) 1991 IEEE.  All rights reserved.
  59656.       This is an unapproved IEEE Standards Draft, subject to change.
  59657.  
  59658.  
  59659.  
  59660.  
  59661.  874                             A C Language Development Utilities Option
  59662.  
  59663.  
  59664.  
  59665.  
  59666.  
  59667.  
  59668.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  59669.  
  59670.  
  59671.                     Table A-2  -  lex Escape Sequences
  59672.  __________________________________________________________________________________________________________________________________________________
  59673.   Escape
  59674.  Sequence             Description                        Meaning
  59675.  _________________________________________________________________________
  59676.  
  59677.  \_d_i_g_i_t_s        <backslash> followed by        The character whose          111
  59678.                 the longest sequence of        encoding is represented by   11
  59679.                 one, two, or three             the one-, two-, or three-    11
  59680.                 octal-digit characters         digit octal integer.  If     11
  59681.                 (01234567). If all of          the size of a byte on the    11
  59682.                 the digits are 0,              system is greater than nine  11
  59683.                 (i.e., representation          bits, the valid escape       11
  59684.                 of the NUL character),         sequence used to represent   11
  59685.                 the behavior is                a byte is implementation-    11
  59686.                 undefined.                     defined.  Multibyte          11
  59687.                                                characters require           1
  59688.                                                multiple, concatenated       1
  59689.                                                escape sequences of this     1
  59690.                                                type, including the leading  1
  59691.                                                \ for each byte.             1
  59692.  
  59693.  \x_d_i_g_i_t_s       <backslash> followed by        The character whose          111
  59694.                 the longest sequence of        encoding is represented by   11
  59695.                 hexadecimal-digit              the hexadecimal integer.     11
  59696.                 characters                                                  1
  59697.                 (01234567abcdefABCDEF).                                     1
  59698.                 If all of the digits                                        1
  59699.                 are 0, (i.e.,                                               1
  59700.                 representation of the                                       1
  59701.                 NUL character), the                                         1
  59702.                 behavior is undefined.                                      1
  59703.  
  59704.     \_c          <backslash> followed by        The character _c, unchanged.
  59705.                 any character not
  59706.                 described in this table
  59707.                 or in Table 2-15
  59708.  __________________________________________________________________________________________________________________________________________________
  59709.  
  59710.                      Table A-3  -  lex ERE Precedence
  59711.  __________________________________________________________________________________________________________________________________________________
  59712.  
  59713.                                                                             2
  59714.          _c_o_l_l_a_t_i_o_n-_r_e_l_a_t_e_d _b_r_a_c_k_e_t _s_y_m_b_o_l_s   [= =]  [: :]  [. .]
  59715.          _e_s_c_a_p_e_d _c_h_a_r_a_c_t_e_r_s                  \<_s_p_e_c_i_a_l _c_h_a_r_a_c_t_e_r>           1
  59716.          _b_r_a_c_k_e_t _e_x_p_r_e_s_s_i_o_n                  [ ]                            1
  59717.          _q_u_o_t_i_n_g                             "..."                          1
  59718.          _g_r_o_u_p_i_n_g                            ( )                            1
  59719.  
  59720.  
  59721.               Copyright (c) 1991 IEEE.  All rights reserved.
  59722.       This is an unapproved IEEE Standards Draft, subject to change.
  59723.  
  59724.  
  59725.  
  59726.  
  59727.  A.2 lex - Generate programs for lexical tasks                         875
  59728.  
  59729.  
  59730.  
  59731.  
  59732.  
  59733.  
  59734.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  59735.  
  59736.          _d_e_f_i_n_i_t_i_o_n                          {_n_a_m_e}                         1
  59737.          _s_i_n_g_l_e-_c_h_a_r_a_c_t_e_r _R_E _d_u_p_l_i_c_a_t_i_o_n     * + ?                          1
  59738.          _c_o_n_c_a_t_e_n_a_t_i_o_n                                                      1
  59739.          _i_n_t_e_r_v_a_l _e_x_p_r_e_s_s_i_o_n                 {_m,_n}
  59740.                                                                             2
  59741.          _a_l_t_e_r_n_a_t_i_o_n                         |
  59742.                                                                             2
  59743.  __________________________________________________________________________________________________________________________________________________
  59744.  
  59745.  
  59746.  placement restrictions described in this subclause; they can only appear   2
  59747.  at the beginning or ending of an ERE.                                      2
  59748.  
  59749.  The ERE anchoring operators (^ and $) do not appear in Table A-3.  With    2
  59750.  lex regular expressions, these operators are restricted in their use:      2
  59751.  the ^ operator can only be used at the beginning of an entire regular      2
  59752.  expression, and the $ operator only at the end.  The operators apply to    2
  59753.  the entire regular expression.  Thus, for example, the pattern             2
  59754.  (^abc)|(def$) is undefined; it can instead be written as two separate      2
  59755.  rules, one with the regular expression ^abc and one with def$, which       2
  59756.  share a common action via the special | action (see below).  If the        2
  59757.  pattern were written ^abc|def$, it would match either of abc or def on a   2
  59758.  line by itself.  Note also that $ is a form of trailing context (it is     2
  59759.  equivalent to /\n) and as such cannot be used with regular expressions     2
  59760.  containing another instance of the operator (see the preceding discussion  2
  59761.  of trailing context).                                                      2
  59762.  
  59763.  The additional regular expressions trailing-context operator / can be      1
  59764.  used as an ordinary character if presented within double-quotes, "/";      1
  59765.  preceded by a backslash, \/; or within a bracket expression, [/].  The     1
  59766.  start-condition < and > operators shall be special only in a start         1
  59767.  condition at the beginning of a regular expression; elsewhere in the       1
  59768.  regular expression they shall be treated as ordinary characters.           1
  59769.  
  59770.  A.2.7.5  lex Actions
  59771.  
  59772.  The action to be taken when an _E_R_E is matched can be a C program fragment
  59773.  or the special actions described below; the program fragment can contain
  59774.  one or more C statements, and can also include special actions.  The
  59775.  empty C statement ; shall be a valid action; any string in the lex.yy.c
  59776.  input that matches the pattern portion of such a rule is effectively
  59777.  ignored or skipped.  However, the absence of an action shall not be
  59778.  valid, and the action lex takes in such a condition is undefined.
  59779.  
  59780.  The specification for an action, including C statements and/or special
  59781.  actions, can extend across several lines if enclosed in braces:
  59782.  
  59783.  
  59784.  
  59785.  
  59786.  
  59787.               Copyright (c) 1991 IEEE.  All rights reserved.
  59788.       This is an unapproved IEEE Standards Draft, subject to change.
  59789.  
  59790.  
  59791.  
  59792.  
  59793.  876                             A C Language Development Utilities Option
  59794.  
  59795.  
  59796.  
  59797.  
  59798.  
  59799.  
  59800.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  59801.  
  59802.        _E_R_E <_b_l_a_n_k(_s)> { _p_r_o_g_r_a_m _s_t_a_t_e_m_e_n_t
  59803.                         _p_r_o_g_r_a_m _s_t_a_t_e_m_e_n_t }
  59804.  
  59805.  The default action when a string in the input to a lex.yy.c program is
  59806.  not matched by any expression shall be to copy the string to the output.
  59807.  Because the default behavior of a program generated by lex is to read the
  59808.  input and copy it to the output, a minimal lex source program that has
  59809.  just %% shall generate a C program that simply copies the input to the
  59810.  output unchanged.
  59811.  
  59812.  Four special actions shall be available:  ``|'', ``ECHO;'', ``REJECT;'',   1
  59813.  and ``BEGIN'':                                                             1
  59814.  
  59815.     |           The action | means that the action for the next rule is
  59816.                 the action for this rule.  Unlike the other three actions,
  59817.                 | cannot be enclosed in braces or be semicolon-terminated;
  59818.                 it shall be specified alone, with no other actions.
  59819.  
  59820.     ECHO;       Write the contents of the string _y_y_t_e_x_t on the output.      1
  59821.  
  59822.     REJECT;     Usually only a single expression is matched by a given      1
  59823.                 string in the input.  REJECT means ``continue to the next
  59824.                 expression that matches the current input,'' and causes
  59825.                 whatever rule was the second choice after the current rule
  59826.                 to be executed for the same input.  Thus, multiple rules
  59827.                 can be matched and executed for one input string or
  59828.                 overlapping input strings.  For example, given the regular
  59829.                 expressions xyz and xy and the input xyz, usually only the
  59830.                 regular expression xyz would match.  The next attempted
  59831.                 match would start after z. If the last action in the xyz
  59832.                 rule is REJECT, both this rule and the xy rule would be
  59833.                 executed.  The REJECT action may be implemented in such a
  59834.                 fashion that flow of control does not continue after it,
  59835.                 as if it were equivalent to a goto to another part of
  59836.                 _y_y_l_e_x().  The use of REJECT may result in somewhat larger
  59837.                 and slower scanners.
  59838.  
  59839.     BEGIN       The
  59840.  
  59841.                       BEGIN _n_e_w_s_t_a_t_e;
  59842.  
  59843.                 action switches the state (start condition) to _n_e_w_s_t_a_t_e.
  59844.                 If the string _n_e_w_s_t_a_t_e has not been declared previously as
  59845.                 a start condition in the _D_e_f_i_n_i_t_i_o_n_s section, the results
  59846.                 are unspecified.  The initial state is indicated by the
  59847.                 digit 0 or the token INITIAL.
  59848.  
  59849.  The functions or macros described below are accessible to user code
  59850.  included in the lex input.  It is unspecified whether they appear in the
  59851.  
  59852.  
  59853.               Copyright (c) 1991 IEEE.  All rights reserved.
  59854.       This is an unapproved IEEE Standards Draft, subject to change.
  59855.  
  59856.  
  59857.  
  59858.  
  59859.  A.2 lex - Generate programs for lexical tasks                         877
  59860.  
  59861.  
  59862.  
  59863.  
  59864.  
  59865.  
  59866.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  59867.  
  59868.  C code output of lex, or are accessible only through the -l l operand to
  59869.  c89 (the lex library).
  59870.  
  59871.     int yylex(void)       Performs lexical analysis on the input; this is
  59872.                           the primary function generated by the lex
  59873.                           utility.  The function shall return zero when
  59874.                           the end of input is reached; otherwise it shall
  59875.                           return nonzero values (tokens) determined by the
  59876.                           actions that are selected.
  59877.  
  59878.     int yymore(void)      When called, indicates that when the next input
  59879.                           string is recognized, it is to be appended to
  59880.                           the current value of _y_y_t_e_x_t rather than
  59881.                           replacing it; the value in _y_y_l_e_n_g shall be
  59882.                           adjusted accordingly.
  59883.  
  59884.     int yyless(int _n)     Retains _n initial characters in _y_y_t_e_x_t, NUL-
  59885.                           terminated, and treats the remaining characters
  59886.                           as if they had not been read; the value in
  59887.                           _y_y_l_e_n_g shall be adjusted accordingly.
  59888.  
  59889.     int input(void)       Returns the next character from the input, or
  59890.                           zero on end of file.  It shall obtain input from
  59891.                           the stream pointer _y_y_i_n, although possibly via
  59892.                           an intermediate buffer.  Thus, once scanning has
  59893.                           begun, the effect of altering the value of _y_y_i_n
  59894.                           is undefined.  The character read is removed
  59895.                           from the input stream of the scanner without any
  59896.                           processing by the scanner.
  59897.  
  59898.     int unput(int _c)      Returns the character _c to the input; _y_y_t_e_x_t and
  59899.                           _y_y_l_e_n_g are undefined until the next expression
  59900.                           is matched.  The result of _u_n_p_u_tting more
  59901.                           characters than have been input is unspecified.
  59902.  
  59903.  The following functions appear only in the lex library accessible through
  59904.  the -l l operand; they can therefore be redefined by a portable
  59905.  application:
  59906.  
  59907.     int yywrap(void)      Called by _y_y_l_e_x() at end of file; the default
  59908.                           _y_y_w_r_a_p() always shall return 1.  If the
  59909.                           application requires _y_y_l_e_x() to continue
  59910.                           processing with another source of input, then
  59911.                           the application can include a function _y_y_w_r_a_p(),
  59912.                           which associates another file with the external
  59913.                           variable FILE *_y_y_i_n and shall return a value of
  59914.                           zero.
  59915.  
  59916.  
  59917.  
  59918.  
  59919.               Copyright (c) 1991 IEEE.  All rights reserved.
  59920.       This is an unapproved IEEE Standards Draft, subject to change.
  59921.  
  59922.  
  59923.  
  59924.  
  59925.  878                             A C Language Development Utilities Option
  59926.  
  59927.  
  59928.  
  59929.  
  59930.  
  59931.  
  59932.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  59933.  
  59934.     int main(int argc, char *argv[])
  59935.                           Calls _y_y_l_e_x() to perform lexical analysis, then
  59936.                           exits.  The user code can contain _m_a_i_n() to
  59937.                           perform application-specific operations, calling
  59938.                           _y_y_l_e_x() as applicable.
  59939.  
  59940.  Except for _i_n_p_u_t(), _u_n_p_u_t(), and _m_a_i_n(), all external and static names
  59941.  generated by lex shall begin with the prefix yy or YY.
  59942.  
  59943.  
  59944.  A.2.8  Exit Status
  59945.  
  59946.  The lex utility shall exit with one of the following values:
  59947.  
  59948.      0    Successful completion.
  59949.  
  59950.     >0    An error occurred.
  59951.  
  59952.  
  59953.  A.2.9  Consequences of Errors
  59954.  
  59955.  Default.
  59956.  
  59957.  BEGIN_RATIONALE
  59958.  
  59959.  
  59960.  A.2.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  59961.  
  59962.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  59963.  
  59964.  The following is an example of a lex program that implements a
  59965.  rudimentary scanner for a Pascal-like syntax:
  59966.  
  59967.  %{
  59968.  /* need this for the call to atof() below */
  59969.  #include <math.h>
  59970.  /* need this for printf(), fopen(), and stdin below */
  59971.  #include <stdio.h>
  59972.  %}
  59973.  
  59974.  DIGIT    [0-9]
  59975.  ID       [a-z][a-z0-9]*
  59976.  
  59977.  %%
  59978.  
  59979.  {DIGIT}+    {
  59980.          printf("An integer: %s (%d)\n", yytext,
  59981.                  atoi(yytext));
  59982.          }
  59983.  
  59984.  
  59985.               Copyright (c) 1991 IEEE.  All rights reserved.
  59986.       This is an unapproved IEEE Standards Draft, subject to change.
  59987.  
  59988.  
  59989.  
  59990.  
  59991.  A.2 lex - Generate programs for lexical tasks                         879
  59992.  
  59993.  
  59994.  
  59995.  
  59996.  
  59997.  
  59998.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  59999.  
  60000.  {DIGIT}+"."{DIGIT}*        {
  60001.          printf("A float: %s (%g)\n", yytext,
  60002.                  atof(yytext));
  60003.          }
  60004.  
  60005.  if|then|begin|end|procedure|function        {
  60006.          printf("A keyword: %s\n", yytext);
  60007.          }
  60008.  
  60009.  {ID}    printf("An identifier: %s\n", yytext);
  60010.  
  60011.  "+"|"-"|"*"|"/"         printf("An operator: %s\n", yytext);
  60012.  
  60013.  "{"[^}\n]*"}"           /* eat up one-line comments */
  60014.  
  60015.  [ \t\n]+                /* eat up white space */
  60016.  
  60017.  .       printf("Unrecognized character: %s\n", yytext);
  60018.  
  60019.  %%
  60020.  
  60021.  int main(int argc, char *argv[])
  60022.  {
  60023.          ++argv, --argc;  /* skip over program name */
  60024.          if (argc > 0)
  60025.                  yyin = fopen(argv[0], "r");
  60026.          else
  60027.                  yyin = stdin;
  60028.  
  60029.          yylex();
  60030.  }
  60031.  
  60032.  The following examples have been included to clarify the differences
  60033.  between lex regular expressions and regular expressions appearing
  60034.  elsewhere in this document.  For regular expressions of the form _r/_x, the
  60035.  string matching _r is always returned; confusion may arise when the
  60036.  beginning of _x matches the trailing portion of _r.  For example, given the
  60037.  regular expression a*b/cc and the input aaabcc, _y_y_t_e_x_t would contain the
  60038.  string aaab on this match.  But given the regular expression x*/xy and
  60039.  the input xxxy, the token xxx, not xx, is returned by some
  60040.  implementations because xxx matches x*.
  60041.  
  60042.  In the rule ab*/bc, the b* at the end of _r will extend _r's match into the
  60043.  beginning of the trailing context, so the result is unspecified.  If this
  60044.  rule were ab/bc, however, the rule matches the text ab when it is
  60045.  followed by the text bc.  In this latter case, the matching of _r cannot
  60046.  extend into the beginning of _x, so the result is specified.
  60047.  
  60048.  
  60049.  
  60050.  
  60051.               Copyright (c) 1991 IEEE.  All rights reserved.
  60052.       This is an unapproved IEEE Standards Draft, subject to change.
  60053.  
  60054.  
  60055.  
  60056.  
  60057.  880                             A C Language Development Utilities Option
  60058.  
  60059.  
  60060.  
  60061.  
  60062.  
  60063.  
  60064.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  60065.  
  60066.  Unlike the general ERE rules, embedded anchoring is not allowed by most    2
  60067.  historical lex implementations.  An example of embedded anchoring would    2
  60068.  be for patterns such as (^| )foo( |$) to match foo when it exists as a     2
  60069.  complete word.  This functionality can be obtained using existing lex      2
  60070.  features:                                                                  2
  60071.  
  60072.        ^foo/[ \n]      |                                                    2
  60073.        " foo"/[ \n]    /* found foo as a separate word */                   2
  60074.  
  60075.  The precedence of regular expressions in lex does not match that of
  60076.  extended regular expressions in Section 2 because of historical practice.
  60077.  In System V lex and its predecessors, a regular expression of the form
  60078.  ab{3} matches ababab; an ERE, such as used by egrep, would match abbb.
  60079.  Changing this precedence for uniformity with egrep would have been
  60080.  desirable, but too many applications would break in nonobvious ways.
  60081.  
  60082.  Conforming applications are warned that in the _R_u_l_e_s section, an _E_R_E
  60083.  without an action is not acceptable, but need not be detected as
  60084.  erroneous by lex.  This may result in compilation or run-time errors.
  60085.  
  60086.  The purpose of _i_n_p_u_t() is to take characters off the input stream and
  60087.  discard them as far as the lexical analysis is concerned.  A common use
  60088.  is to discard the body of a comment once the beginning of a comment is
  60089.  recognized.
  60090.  
  60091.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  60092.  
  60093.  Even though the -c option and references to the C language are retained
  60094.  in this description, lex may be generalized to other languages, as was
  60095.  done at one time for EFL, Extended FORTRAN Language.  Since the lex input
  60096.  specification is essentially language independent, versions of this
  60097.  utility could be written to produce Ada, Modula-2, or Pascal code, and
  60098.  there are known historical implementations that do so.
  60099.  
  60100.  The current description of lex bypasses the issue of dealing with
  60101.  internationalized regular expressions in the lex source code or generated
  60102.  lexical analyzer.  If it follows the model used by awk, (the source code
  60103.  is assumed to be presented in the POSIX Locale, but input and output are
  60104.  in the locale specified by the environment variables), then the tables in
  60105.  the lexical analyzer produced by lex would interpret regular expressions
  60106.  specified in the lex source in terms of the environment variables
  60107.  specified when lex was executed.  The desired effect would be to have the
  60108.  lexical analyzer interpret the regular expressions given in the lex
  60109.  source according to the environment specified when the lexical analyzer
  60110.  is executed, but this is not possible with the current lex technology.
  60111.  
  60112.  Major international vendors believe that only limited
  60113.  internationalization is required for the POSIX.2 lex.  The theoretically
  60114.  desirable goal of runtime-selectable locales is not feasible in the near
  60115.  
  60116.  
  60117.               Copyright (c) 1991 IEEE.  All rights reserved.
  60118.       This is an unapproved IEEE Standards Draft, subject to change.
  60119.  
  60120.  
  60121.  
  60122.  
  60123.  A.2 lex - Generate programs for lexical tasks                         881
  60124.  
  60125.  
  60126.  
  60127.  
  60128.  
  60129.  
  60130.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  60131.  
  60132.  future.  Furthermore, the very nature of the lexical analyzers produced
  60133.  by lex must be closely tied to the lexical requirements of the input
  60134.  language being described, which will frequently be locale-specific
  60135.  anyway.  (For example, writing an analyzer that is used for French text
  60136.  will not automatically be useful for processing other languages.)  The
  60137.  text in the Environment Variable subclause allows locale-specific regular
  60138.  expression handling, but mandates only something similar to that provided
  60139.  in historical implementations.
  60140.  
  60141.  The description of octal- and hexadecimal-digit escape sequences agrees    1
  60142.  with the C Standard {7} use of escape sequences.  See the rationale for    1
  60143.  ed for a discussion of bytes larger than nine bits being represented by    1
  60144.  octal values.  Hexadecimal values can represent larger bytes and           1
  60145.  multibyte characters directly, using as many digits as required.           1
  60146.  
  60147.  There is no detailed output format specification.  The observed behavior
  60148.  of lex under four different historical implementations was that none of
  60149.  these implementations consistently reported the line numbers for error
  60150.  and warning messages.  Furthermore, there was a desire that lex be
  60151.  allowed to output additional diagnostic messages.  Leaving message
  60152.  formats unspecified sidesteps these formatting questions and also avoids
  60153.  problems with internationalization.
  60154.  
  60155.  Although the %x specifier for exclusive start conditions is not existing
  60156.  practice, it is believed to be a minor change to historical
  60157.  implementations, and greatly enhances the usability of lex programs since
  60158.  it permits an application to obtain the expected functionality with fewer
  60159.  statements.
  60160.  
  60161.  The %array and %pointer declarations were added as a compromise between
  60162.  historical systems.  The System V-based lex has copied the matched text
  60163.  to a _y_y_t_e_x_t array.  The flex program, supported in BSD and GNU systems,
  60164.  uses a pointer.  In the latter case, significant performance improvements
  60165.  are available for some scanners.  Most existing programs should require
  60166.  no change in porting from one system to another because the string being
  60167.  referenced is null-terminated in both cases.  (The method used by flex in
  60168.  its case is to null-terminate the token in-place by remembering the
  60169.  character that used to come right after the token and replacing it before
  60170.  continuing on to the next scan.)  Multifile programs with external
  60171.  references to _y_y_t_e_x_t outside the scanner source file should continue to
  60172.  operate on their existing systems, but would require one of the new
  60173.  declarations to be considered strictly portable.
  60174.  
  60175.  The description of regular expressions avoids unnecessary duplication of
  60176.  regular expression details.  Specifically, the | operator and {_m,_n}
  60177.  interval expression are not listed in A.2.7.4 because their meanings
  60178.  within a lex regular expression are the same as that for extended regular
  60179.  expressions.
  60180.  
  60181.  
  60182.  
  60183.               Copyright (c) 1991 IEEE.  All rights reserved.
  60184.       This is an unapproved IEEE Standards Draft, subject to change.
  60185.  
  60186.  
  60187.  
  60188.  
  60189.  882                             A C Language Development Utilities Option
  60190.  
  60191.  
  60192.  
  60193.  
  60194.  
  60195.  
  60196.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  60197.  
  60198.  The reason for the undefined condition associated with text beginning
  60199.  with a <blank> or within %{ and %} delimiter lines appearing in the _R_u_l_e_s
  60200.  section is historical practice.  Both BSD and System V lex copy the
  60201.  indented (or enclosed) input in the _R_u_l_e_s section (except at the
  60202.  beginning) to unreachable areas of the _y_y_l_e_x() function (the code is
  60203.  written directly after a break statement).  In some cases, the System V
  60204.  lex generates an error message or a syntax error, depending on the form
  60205.  of indented input.
  60206.  
  60207.  The intention in breaking the list of functions into those that may
  60208.  appear in lex.yy.c versus those that only appear in libl.a is that only
  60209.  those functions in libl.a can be reliably redefined by a portable
  60210.  application.
  60211.  
  60212.  The descriptions of Standard Output and Standard Error are somewhat
  60213.  complicated because historical lex implementations chose to issue
  60214.  diagnostic messages to standard output (unless -t was given).  POSIX.2
  60215.  allows this behavior, but leaves an opening for the more expected
  60216.  behavior of using standard error for diagnostics.  Also, the System V
  60217.  behavior of writing the statistics when any table sizes are given is
  60218.  allowed, while BSD-derived systems can avoid it.  The programmer can
  60219.  always precisely obtain the desired results by using either the -t or -n
  60220.  options.
  60221.  
  60222.  The Operands subclause does not mention the use of - as a synonym for
  60223.  standard input; not all historical implementations support such usage for
  60224.  any of the _f_i_l_e operands.
  60225.  
  60226.  The description of the _T_r_a_n_s_l_a_t_i_o_n _T_a_b_l_e was deleted from earlier drafts
  60227.  because of its relatively low usage in historical applications.
  60228.  
  60229.  The change to the definition of the _i_n_p_u_t() function that allows
  60230.  buffering of input presents the opportunity for major performance gains
  60231.  in some applications.
  60232.  
  60233.  END_RATIONALE
  60234.  
  60235.  
  60236.  
  60237.  
  60238.  
  60239.  
  60240.  
  60241.  
  60242.  
  60243.  
  60244.  
  60245.  
  60246.  
  60247.  
  60248.  
  60249.               Copyright (c) 1991 IEEE.  All rights reserved.
  60250.       This is an unapproved IEEE Standards Draft, subject to change.
  60251.  
  60252.  
  60253.  
  60254.  
  60255.  A.2 lex - Generate programs for lexical tasks                         883
  60256.  
  60257.  
  60258.  
  60259.  
  60260.  
  60261.  
  60262.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  60263.  
  60264.  A.3  yacc - Yet another compiler compiler
  60265.  
  60266.  
  60267.  A.3.1  Synopsis
  60268.  
  60269.  yacc  [-dltv] [-b _f_i_l_e__p_r_e_f_i_x] [-p _s_y_m__p_r_e_f_i_x] _g_r_a_m_m_a_r
  60270.  
  60271.  
  60272.  A.3.2  Description
  60273.  
  60274.  The yacc utility shall read a description of a context-free grammar in
  60275.  _f_i_l_e and write C source code, conforming to the C Standard {7}, to a code
  60276.  file, and optionally header information into a header file, in the
  60277.  current directory.  The C code shall define a function and related
  60278.  routines and macros for an automaton that executes a parsing algorithm
  60279.  meeting the requirements in A.3.7.8.
  60280.  
  60281.  The form and meaning of the grammar is described in A.3.7.
  60282.  
  60283.  The C source code and header file shall be produced in a form suitable as
  60284.  input for the C compiler (see c89 in A.1).
  60285.  
  60286.  
  60287.  A.3.3  Options
  60288.  
  60289.  The yacc utility shall conform to the utility argument syntax guidelines
  60290.  described in 2.10.2.
  60291.  
  60292.  The following options shall be supported by the implementation:
  60293.  
  60294.     -b _f_i_l_e__p_r_e_f_i_x
  60295.                 Use _f_i_l_e__p_r_e_f_i_x instead of y as the prefix for all output
  60296.                 filenames.  The code file y.tab.c, the header file y.tab.h
  60297.                 (created when -d is specified), and the description file
  60298.                 y.output (created when -v is specified), shall be changed
  60299.                 to _f_i_l_e__p_r_e_f_i_x.tab.c, _f_i_l_e__p_r_e_f_i_x.tab.h, and
  60300.                 _f_i_l_e__p_r_e_f_i_x.output, respectively.
  60301.  
  60302.     -d          Write the header file; by default only the code file is
  60303.                 written.
  60304.  
  60305.     -l          Produce a code file that does not contain any #line
  60306.                 constructs.  If this option is not present, it is
  60307.                 unspecified whether the code file or header file contains
  60308.                 #line directives.
  60309.  
  60310.     -p _s_y_m__p_r_e_f_i_x
  60311.                 Use _s_y_m__p_r_e_f_i_x instead of yy as the prefix for all          2
  60312.                 external names produced by yacc.  The names affected shall  2
  60313.  
  60314.  
  60315.               Copyright (c) 1991 IEEE.  All rights reserved.
  60316.       This is an unapproved IEEE Standards Draft, subject to change.
  60317.  
  60318.  
  60319.  
  60320.  
  60321.  884                             A C Language Development Utilities Option
  60322.  
  60323.  
  60324.  
  60325.  
  60326.  
  60327.  
  60328.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  60329.  
  60330.                 include the functions _y_y_p_a_r_s_e(), _y_y_l_e_x(), and _y_y_e_r_r_o_r(),
  60331.                 and the variables _y_y_l_v_a_l, _y_y_c_h_a_r, and _y_y_d_e_b_u_g. (In the
  60332.                 remainder of this clause, the six symbols cited are
  60333.                 referenced using their default names only as a notational
  60334.                 convenience.)  Local names may also be affected by the -p   2
  60335.                 option; however, the -p option shall not affect yacc-       2
  60336.                 generated #define symbols.                                  2
  60337.  
  60338.     -t          Modify conditional compilation directives to permit
  60339.                 compilation of debugging code in the code file.  Runtime
  60340.                 debugging statements shall be always contained in the code
  60341.                 file, but by default conditional compilation directives
  60342.                 prevent their compilation.
  60343.  
  60344.     -v          Write a file containing a description of the parser and a
  60345.                 report of conflicts generated by ambiguities in the
  60346.                 grammar.
  60347.  
  60348.  
  60349.  A.3.4  Operands
  60350.  
  60351.  The following operand is required:
  60352.  
  60353.     _g_r_a_m_m_a_r     A pathname of a file containing instructions, hereafter
  60354.                 called _g_r_a_m_m_a_r, for which a parser is to be created.  The
  60355.                 format for the grammar is described in A.3.7.
  60356.  
  60357.  
  60358.  A.3.5  External Influences
  60359.  
  60360.  A.3.5.1  Standard Input
  60361.  
  60362.  None.
  60363.  
  60364.  A.3.5.2  Input Files
  60365.  
  60366.  The file _g_r_a_m_m_a_r shall be a text file formatted as specified in A.3.7.
  60367.  
  60368.  A.3.5.3  Environment Variables
  60369.  
  60370.  The following environment variables shall affect the execution of yacc:
  60371.  
  60372.     LANG               This variable shall determine the locale to use for
  60373.                        the locale categories when both LC_ALL and the
  60374.                        corresponding environment variable (beginning with
  60375.                        LC_) do not specify a locale.  See 2.6.
  60376.  
  60377.  
  60378.  
  60379.  
  60380.  
  60381.               Copyright (c) 1991 IEEE.  All rights reserved.
  60382.       This is an unapproved IEEE Standards Draft, subject to change.
  60383.  
  60384.  
  60385.  
  60386.  
  60387.  A.3 yacc - Yet another compiler compiler                              885
  60388.  
  60389.  
  60390.  
  60391.  
  60392.  
  60393.  
  60394.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  60395.  
  60396.     LC_ALL             This variable shall determine the locale to be used
  60397.                        to override any values for locale categories
  60398.                        specified by the settings of LANG or any
  60399.                        environment variables beginning with LC_.
  60400.  
  60401.     LC_CTYPE           This variable shall determine the locale for the
  60402.                        interpretation of sequences of bytes of text data
  60403.                        as characters (e.g., single- versus multibyte
  60404.                        characters in arguments and input files).
  60405.  
  60406.     LC_MESSAGES        This variable shall determine the language in which
  60407.                        messages should be written.
  60408.  
  60409.  The LANG and LC_* variables shall affect the execution of the yacc
  60410.  utility as stated.  The _m_a_i_n() function defined in A.3.7.6 shall call
  60411.  
  60412.        setlocale(LC_ALL, "")
  60413.  
  60414.  and thus, the program generated by yacc shall also be affected by the the
  60415.  contents of these variables at runtime.
  60416.  
  60417.  A.3.5.4  Asynchronous Events
  60418.  
  60419.  Default.
  60420.  
  60421.  
  60422.  A.3.6  External Effects
  60423.  
  60424.  A.3.6.1  Standard Output
  60425.  
  60426.  None.
  60427.  
  60428.  A.3.6.2  Standard Error
  60429.  
  60430.  If shift/reduce or reduce/reduce conflicts are detected in _g_r_a_m_m_a_r, yacc
  60431.  writes a report of those conflicts to the standard error in an
  60432.  unspecified format.
  60433.  
  60434.  Standard error is also used for diagnostic messages.
  60435.  
  60436.  A.3.6.3  Output Files
  60437.  
  60438.  The code file, the header file, and the description file shall be text
  60439.  files.  All are described in the following subclauses.
  60440.  
  60441.  
  60442.  
  60443.  
  60444.  
  60445.  
  60446.  
  60447.               Copyright (c) 1991 IEEE.  All rights reserved.
  60448.       This is an unapproved IEEE Standards Draft, subject to change.
  60449.  
  60450.  
  60451.  
  60452.  
  60453.  886                             A C Language Development Utilities Option
  60454.  
  60455.  
  60456.  
  60457.  
  60458.  
  60459.  
  60460.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  60461.  
  60462.  A.3.6.3.1  Code file
  60463.  
  60464.  This file shall contain the C source code for the _y_y_p_a_r_s_e() routine.  It
  60465.  shall contain code for the various semantic actions with macro
  60466.  substitution performed on them as described in A.3.7.  It shall also       2
  60467.  contain a copy of the #define statements in the header file.  If a %union  2
  60468.  declaration is used, the declaration for YYSTYPE shall be also included    2
  60469.  in this file.                                                              2
  60470.  
  60471.  The contents of the Program Section (see A.3.7.1.4) of the input file
  60472.  shall then be included.
  60473.  
  60474.  A.3.6.3.2  Header file
  60475.  
  60476.  The header file shall contain #define statements that associate the token
  60477.  numbers with the token names.  This allows source files other than the
  60478.  code file to access the token codes.  If a %union declaration is used,
  60479.  the declaration for YYSTYPE and an extern YYSTYPE yylval declaration
  60480.  shall be also included in this file.
  60481.  
  60482.  A.3.6.3.3  Description file
  60483.  
  60484.  The description file shall be a text file containing a description of the
  60485.  state machine corresponding to the parser, using an unspecified format.    2
  60486.  Limits for internal tables (see A.3.7.9) also shall be reported, in an     2
  60487.  implementation-defined manner.                                             2
  60488.  
  60489.  
  60490.  A.3.7  Extended Description
  60491.  
  60492.  The yacc command accepts a language that is used to define a grammar for
  60493.  a target language to be parsed by the tables and code generated by yacc.
  60494.  The language accepted by yacc as a grammar for the target language is
  60495.  described below using the yacc input language itself.
  60496.  
  60497.  The input _g_r_a_m_m_a_r includes rules describing the input structure of the
  60498.  target language, and code to be invoked when these rules are recognized
  60499.  to provide the associated semantic action.  The code to be executed shall
  60500.  appear as bodies of text that are intended to be C language code.  The C
  60501.  language inclusions are presumed to form a correct function when
  60502.  processed by yacc into its output files.  The code included in this way
  60503.  shall be executed during the recognition of the target language.
  60504.  
  60505.  Given a grammar, the yacc utility generates the files described in         2
  60506.  A.3.6.3.  The code file can be compiled and linked using c89.  If the      2
  60507.  declaration and programs sections of the grammar file did not include      2
  60508.  definitions of _m_a_i_n(), _y_y_l_e_x(), and _y_y_e_r_r_o_r(), the compiled output         2
  60509.  requires linking with externally supplied version of those functions.      2
  60510.  Default versions of _m_a_i_n() and _y_y_e_r_r_o_r() are supplied in the yacc library  2
  60511.  
  60512.  
  60513.               Copyright (c) 1991 IEEE.  All rights reserved.
  60514.       This is an unapproved IEEE Standards Draft, subject to change.
  60515.  
  60516.  
  60517.  
  60518.  
  60519.  A.3 yacc - Yet another compiler compiler                              887
  60520.  
  60521.  
  60522.  
  60523.  
  60524.  
  60525.  
  60526.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  60527.  
  60528.  and can be linked in by using the -l y operand to c89.  The yacc library   1
  60529.  interfaces need not support interfaces with other than the default yy      1
  60530.  symbol prefix.  The application provides the lexical analyzer function,    1
  60531.  _y_y_l_e_x(); the lex utility (see A.2) is specifically designed to generate
  60532.  such a routine.
  60533.  
  60534.                                                                             2
  60535.  
  60536.  A.3.7.1  Input Language
  60537.  
  60538.  Every specification file shall consist of three sections:  _d_e_c_l_a_r_a_t_i_o_n_s,
  60539.  _g_r_a_m_m_a_r _r_u_l_e_s, and _p_r_o_g_r_a_m_s, separated by double percent-signs (%%).  The
  60540.  declarations and programs sections can be empty.  If the latter is empty,
  60541.  the preceding %% mark separating it from the rules section can be
  60542.  omitted.
  60543.  
  60544.  The input is free form text following the structure of the grammar
  60545.  defined below.
  60546.  
  60547.  A.3.7.1.1  Lexical Structure of the Grammar
  60548.  
  60549.  The characters <blank>s, <newline>s, and <form-feed>s shall be ignored,
  60550.  except that they shall not appear in names or multicharacter reserved
  60551.  symbols.  Comments shall be enclosed in /* ... */, and can appear
  60552.  wherever a name is valid.
  60553.  
  60554.  Names are of arbitrary length, made up of letters, periods (.),
  60555.  underscores (_), and noninitial digits.  Upper- and lowercase letters are
  60556.  distinct.  Portable applications shall not use names beginning in yy or
  60557.  YY since the yacc parser uses such names.  Many of the names appear in
  60558.  the final output of yacc, and thus they should be chosen to conform with
  60559.  any additional rules created by the C compiler to be used.  In particular
  60560.  they will appear in #define statements.
  60561.  
  60562.  A literal shall consist of a single character enclosed in single-quotes
  60563.  (').  All of the escape sequences supported for character constants by
  60564.  the C Standard {7} (3.1.3.4) shall be supported by yacc.
  60565.  
  60566.  The relationship with the lexical analyzer is discussed in detail below.
  60567.  
  60568.  The NUL character shall not be used in grammar rules or literals.
  60569.  
  60570.  A.3.7.1.2  Declarations Section
  60571.  
  60572.  The declarations section is used to define the symbols used to define the
  60573.  target language and their relationship with each other.  In particular,
  60574.  much of the additional information required to resolve ambiguities in the
  60575.  context-free grammar for the target language is provided here.
  60576.  
  60577.  
  60578.  
  60579.               Copyright (c) 1991 IEEE.  All rights reserved.
  60580.       This is an unapproved IEEE Standards Draft, subject to change.
  60581.  
  60582.  
  60583.  
  60584.  
  60585.  888                             A C Language Development Utilities Option
  60586.  
  60587.  
  60588.  
  60589.  
  60590.  
  60591.  
  60592.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  60593.  
  60594.  Usually yacc assigns the relationship between the symbolic names it
  60595.  generates and their underlying numeric value.  The declarations section
  60596.  makes it possible to control the assignment of these values.
  60597.  
  60598.  It is also possible to keep semantic information associated with the
  60599.  tokens currently on the parse stack in a user-defined C language union,
  60600.  if the members of the union are associated with the various names in the
  60601.  grammar.  The declarations section provides for this as well.
  60602.  
  60603.  The first group of declarators below all take a list of names as
  60604.  arguments.  That list can optionally be preceded by the name of a C union
  60605.  member (called a _t_a_g below) appearing within ``<'' and ``>''.  (As an
  60606.  exception to the typographical conventions of the rest of this standard,
  60607.  in this case <_t_a_g> does not represent a metavariable, but the literal
  60608.  angle bracket characters surrounding a symbol.)  The use of _t_a_g specifies
  60609.  that the tokens named on this line are to be of the same C type as the
  60610.  union member referenced by _t_a_g. This is discussed in more detail below.
  60611.  
  60612.  For lists used to define tokens, the first appearance of a given token
  60613.  can be followed by a positive integer (as a string of decimal digits).
  60614.  If this is done, the underlying value assigned to it for lexical purposes
  60615.  shall be taken to be that number.
  60616.  
  60617.     %token [<_t_a_g>] _n_a_m_e [_n_u_m_b_e_r] [_n_a_m_e [_n_u_m_b_e_r]]...
  60618.                 Declares _n_a_m_e(s) to be a token.  If _t_a_g is present, the C
  60619.                 type for all tokens on this line shall be declared to be
  60620.                 the type referenced by _t_a_g. If a positive integer, _n_u_m_b_e_r,
  60621.                 follows a _n_a_m_e, that value shall be assigned to the token.
  60622.  
  60623.     %left [<_t_a_g>] _n_a_m_e [_n_u_m_b_e_r] [_n_a_m_e [_n_u_m_b_e_r]]...
  60624.     %right [<_t_a_g>] _n_a_m_e [_n_u_m_b_e_r] [_n_a_m_e [_n_u_m_b_e_r]]...
  60625.                 Declares _n_a_m_e to be a token, and assigns precedence to it.
  60626.                 One or more lines, each beginning with one of these
  60627.                 symbols can appear in this section.  All tokens on the
  60628.                 same line have the same precedence level and
  60629.                 associativity; the lines are in order of increasing
  60630.                 precedence or binding strength.  %left denotes that the
  60631.                 operators on that line are left associative, and %right
  60632.                 similarly denotes right associative operators.  If _t_a_g is
  60633.                 present, it shall declare a C type for _n_a_m_e(s) as
  60634.                 described for %token.
  60635.  
  60636.     %nonassoc [<_t_a_g>] _n_a_m_e [_n_u_m_b_e_r] [_n_a_m_e [_n_u_m_b_e_r]]...
  60637.                 Declares _n_a_m_e to be a token, and indicates that this
  60638.                 cannot be used associatively.  If the parser encounters
  60639.                 associative use of this token it shall report an error.
  60640.                 If _t_a_g is present, it shall declare a C type for _n_a_m_e(s)
  60641.                 as described for %token.
  60642.  
  60643.  
  60644.  
  60645.               Copyright (c) 1991 IEEE.  All rights reserved.
  60646.       This is an unapproved IEEE Standards Draft, subject to change.
  60647.  
  60648.  
  60649.  
  60650.  
  60651.  A.3 yacc - Yet another compiler compiler                              889
  60652.  
  60653.  
  60654.  
  60655.  
  60656.  
  60657.  
  60658.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  60659.  
  60660.     %type <_t_a_g> _n_a_m_e...
  60661.                 Declares that union member _n_a_m_e(s) are nonterminals, and
  60662.                 thus it is required to have a _t_a_g field at its beginning.
  60663.                 Because it deals with nonterminals only, assigning a token
  60664.                 number or using a literal is also prohibited.  If this
  60665.                 construct is present, yacc shall perform type checking; if
  60666.                 this construct is not present, the parse stack shall hold
  60667.                 only the int type.
  60668.  
  60669.  Every name used in _g_r_a_m_m_a_r undefined by a %token, %left, %right, or
  60670.  %nonassoc declaration is assumed to represent a nonterminal symbol.  The
  60671.  yacc utility shall report an error for any nonterminal symbol that does
  60672.  not appear on the left side of at least one grammar rule.
  60673.  
  60674.  Once the type, precedence, or token number of a name is specified, it
  60675.  shall not be changed.  If the first declaration of a token does not
  60676.  assign a token number, yacc shall assign a token number.  Once this
  60677.  assignment is made, the token number shall not be changed by explicit
  60678.  assignment.
  60679.  
  60680.  The following declarators do not follow the previous pattern.
  60681.  
  60682.     %start _n_a_m_e
  60683.                 Declares the nonterminal _n_a_m_e to be the _s_t_a_r_t _s_y_m_b_o_l,
  60684.                 which represents the largest, most general structure
  60685.                 described by the grammar rules.  By default, it is the
  60686.                 left-hand side of the first grammar rule; this default can
  60687.                 be overridden with this declaration.
  60688.  
  60689.     %union { _b_o_d_y _o_f _u_n_i_o_n (_i_n _C) }
  60690.                 Declares the yacc value stack to be a union of the various
  60691.                 types of values desired.  By default, the values returned
  60692.                 by actions (see below) and the lexical analyzer shall be
  60693.                 integers.  The yacc utility keeps track of types, and
  60694.                 shall insert corresponding union member names in order to
  60695.                 perform strict type checking of the resulting parser.
  60696.  
  60697.                 Alternatively, given that at least one <_t_a_g> construct is
  60698.                 used, the union can be declared in a header file (which
  60699.                 shall be included in the declarations section by using an
  60700.                 #include construct within %{ and %}), and a typedef used
  60701.                 to define the symbol YYSTYPE to represent this union.  The
  60702.                 effect of %union is to provide the declaration of YYSTYPE
  60703.                 directly from the input.
  60704.  
  60705.     %{ ... %}   C language declarations and definitions can appear in the
  60706.                 declarations section, enclosed by these marks.  These
  60707.                 statements shall be copied into the code file, and have
  60708.                 global scope within it so that they can be used in the
  60709.  
  60710.  
  60711.               Copyright (c) 1991 IEEE.  All rights reserved.
  60712.       This is an unapproved IEEE Standards Draft, subject to change.
  60713.  
  60714.  
  60715.  
  60716.  
  60717.  890                             A C Language Development Utilities Option
  60718.  
  60719.  
  60720.  
  60721.  
  60722.  
  60723.  
  60724.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  60725.  
  60726.                 rules and program sections.
  60727.  
  60728.  The declarations section shall be terminated by the token %%.
  60729.  
  60730.  A.3.7.1.3  Grammar Rules
  60731.  
  60732.  The rules section defines the context-free grammar to be accepted by the
  60733.  function yacc generates, and associates with those rules C language
  60734.  actions and additional precedence information.  The grammar is described
  60735.  below, and a formal definition follows.
  60736.  
  60737.  The rules section is comprised of one or more grammar rules.  A grammar
  60738.  rule has the form:
  60739.  
  60740.        A : BODY ;
  60741.  
  60742.  The symbol A represents a nonterminal name, and BODY represents a
  60743.  sequence of zero or more _n_a_m_es, _l_i_t_e_r_a_ls, and _s_e_m_a_n_t_i_c _a_c_t_i_o_ns that can
  60744.  then be followed by optional _p_r_e_c_e_d_e_n_c_e _r_u_l_es.  Only the names and
  60745.  literals participate in the formation of the grammar; the semantic
  60746.  actions and precedence rules are used in other ways.  The colon and the
  60747.  semicolon are yacc punctuation.  If there are several successive grammar
  60748.  rules with the same left-hand side, the vertical bar | can be used to
  60749.  avoid rewriting the left-hand side; in this case the semicolon appears
  60750.  only after the last rule.  The BODY part can be empty (or empty of names
  60751.  and literals) to indicate that the nonterminal symbol matches the empty
  60752.  string.
  60753.  
  60754.  The yacc utility assigns a unique number to each rule.  Rules using the
  60755.  vertical bar notation are distinct rules.  The number assigned to the
  60756.  rule appears in the description file.
  60757.  
  60758.  The elements comprising a BODY are:
  60759.  
  60760.     _n_a_m_e
  60761.     _l_i_t_e_r_a_l     These form the rules of the grammar:  _n_a_m_e is either a
  60762.                 _t_o_k_e_n or a _n_o_n_t_e_r_m_i_n_a_l; _l_i_t_e_r_a_l stands for itself (less
  60763.                 the lexically required quotation marks).
  60764.  
  60765.     _s_e_m_a_n_t_i_c _a_c_t_i_o_n
  60766.                 With each grammar rule, the user can associate actions to
  60767.                 be performed each time the rule is recognized in the input
  60768.                 process.  [Note that the word ``action'' can also refer to
  60769.                 the actions of the parser (shift, reduce, etc.).]
  60770.  
  60771.                 These actions can return values and can obtain the values
  60772.                 returned by previous actions.  These values shall be kept
  60773.                 in objects of type YYSTYPE (see %union).  The result value
  60774.                 of the action shall be kept on the parse stack with the
  60775.  
  60776.  
  60777.               Copyright (c) 1991 IEEE.  All rights reserved.
  60778.       This is an unapproved IEEE Standards Draft, subject to change.
  60779.  
  60780.  
  60781.  
  60782.  
  60783.  A.3 yacc - Yet another compiler compiler                              891
  60784.  
  60785.  
  60786.  
  60787.  
  60788.  
  60789.  
  60790.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  60791.  
  60792.                 left-hand side of the rule, to be accessed by other
  60793.                 reductions as part of their right-hand side.  By using the
  60794.                 <_t_a_g> information provided in the declarations section,
  60795.                 the code generated by yacc can be strictly type checked
  60796.                 and contain arbitrary information.  In addition, the
  60797.                 lexical analyzer can provide the same kinds of values for
  60798.                 tokens, if desired.
  60799.  
  60800.                 An action is an arbitrary C statement, and as such can do
  60801.                 input or output, call subprograms, and alter external
  60802.                 variables.  An action is one or more C statements enclosed
  60803.                 in curly braces { and }.
  60804.  
  60805.                 Certain pseudo-variables can be used in the action.  These
  60806.                 are macros for access to data structures known interally
  60807.                 to yacc.
  60808.  
  60809.                    $$   The value of the action can be set by assigning it
  60810.                         to $$.  If type checking is enabled and the type
  60811.                         of the value to be assigned cannot be determined,
  60812.                         a diagnostic message may be generated.
  60813.  
  60814.                    $_n_u_m_b_e_r
  60815.                         This refers to the value returned by the component
  60816.                         specified by the token _n_u_m_b_e_r in the right side of
  60817.                         a rule, reading from left to right; _n_u_m_b_e_r can be
  60818.                         zero or negative.  If it is, it refers to the data
  60819.                         associated with the name on the parser's stack
  60820.                         preceding the leftmost symbol of the current rule.
  60821.                         (That is, $0 refers to the name immediately
  60822.                         preceding the leftmost name in the current rule,
  60823.                         to be found on the parser's stack, and $-1 refers
  60824.                         to the symbol to _i_t_s left.)  If _n_u_m_b_e_r refers to
  60825.                         an element past the current point in the rule, or
  60826.                         beyond the bottom of the stack, the result is
  60827.                         undefined.  If type checking is enabled and the
  60828.                         type of the value to be assigned cannot be
  60829.                         determined, a diagnostic message may be generated.
  60830.  
  60831.                    $<_t_a_g>_n_u_m_b_e_r
  60832.                         These correspond exactly to the corresponding
  60833.                         symbols without the _t_a_g inclusion, but allow for
  60834.                         strict type checking (and preclude unwanted type
  60835.                         conversions).  The effect is that the macro is
  60836.                         expanded to use _t_a_g to select an element from the
  60837.                         YYSTYPE union (using _d_a_t_a_n_a_m_e._t_a_g). This is
  60838.                         particularly useful if _n_u_m_b_e_r is not positive.      1
  60839.  
  60840.  
  60841.  
  60842.  
  60843.               Copyright (c) 1991 IEEE.  All rights reserved.
  60844.       This is an unapproved IEEE Standards Draft, subject to change.
  60845.  
  60846.  
  60847.  
  60848.  
  60849.  892                             A C Language Development Utilities Option
  60850.  
  60851.  
  60852.  
  60853.  
  60854.  
  60855.  
  60856.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  60857.  
  60858.                    $<_t_a_g>$
  60859.                         This imposes on the reference the type of the
  60860.                         union member referenced by _t_a_g. This construction
  60861.                         is applicable when a reference to a left context
  60862.                         value occurs in the grammar, and provides yacc
  60863.                         with a means for selecting a type.
  60864.  
  60865.                 Actions can occur in the middle of a rule as well as at
  60866.                 the end; an action can access values returned by actions
  60867.                 to its left, and in turn the value it returns can be
  60868.                 accessed by actions to its right.  An action appearing in
  60869.                 the middle of a rule shall be equivalent to replacing the
  60870.                 action with a new nonterminal symbol and adding an empty
  60871.                 rule with that nonterminal symbol on the left-hand side.
  60872.                 The semantic action associated with the new rule shall be
  60873.                 equivalent to the original action.  The use of actions
  60874.                 within rules might introduce conflicts that would not
  60875.                 otherwise exist.
  60876.  
  60877.                 By default, the value of a rule shall be the value of the
  60878.                 first element in it.  If the first element does not have a
  60879.                 type (particularly in the case of a literal) and type
  60880.                 checking is turned on by %type an error message shall
  60881.                 result.
  60882.  
  60883.     _p_r_e_c_e_d_e_n_c_e  The keyword %prec can be used to change the precedence      1
  60884.                 level associated with a particular grammar rule.  Examples  1
  60885.                 of this are in cases where a unary and binary operator      1
  60886.                 have the same symbolic representation, but need to be       1
  60887.                 given different precedences, or where the handling of an    1
  60888.                 ambiguous if-else construction is necessary.  The reserved  1
  60889.                 symbol %prec can appear immediately after the body of the   1
  60890.                 grammar rule and can be followed by a token name or a
  60891.                 literal.  It shall cause the precedence of the grammar
  60892.                 rule to become that of the following token name or
  60893.                 literal.  The action for the rule as a whole can follow
  60894.                 %prec.
  60895.  
  60896.  If a program section follows, the grammar rules shall be terminated by     1
  60897.  %%.                                                                        1
  60898.  
  60899.  A.3.7.1.4  Programs Section
  60900.  
  60901.  The _p_r_o_g_r_a_m_s section can include the definition of the lexical analyzer
  60902.  _y_y_l_e_x(), and any other functions, for example those used in the actions
  60903.  specified in the grammar rules.  This is C language code, and shall be
  60904.  included in the code file after the tables and code generated by yacc.
  60905.  It is unspecified whether the programs section precedes or follows the
  60906.  semantic actions in the output file; therefore, if the application
  60907.  
  60908.  
  60909.               Copyright (c) 1991 IEEE.  All rights reserved.
  60910.       This is an unapproved IEEE Standards Draft, subject to change.
  60911.  
  60912.  
  60913.  
  60914.  
  60915.  A.3 yacc - Yet another compiler compiler                              893
  60916.  
  60917.  
  60918.  
  60919.  
  60920.  
  60921.  
  60922.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  60923.  
  60924.  contains any macro definitions and declarations intended to apply to the
  60925.  code in the semantic actions, it shall place them within %{ ...  %} in
  60926.  the declarations section.
  60927.  
  60928.  A.3.7.1.5  Input Grammar
  60929.  
  60930.  The following input to yacc yields a parser for the input to yacc.  This
  60931.  is to be taken as the formal specification of the grammar of yacc,
  60932.  notwithstanding conflicts that may appear elsewhere.
  60933.  
  60934.  The lexical structure is defined less precisely; the previous section on
  60935.  A.3.7.1.1 defines most terms.  The correspondence between the previous
  60936.  terms and the tokens below is as follows.
  60937.  
  60938.     IDENTIFIER       This corresponds to the concept of _n_a_m_e, given
  60939.                      previously.  It also includes literals as defined
  60940.                      previously.
  60941.  
  60942.     C_IDENTIFIER     This is a name, and additionally it is known to be
  60943.                      followed by a colon.  A literal cannot yield this
  60944.                      token.
  60945.  
  60946.     NUMBER           A string of digits (a nonnegative decimal integer).
  60947.  
  60948.     TYPE
  60949.     LEFT
  60950.     MARK
  60951.     etc.             These correspond directly to %type, %left, %%, etc.
  60952.  
  60953.     { ... }          This indicates C language source code, with the
  60954.                      possible inclusion of $ macros as discussed
  60955.                      previously.
  60956.  
  60957.  /*       Grammar for the input to yacc */
  60958.  
  60959.  /*       Basic entries */
  60960.  
  60961.  /*       The following are recognized by the lexical analyzer */
  60962.  
  60963.  %token   IDENTIFIER      /* includes identifiers and literals */
  60964.  %token   C_IDENTIFIER    /* identifier (but not literal)
  60965.                             followed by a : */
  60966.  %token   NUMBER         /* [0-9][0-9]* */
  60967.  
  60968.  /*       Reserved words : %type=>TYPE %left=>LEFT, etc. */
  60969.  
  60970.  %token   LEFT RIGHT NONASSOC TOKEN PREC TYPE START UNION
  60971.  
  60972.  
  60973.  
  60974.  
  60975.               Copyright (c) 1991 IEEE.  All rights reserved.
  60976.       This is an unapproved IEEE Standards Draft, subject to change.
  60977.  
  60978.  
  60979.  
  60980.  
  60981.  894                             A C Language Development Utilities Option
  60982.  
  60983.  
  60984.  
  60985.  
  60986.  
  60987.  
  60988.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  60989.  
  60990.  %token   MARK            /* the %% mark */
  60991.  %token   LCURL           /* the %{ mark */
  60992.  %token   RCURL           /* the }% mark */
  60993.  
  60994.  /*       8-bit character literals stand for themselves; */
  60995.  /*       tokens have to be defined for multibyte characters */
  60996.  
  60997.  %start   spec
  60998.  
  60999.  %%
  61000.  
  61001.  spec  : defs MARK rules tail
  61002.        ;
  61003.  
  61004.  tail  : MARK
  61005.        {
  61006.          /* In this action, set up the rest of the file */
  61007.        }
  61008.        | /* empty; the second MARK is optional */
  61009.        ;
  61010.  
  61011.  defs  : /* empty */
  61012.        | defs def
  61013.        ;
  61014.  
  61015.  def   : START IDENTIFIER
  61016.        | UNION
  61017.        {
  61018.          /* Copy union definition to output */
  61019.        }
  61020.        | LCURL
  61021.        {
  61022.          /* Copy C code to output file */
  61023.        }
  61024.          RCURL
  61025.        | rword tag nlist
  61026.        ;
  61027.  
  61028.  rword : TOKEN
  61029.        | LEFT
  61030.        | RIGHT
  61031.        | NONASSOC
  61032.        | TYPE
  61033.        ;
  61034.  
  61035.  tag   : /* empty: union tag id optional */
  61036.        | '<' IDENTIFIER '>'
  61037.  
  61038.  
  61039.  
  61040.  
  61041.               Copyright (c) 1991 IEEE.  All rights reserved.
  61042.       This is an unapproved IEEE Standards Draft, subject to change.
  61043.  
  61044.  
  61045.  
  61046.  
  61047.  A.3 yacc - Yet another compiler compiler                              895
  61048.  
  61049.  
  61050.  
  61051.  
  61052.  
  61053.  
  61054.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  61055.  
  61056.        ;
  61057.  
  61058.  nlist : nmno
  61059.        | nlist nmno
  61060.        ;
  61061.  
  61062.  nmno  : IDENTIFIER             /* Note: literal invalid with % type */
  61063.        | IDENTIFIER NUMBER       /* Note: invalid with % type */
  61064.        ;
  61065.  
  61066.  /*      rule section */
  61067.  
  61068.  rules : C_IDENTIFIER rbody prec
  61069.        | rules  rule
  61070.        ;
  61071.  
  61072.  rule  : C_IDENTIFIER rbody prec
  61073.        | '|' rbody prec
  61074.        ;
  61075.  
  61076.  rbody : /* empty */
  61077.        | rbody IDENTIFIER
  61078.        | rbody act
  61079.        ;
  61080.  
  61081.  act   : '{'
  61082.          {
  61083.                 /* Copy action, translate $$, etc. */
  61084.          }
  61085.          '}'
  61086.        ;
  61087.  
  61088.  prec  : /* empty */
  61089.        | PREC IDENTIFIER
  61090.        | PREC IDENTIFIER act
  61091.        | prec ';'
  61092.        ;
  61093.  
  61094.  A.3.7.2  Conflicts
  61095.  
  61096.  The parser produced for an input grammar may contain states in which
  61097.  conflicts occur.  The conflicts occur because the grammar is not LALR(1).
  61098.  An ambiguous grammar always contains at least one LALR(1) conflict.  The
  61099.  yacc utility shall resolve all conflicts, using either default rules or
  61100.  user-specified precedence rules.
  61101.  
  61102.  Conflicts are either ``shift/reduce conflicts'' or ``reduce/reduce
  61103.  conflicts.''  A shift/reduce conflict is where, for a given state and
  61104.  lookahead symbol, both a shift action and a reduce action are possible.
  61105.  
  61106.  
  61107.               Copyright (c) 1991 IEEE.  All rights reserved.
  61108.       This is an unapproved IEEE Standards Draft, subject to change.
  61109.  
  61110.  
  61111.  
  61112.  
  61113.  896                             A C Language Development Utilities Option
  61114.  
  61115.  
  61116.  
  61117.  
  61118.  
  61119.  
  61120.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  61121.  
  61122.  A reduce/reduce conflict is where, for a given state and lookahead
  61123.  symbol, reductions by two different rules are possible.
  61124.  
  61125.  The rules below describe how to specify what actions to take when a
  61126.  conflict occurs.  Not all shift/reduce conflicts can be successfully
  61127.  resolved this way because the conflict may be due to something other than
  61128.  ambiguity, so incautious use of these facilities can cause the language
  61129.  accepted by the parser to be much different than was intended.  The
  61130.  description file shall contain sufficient information to understand the
  61131.  cause of the conflict.  Where ambiguity is the reason either the default
  61132.  or explicit rules should be adequate to produce a working parser.
  61133.  
  61134.  The declared precedences and associativities (see A.3.7.1.2) are used to
  61135.  resolve parsing conflicts as follows:
  61136.  
  61137.      (1)  A precedence and associativity is associated with each grammar
  61138.           rule; it is the precedence and associativity of the last token
  61139.           or literal in the body of the rule.  If the %prec keyword is
  61140.           used, it overrides this default.  Some grammar rules might not
  61141.           have both precedence and associativity.
  61142.  
  61143.      (2)  If there is a shift/reduce conflict, and both the grammar rule
  61144.           and the input symbol have precedence and associativity
  61145.           associated with them, then the conflict is resolved in favor of
  61146.           the action (shift or reduce) associated with the higher
  61147.           precedence.  If the precedences are the same, then the
  61148.           associativity is used; left associative implies reduce, right
  61149.           associative implies shift, and nonassociative implies an error
  61150.           in the string being parsed.
  61151.  
  61152.      (3)  When there is a shift/reduce conflict that cannot be resolved by
  61153.           rule (2), the shift is done.  Conflicts resolved this way are
  61154.           counted in the diagnostic output described in A.3.7.3.
  61155.  
  61156.      (4)  When there is a reduce/reduce conflict, a reduction is done by
  61157.           the grammar rule that occurs earlier in the input sequence.
  61158.           Conflicts resolved this way are counted in the diagnostic output
  61159.           described in A.3.7.3.
  61160.  
  61161.  Conflicts resolved by precedence or associativity shall not be counted in
  61162.  the shift/reduce and reduce/reduce conflicts reported by yacc on either
  61163.  standard error or in the description file.
  61164.  
  61165.  A.3.7.3  Error Handling
  61166.  
  61167.  The token error shall be reserved for error handling.  The name error can
  61168.  be used in grammar rules.  It indicates places where the parser can
  61169.  recover from a syntax error.  The default value of error shall be 256.
  61170.  Its value can be changed using a %token declaration.  The lexical
  61171.  
  61172.  
  61173.               Copyright (c) 1991 IEEE.  All rights reserved.
  61174.       This is an unapproved IEEE Standards Draft, subject to change.
  61175.  
  61176.  
  61177.  
  61178.  
  61179.  A.3 yacc - Yet another compiler compiler                              897
  61180.  
  61181.  
  61182.  
  61183.  
  61184.  
  61185.  
  61186.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  61187.  
  61188.  analyzer should not return the value of error.
  61189.  
  61190.  The parser shall detect a syntax error when it is in a state where the
  61191.  action associated with the lookahead symbol is error.  A semantic action
  61192.  can cause the parser to initiate error handling by executing the macro
  61193.  YYERROR.  When YYERROR is executed, the semantic action shall pass
  61194.  control back to the parser.  YYERROR cannot be used outside of semantic
  61195.  actions.
  61196.  
  61197.  When the parser detects a syntax error, it normally calls yyerror with
  61198.  the character string "syntax error" as its argument.  The call shall not
  61199.  be made if the parser is still recovering from a previous error when the
  61200.  error is detected.  The parser is considered to be recovering from a
  61201.  previous error until the parser has shifted over at least three normal
  61202.  input symbols since the last error was detected or a semantic action has
  61203.  executed the macro yyerrok.  The parser shall not call yyerror when
  61204.  YYERROR is executed.
  61205.  
  61206.  The macro function YYRECOVERING() shall return 1 if a syntax error has
  61207.  been detected and the parser has not yet fully recovered from it.
  61208.  Otherwise, zero shall be returned.
  61209.  
  61210.  When a syntax error is detected by the parser, the parser shall check if
  61211.  a previous syntax error has been detected.  If a previous error was
  61212.  detected, and if no normal input symbols have been shifted since the
  61213.  preceding error was detected, the parser checks if the lookahead symbol
  61214.  is an endmarker (see A.3.7.4).  If it is, the parser shall return with a
  61215.  nonzero value.  Otherwise, the lookahead symbol shall be discarded and
  61216.  normal parsing shall resume.
  61217.  
  61218.  When YYERROR is executed or when the parser detects a syntax error and no
  61219.  previous error has been detected, or at least one normal input symbol has
  61220.  been shifted since the previous error was detected, the parser shall pop
  61221.  back one state at a time until the parse stack is empty or the current
  61222.  state allows a shift over error.  If the parser empties the parse stack,
  61223.  it shall return with a nonzero value.  Otherwise, it shall shift over
  61224.  error and then resume normal parsing.  If the parser reads a lookahead
  61225.  symbol before the error was detected, that symbol shall still be the
  61226.  lookahead symbol when parsing is resumed.
  61227.  
  61228.  The macro yyerrok in a semantic action shall cause the parser to act as
  61229.  if it has fully recovered from any previous errors.  The macro yyclearin
  61230.  shall cause the parser to discard the current lookahead token.  If the
  61231.  current lookahead token has not yet been read, yyclearin shall have no
  61232.  effect.
  61233.  
  61234.  The macro YYACCEPT shall cause the parser to return with the value zero.
  61235.  The macro YYABORT shall cause the parser to return with a nonzero value.
  61236.  
  61237.  
  61238.  
  61239.               Copyright (c) 1991 IEEE.  All rights reserved.
  61240.       This is an unapproved IEEE Standards Draft, subject to change.
  61241.  
  61242.  
  61243.  
  61244.  
  61245.  898                             A C Language Development Utilities Option
  61246.  
  61247.  
  61248.  
  61249.  
  61250.  
  61251.  
  61252.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  61253.  
  61254.  A.3.7.4  Interface to the Lexical Analyzer
  61255.  
  61256.  The _y_y_l_e_x() function is an integer-valued function that returns a _t_o_k_e_n
  61257.  _n_u_m_b_e_r representing the kind of token read.  If there is a value
  61258.  associated with the token returned by _y_y_l_e_x() (see the discussion of _t_a_g
  61259.  above), it shall be assigned to the external variable _y_y_l_v_a_l.
  61260.  
  61261.  If the parser and _y_y_l_e_x() do not agree on these token numbers, reliable
  61262.  communication between them cannot occur.  For (one character) literals,
  61263.  the token is simply the numeric value of the character in the current
  61264.  character set.  The numbers for other tokens can either be chosen by
  61265.  yacc, or chosen by the user.  In either case, the #define construct of C
  61266.  is used to allow _y_y_l_e_x() to return these numbers symbolically.  The
  61267.  #define statements are put into the code file, and the header file if
  61268.  that file is requested.  The set of characters permitted by yacc in an
  61269.  identifier is larger than that permitted by C.  Token names found to
  61270.  contain such characters shall not be included in the #define
  61271.  declarations.
  61272.  
  61273.  If the token numbers are chosen by yacc, the tokens other than literals
  61274.  shall be assigned numbers greater than 256, although no order is implied.  1
  61275.  A token can be explicitly assigned a number by following its first
  61276.  appearance in the declarations section with a number.  Names and literals
  61277.  not defined this way retain their default definition.  All assigned token
  61278.  numbers shall be unique and distinct from the token numbers used for
  61279.  literals.  If duplicate token numbers cause conflicts in parser
  61280.  generation, yacc shall report an error; otherwise, it is unspecified
  61281.  whether the token assignment is accepted or an error is reported.
  61282.  
  61283.  The end of the input is marked by a special token called the _e_n_d_m_a_r_k_e_r,
  61284.  which has a token number that is zero or negative.  (These values are
  61285.  invalid for any other token.)  All lexical analyzers shall return zero or
  61286.  negative as a token number upon reaching the end of their input.  If the
  61287.  tokens up to, but excluding, the endmarker form a structure that matches
  61288.  the start symbol, the parser shall accept the input.  If the endmarker is
  61289.  seen in any other context, it shall be considered an error.
  61290.  
  61291.  A.3.7.5  Completing the Program
  61292.  
  61293.  In addition to _y_y_p_a_r_s_e() and _y_y_l_e_x(), the functions _y_y_e_r_r_o_r() and _m_a_i_n()
  61294.  are required to make a complete program.  The application can supply
  61295.  _m_a_i_n() and _y_y_e_r_r_o_r(), or those routines can be obtained from the yacc
  61296.  library.
  61297.  
  61298.  
  61299.  
  61300.  
  61301.  
  61302.  
  61303.  
  61304.  
  61305.               Copyright (c) 1991 IEEE.  All rights reserved.
  61306.       This is an unapproved IEEE Standards Draft, subject to change.
  61307.  
  61308.  
  61309.  
  61310.  
  61311.  A.3 yacc - Yet another compiler compiler                              899
  61312.  
  61313.  
  61314.  
  61315.  
  61316.  
  61317.  
  61318.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  61319.  
  61320.  _A._3._7._6  yacc _L_i_b_r_a_r_y
  61321.  
  61322.  The following functions appear only in the yacc library accessible
  61323.  through the -l y operand to c89; they can therefore be redefined by a
  61324.  portable application:
  61325.  
  61326.     int main(void)                                                          1
  61327.                    This function shall call _y_y_p_a_r_s_e() and exit with an
  61328.                    unspecified value.  Other actions within this function
  61329.                    are unspecified.
  61330.  
  61331.     int yyerror(const char *_s)                                              1
  61332.                    This function shall write the NUL-terminated argument
  61333.                    to standard error, followed by a <newline>.
  61334.  
  61335.  The order of the -l y and -l l operands given to c89 is significant; the
  61336.  application shall either provide its own _m_a_i_n() function or ensure that
  61337.  -l y precedes -l l.
  61338.  
  61339.  A.3.7.7  Debugging the Parser
  61340.  
  61341.  The parser generated by yacc shall have diagnostic facilities in it that
  61342.  can be optionally enabled at either compile time or at run time (if
  61343.  enabled at compile time).  The compilation of the runtime debugging code
  61344.  is under the control of YYDEBUG, a preprocessor symbol.  If YYDEBUG has a
  61345.  nonzero value, the debugging code shall be included.  If its value is
  61346.  zero, the code shall not be included.
  61347.  
  61348.  In parsers where the debugging code has been included, the external int
  61349.  yydebug can be used to turn debugging on (with a nonzero value) and off
  61350.  (zero value) at run time.  The initial value of _y_y_d_e_b_u_g shall be zero.
  61351.  
  61352.  When -t is specified, the code file shall be built such that, if YYDEBUG
  61353.  is not already defined at compilation time (using the c89  -D YYDEBUG
  61354.  option, for example), YYDEBUG shall be set explicitly to 1.  When -t is
  61355.  not specified, the code file shall be built such that, if YYDEBUG is not
  61356.  already defined, it shall be set explicitly to zero.
  61357.  
  61358.  The format of the debugging output is unspecified but includes at least
  61359.  enough information to determine the shift and reduce actions, and the
  61360.  input symbols.  It also provides information about error recovery.
  61361.  
  61362.  A.3.7.8  Algorithms
  61363.  
  61364.  The parser constructed by yacc implements an LALR(1) parsing algorithm as
  61365.  documented in the literature.  It is unspecified whether the parser is
  61366.  table-driven or direct-coded.
  61367.  
  61368.  
  61369.  
  61370.  
  61371.               Copyright (c) 1991 IEEE.  All rights reserved.
  61372.       This is an unapproved IEEE Standards Draft, subject to change.
  61373.  
  61374.  
  61375.  
  61376.  
  61377.  900                             A C Language Development Utilities Option
  61378.  
  61379.  
  61380.  
  61381.  
  61382.  
  61383.  
  61384.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  61385.  
  61386.  A parser generated by yacc shall never request an input symbol from
  61387.  _y_y_l_e_x() while in a state where the only actions other than the error
  61388.  action are reductions by a single rule.
  61389.  
  61390.  The literature of parsing theory defines these concepts.
  61391.  
  61392.  A.3.7.9  Limits
  61393.  
  61394.                     Table A-4  -  yacc Internal Limits
  61395.  __________________________________________________________________________________________________________________________________________________
  61396.                Minimum
  61397.    Limit       Maximum                          Description
  61398.  _________________________________________________________________________
  61399.  
  61400.  {NTERMS}        126              Number of tokens.
  61401.  {NNONTERM}      200              Number of nonterminals.
  61402.  {NPROD}         300              Number of rules.
  61403.  {NSTATES}       600              Number of states.
  61404.  {MEMSIZE}      5200              Length of rules.  The total length, in
  61405.                                   names (tokens and nonterminals), of all
  61406.                                   the rules of the grammar.  The left-hand
  61407.                                   side is counted for each rule, even if
  61408.                                   it is not explicitly repeated, as
  61409.                                   specified in A.3.7.1.3.
  61410.  {ACTSIZE}      4000              Number of actions.  ``Actions'' here
  61411.                                   (and in the description file) refer to
  61412.                                   parser actions (shift, reduce, etc.) not
  61413.                                   to semantic actions defined in
  61414.                                   A.3.7.1.3.
  61415.  __________________________________________________________________________________________________________________________________________________
  61416.  
  61417.  
  61418.  The yacc utility may have several internal tables.  The minimum maximums
  61419.  for these tables are shown in Table A-4.  The exact meaning of these
  61420.  values is implementation defined.  The implementation shall define the
  61421.  relationship between these values and between them and any error messages
  61422.  that the implementation may generate should it run out of space for any
  61423.  internal structure.  An implementation may combine groups of these
  61424.  resources into a single pool as long as the total available to the user
  61425.  does not fall below the sum of the sizes specified by this subclause.
  61426.  
  61427.  
  61428.  A.3.8  Exit Status
  61429.  
  61430.  The yacc utility shall exit with one of the following values:
  61431.  
  61432.      0    Successful completion.
  61433.  
  61434.  
  61435.  
  61436.  
  61437.               Copyright (c) 1991 IEEE.  All rights reserved.
  61438.       This is an unapproved IEEE Standards Draft, subject to change.
  61439.  
  61440.  
  61441.  
  61442.  
  61443.  A.3 yacc - Yet another compiler compiler                              901
  61444.  
  61445.  
  61446.  
  61447.  
  61448.  
  61449.  
  61450.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  61451.  
  61452.     >0    An error occurred.
  61453.  
  61454.  
  61455.  A.3.9  Consequences of Errors
  61456.  
  61457.  If any errors are encountered, the run is aborted and yacc exits with a
  61458.  nonzero status.  Partial code files and header files files may be
  61459.  produced.  The summary information in the description file shall always
  61460.  be produced if the -v flag is present.
  61461.  
  61462.  BEGIN_RATIONALE
  61463.  
  61464.  
  61465.  A.3.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  61466.  
  61467.  The references in the Bibliography may be helpful in constructing the
  61468.  parser generator.  The Pennello-DeRemer {B26} paper (along with the works  2
  61469.  it references) describe a technique to generate parsers that conform to    2
  61470.  this standard.  Work in this area continues to be done, so implementors
  61471.  should consult current literature before doing any new implementations.    1
  61472.  The original paper by Knuth {B27} is the theoretical basis for this kind
  61473.  of parser, but the tables it generates are impractically large for
  61474.  reasonable grammars, and should not be used.  The ``equivalent to''
  61475.  wording is intentional to assure that the best tables that are LALR(1)
  61476.  can be generated.
  61477.  
  61478.  There has been confusion between the class of grammars, the algorithms
  61479.  needed to generate parsers, and the algorithms needed to parse the
  61480.  languages.  They are all reasonably orthogonal.  In particular, a parser
  61481.  generator that accepts the full range of LR(1) grammars need not generate
  61482.  a table any more complex than one that accepts SLR(1) (a relatively weak
  61483.  class of LR grammars) for a grammar that happens to be SLR(1).  Such an
  61484.  implementation need not recognize the case, either; table compression can
  61485.  yield the SLR(1) table (or one even smaller than that) without
  61486.  recognizing that the grammar is SLR(1).  The speed of a LR(1) parser for
  61487.  any class is dependent more upon the table representation and compression
  61488.  (or the code generation if a direct parser is generated) than upon the
  61489.  class of grammar that the table generator handles.
  61490.  
  61491.  The speed of the parser generator is somewhat dependent upon the class of
  61492.  grammar it handles.  However, the original Knuth {B27} algorithms for      2
  61493.  constructing LR parsers was judged by its author to be impractically slow  2
  61494.  at that time.  Although full LR is more complex than LALR(1), as computer
  61495.  speeds and algorithms improve, the difference (in terms of acceptable      2
  61496.  wall-clock execution time) is becoming less significant.                   2
  61497.  
  61498.  Potential authors are cautioned that the Penello-DeRemer paper previously  2
  61499.  cited identifies a bug (an oversimplification of the computation of        2
  61500.  LALR(1) lookahead sets) in some of the LALR(1) algorithm statements that   2
  61501.  
  61502.  
  61503.               Copyright (c) 1991 IEEE.  All rights reserved.
  61504.       This is an unapproved IEEE Standards Draft, subject to change.
  61505.  
  61506.  
  61507.  
  61508.  
  61509.  902                             A C Language Development Utilities Option
  61510.  
  61511.  
  61512.  
  61513.  
  61514.  
  61515.  
  61516.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  61517.  
  61518.  preceded it to publication.  They should take the time to seek out that    2
  61519.  paper, as well as current relevant work, particularly Aho's {B22}.
  61520.  
  61521.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  61522.  
  61523.  Access to the yacc library is obtained with library search operands to
  61524.  c89.  To use the yacc library _m_a_i_n(),
  61525.  
  61526.        c89 y.tab.c -l y
  61527.  
  61528.  Both the lex library and the yacc library contain _m_a_i_n().  To access the
  61529.  yacc _m_a_i_n(),
  61530.  
  61531.        c89 y.tab.c lex.yy.c -l y -l l
  61532.  
  61533.  This ensures that the yacc library is searched first, so that its _m_a_i_n()
  61534.  is used.
  61535.  
  61536.  The historical yacc libraries have contained two simple functions that
  61537.  are normally coded by the application programmer.  These library
  61538.  functions are similar to the following code:
  61539.  
  61540.        #include <locale.h>                                                  1
  61541.        int main(void)                                                       1
  61542.        {
  61543.                extern int yyparse();
  61544.  
  61545.                setlocale(LC_ALL, "");
  61546.  
  61547.                /* If the following parser is one created by lex, the
  61548.                   application must be careful to ensure that LC_CTYPE
  61549.                   and LC_COLLATE are set to the POSIX Locale.  */
  61550.                (void) yyparse();
  61551.                return (0);
  61552.        }
  61553.  
  61554.        #include <stdio.h>
  61555.  
  61556.        int yyerror(const char *msg)                                         1
  61557.        {
  61558.                (void) fprintf(stderr, "%s\n", msg);
  61559.                return (0);
  61560.        }
  61561.  
  61562.  Historical implementations experience name conflicts on the names
  61563.  yacc.tmp, yacc.acts, yacc.debug, y.tab.c, y.tab.h, and y.output if more
  61564.  than one copy of yacc is running in a single directory at one time.  The
  61565.  -b option was added to overcome this problem.  The related problem of
  61566.  allowing multiple yacc parsers to be placed in the same file was
  61567.  
  61568.  
  61569.               Copyright (c) 1991 IEEE.  All rights reserved.
  61570.       This is an unapproved IEEE Standards Draft, subject to change.
  61571.  
  61572.  
  61573.  
  61574.  
  61575.  A.3 yacc - Yet another compiler compiler                              903
  61576.  
  61577.  
  61578.  
  61579.  
  61580.  
  61581.  
  61582.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  61583.  
  61584.  addressed by adding a -p option to override the previously hardcoded yy
  61585.  variable prefix.  (The -p option name was selected from a historical
  61586.  implementation.)  Implementations will also have to be cognizant of
  61587.  2.11.6.3, which requires that any temporary files used by yacc also be
  61588.  named to avoid collisions.
  61589.  
  61590.  The description of the -p option specifies the minimal set of function
  61591.  and variable names that cause conflict when multiple parsers are linked
  61592.  together.  YYSTYPE does not need to be changed.  Instead, the programmer
  61593.  can use -b to give the header files for different parsers different
  61594.  names, and then the file with the _y_y_l_e_x() for a given parser can include
  61595.  the header for that parser.  Names such as _y_y_c_l_e_a_r_e_r_r don't need to be
  61596.  changed because they are used only in the actions; they do not have
  61597.  linkage.  It is possible that an implementation will have other names,
  61598.  either internal ones for implementing things such as _y_y_c_l_e_a_r_e_r_r, or
  61599.  providing nonstandard features, that it wants to change with -p.
  61600.  
  61601.  The -b option was added to provide a portable method for permitting yacc
  61602.  to work on multiple separate parsers in the same directory.  If a
  61603.  directory contains more than one yacc grammar, and both grammars are
  61604.  constructed at the same time (by, say, a parallel make program), conflict
  61605.  results.  While the solution is not historical practice, it corrects a
  61606.  known deficiency in historical implementations.  Corresponding changes
  61607.  were made to all sections that referenced the filenames y.tab.c (now
  61608.  ``the code file''), y.tab.h (now ``the header file''), and y.output (now
  61609.  ``the description file'').
  61610.  
  61611.  The grammar for yacc input is based on System V documentation.  The
  61612.  textual description shows there that the ; is required at the end of the   1
  61613.  rule.  The grammar and the implementation do not require this.  (The use
  61614.  of C_IDENTIFIER causes a reduce to occur in the right place.)
  61615.  
  61616.  Also, in that implementation, the constructs such as %token can be         1
  61617.  terminated by a semicolon, but this is not permitted by the grammar.  The
  61618.  keywords such as %token can also appear in uppercase, which is again not
  61619.  discussed.  In most places where % is used, \ can be substituted, and
  61620.  there are alternate spellings for some of the symbols (e.g.  %LEFT can be
  61621.  %< or even \<).
  61622.  
  61623.  Multibyte characters should be recognized by the lexical analyzer and      2
  61624.  returned as tokens.  They should not be returned as multibyte character    2
  61625.  literals.  The token error that is used for error recovery is normally     2
  61626.  assigned the value 256 in the historical implementation.  Thus, the token  2
  61627.  value 256, which used in many multibyte character sets, is not available   2
  61628.  for use as the value of a user-defined token.                              2
  61629.  
  61630.  Historically, <_t_a_g> can contain any characters except >, including white
  61631.  space, in the implementation.  However, since the _t_a_g must reference a
  61632.  Standard C union member, in practice conforming implementations need only
  61633.  
  61634.  
  61635.               Copyright (c) 1991 IEEE.  All rights reserved.
  61636.       This is an unapproved IEEE Standards Draft, subject to change.
  61637.  
  61638.  
  61639.  
  61640.  
  61641.  904                             A C Language Development Utilities Option
  61642.  
  61643.  
  61644.  
  61645.  
  61646.  
  61647.  
  61648.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  61649.  
  61650.  support the set of characters for Standard C identifiers in this context.
  61651.  
  61652.  Some historical implementations are known to accept actions that are
  61653.  terminated by a period.  Historical implementations often allow $ in
  61654.  names.  A conforming implementation need support neither of these
  61655.  behaviors.
  61656.  
  61657.  Unary operators that are the same token as a binary operator in general
  61658.  need their precedence adjusted.  This is handled by the %prec advisory
  61659.  symbol associated with the particular grammar rule defining that unary
  61660.  operator.  See A.  Applications are not required to use this operator for
  61661.  unary operators, but the grammars that do not require it are rare.
  61662.  
  61663.  Deciding when to use %prec illustrates the difficulty in specifying the
  61664.  behavior of yacc.  There may be situations in which the _g_r_a_m_m_a_r is not
  61665.  strictly speaking in error, and yet yacc cannot interpret it
  61666.  unambiguously.  The resolution of ambiguities in the grammar can in many
  61667.  instances be resolved by providing additional information, such as using
  61668.  %type or %union declarations.  It is often easier and it usually yields a
  61669.  smaller parser to take this alternative when it is appropriate.
  61670.  
  61671.  The size and execution time of a program produced without the runtime
  61672.  debugging code is usually smaller and slightly faster in historical
  61673.  implementations.
  61674.  
  61675.  There is a fair amount of material in this that appears tutorial in
  61676.  nature; some of it has been moved to the Rationale in Draft 9 to simplify
  61677.  the specification.  It is hard to avoid because of the need to define
  61678.  terms at least informally.  The alternative is to bring in one of the
  61679.  parser generator texts and use its terminology directly, but since there
  61680.  is some variation in that terminology, it was felt that informal
  61681.  definitions of the terms so that someone who understood the concepts
  61682.  would be sure to understand the terms would make the standard stand alone
  61683.  from any specific text.
  61684.  
  61685.  Statistics messages from several historical implementations include the
  61686.  following types of information:
  61687.  
  61688.  
  61689.  
  61690.  
  61691.  
  61692.  
  61693.  
  61694.  
  61695.  
  61696.  
  61697.  
  61698.  
  61699.  
  61700.  
  61701.               Copyright (c) 1991 IEEE.  All rights reserved.
  61702.       This is an unapproved IEEE Standards Draft, subject to change.
  61703.  
  61704.  
  61705.  
  61706.  
  61707.  A.3 yacc - Yet another compiler compiler                              905
  61708.  
  61709.  
  61710.  
  61711.  
  61712.  
  61713.  
  61714.  P1003.2/D11.2
  61715.  
  61716.        _n/512 terminals, _n/300 nonterminals
  61717.        _n/600 grammar rules, _n/1500 states
  61718.        _n shift/reduce, _n reduce/reduce conflicts reported
  61719.        _n/350 working sets used
  61720.        memory: states,etc. _n/15000, parser _n/15000
  61721.        _n/600 distinct lookahead sets
  61722.        _n extra closures
  61723.        _n shift entries, _n exceptions
  61724.        _n goto entries
  61725.        _n entries saved by goto default
  61726.        Optimizer space used: input _n/15000, output _n/15000
  61727.        _n table entries, _n zero
  61728.        maximum spread: _n, maximum offset: _n
  61729.  
  61730.  The report of internal tables in the description file is left              2
  61731.  implementation defined because all aspects of these limits are also        2
  61732.  implementation defined.  Some implementations may use dynamic allocation   2
  61733.  techniques and have no specific limit values to report.                    2
  61734.  
  61735.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  61736.  
  61737.  The format of the y.output file is not given because specification of the
  61738.  format was not seen to enhance application portability.  The listing is
  61739.  primarily intended to help human users understand and debug the parser;
  61740.  use of y.output by a portable application script is far-fetched.
  61741.  Furthermore, implementations have not produced consistent output and no
  61742.  clear winner was apparent.  The format selected by the implementation
  61743.  should be human-readable, in addition to the requirement that it be a
  61744.  text file.
  61745.  
  61746.  Standard error reports are not specifically described because they are
  61747.  seldom of use to portable applications and there was no reason to
  61748.  restrict implementations.
  61749.  
  61750.  Some implementations recognize ={ as equivalent to {, because it appears
  61751.  in historical documentation.  This construction was recognized and
  61752.  documented as obsolete as long ago as 1978, in the original paper _Y_a_c_c:
  61753.  _Y_e_t _A_n_o_t_h_e_r _C_o_m_p_i_l_e_r-_C_o_m_p_i_l_e_r by Stephen C. Johnson.  POSIX.2 chose to
  61754.  leave it as obsolete and omit it.
  61755.  
  61756.  END_RATIONALE
  61757.  
  61758.  
  61759.  
  61760.  
  61761.  
  61762.  
  61763.  
  61764.  
  61765.  
  61766.  
  61767.               Copyright (c) 1991 IEEE.  All rights reserved.
  61768.       This is an unapproved IEEE Standards Draft, subject to change.
  61769.  
  61770.  
  61771.  
  61772.  
  61773.  906                             A C Language Development Utilities Option
  61774.  
  61775.  
  61776.  
  61777.  
  61778.  
  61779.  
  61780.                                                              P1003.2/D11.2
  61781.  
  61782.  
  61783.  
  61784.  
  61785.  
  61786.  
  61787.                                   Annex B
  61788.                                 (normative)
  61789.                         C Language Bindings Option
  61790.  
  61791.  
  61792.  
  61793.  
  61794.  This annex describes the C language bindings to the language-independent
  61795.  services described in Section 7.
  61796.  
  61797.  The interfaces described in this annex may be provided by the conforming
  61798.  system; however, any system claiming conformance to the Language-
  61799.  Independent System Services C Language Bindings Option shall provide all
  61800.  of the interfaces described here.
  61801.  
  61802.  BEGIN_RATIONALE
  61803.  
  61804.  
  61805.  B.0.1  C Language Bindings Option Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  61806.         _p_a_r_t _o_f _P_1_0_0_3._2)
  61807.  
  61808.  In this version of POSIX.2, the language-independent descriptions in
  61809.  Section 7 have not been developed.  The language-independent syntax is
  61810.  being created in parallel by the POSIX.1 working group.  Therefore, the C
  61811.  language bindings described in this annex are actually the full
  61812.  functional specifications.  It is the intention of the POSIX.2 working
  61813.  group to rectify this situation in a revision to this standard, by moving
  61814.  the majority of the functional specifications back into Section 7,
  61815.  leaving Annex B with only brief descriptions of the C bindings to those
  61816.  services.
  61817.  
  61818.  END_RATIONALE
  61819.  
  61820.  
  61821.  
  61822.  
  61823.  
  61824.  
  61825.  
  61826.  
  61827.  
  61828.  
  61829.  
  61830.  
  61831.  
  61832.  
  61833.               Copyright (c) 1991 IEEE.  All rights reserved.
  61834.       This is an unapproved IEEE Standards Draft, subject to change.
  61835.  
  61836.  
  61837.  
  61838.  
  61839.  Annex B C Language Bindings Option                                    907
  61840.  
  61841.  
  61842.  
  61843.  
  61844.  
  61845.  
  61846.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  61847.  
  61848.  B.1  C Language Definitions
  61849.  
  61850.  
  61851.  B.1.1  POSIX Symbols
  61852.  
  61853.  Certain symbols in this annex are defined in headers.  Some of those
  61854.  headers could also define symbols other than those defined by this
  61855.  standard, potentially conflicting with symbols used by the application.
  61856.  Also, this standard defines symbols that other standards do not permit to
  61857.  appear in those headers without some control on the visibility of those
  61858.  symbols.
  61859.  
  61860.  Symbols called _f_e_a_t_u_r_e _t_e_s_t _m_a_c_r_o_s are used to control the visibility of
  61861.  symbols that might be included in a header.  Implementations, future
  61862.  versions of this standard, and other standards may define additional
  61863.  feature test macros.  The #define_s for feature test macros shall appear
  61864.  in the application source code before any #include of a header where a
  61865.  symbol should be visible to some, but not all, applications.  If the
  61866.  definition of the macro does not precede the #include, the result is
  61867.  undefined.
  61868.  
  61869.  Feature test macros shall begin with the underscore character (_) and an   1
  61870.  uppercase letter, or with two underscore characters.                       1
  61871.  
  61872.  Implementations may add symbols to the headers shown in Table B-1,         1
  61873.  provided the identifiers for those symbols begin with the corresponding    1
  61874.  reserved prefixes in Table B-1.  Similarly, implementations may add        1
  61875.  symbols to the headers in Table B-1 that end in the string indicated as a  1
  61876.  reserved suffix as long as the reserved suffix is in that part of the      1
  61877.  name considered significant by the implementation.  This shall be in       1
  61878.  addition to any reservations made in the C Standard {7}.                   1
  61879.  
  61880.  After the last inclusion of a given header, an application may use any of  1
  61881.  the symbol classes reserved in Table B-1 for its own purposes, as long as  1
  61882.  the requirements in the note to Table B-1 are satisfied, noting that the   1
  61883.  symbol declared in the header may become inaccessible.                     1
  61884.  
  61885.  Future revisions of this standard, and other POSIX standards, are likely   1
  61886.  to use symbols in these same reserved spaces.                              1
  61887.  
  61888.  In addition, implementations may add members to a structure or union       1
  61889.  without controlling the visibility of those members with a feature test    1
  61890.  macro, as long as a user-defined macro with the same name cannot           1
  61891.  interfere with the correct interpretation of the program.                  1
  61892.  
  61893.  A conforming POSIX.2 application shall define the feature test macro in
  61894.  Table B-2.  When an application includes a header and the _POSIX_C_SOURCE
  61895.  feature test macro is defined to be the value 1 or 2, the effect shall be
  61896.  the same as if _POSIX_SOURCE was defined as described in POSIX.1 {8}.
  61897.  
  61898.  
  61899.               Copyright (c) 1991 IEEE.  All rights reserved.
  61900.       This is an unapproved IEEE Standards Draft, subject to change.
  61901.  
  61902.  
  61903.  
  61904.  
  61905.  908                                          B C Language Bindings Option
  61906.  
  61907.  
  61908.  
  61909.  
  61910.  
  61911.  
  61912.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  61913.  
  61914.  
  61915.                Table B-1  -  POSIX.2 Reserved Header Symbols                1
  61916.  __________________________________________________________________________________________________________________________________________________  1
  61917.                                       Reserved   Reserved                   1
  61918.                     Header      Key    Prefix     Suffix                    1
  61919.                   _______________________________________                   1
  61920.  
  61921.                   <fnmatch.h>    2    FNM_                                  1
  61922.                   <glob.h>       1    gl_                                   1
  61923.                                  2    GLOB_                                 1
  61924.                   <limits.h>     1               _MAX                       1
  61925.                   <regex.h>      1    re_                                   1
  61926.                                  1    rm_                                   1
  61927.                                  2    REG_                                  1
  61928.                   <wordexp.h>    1    we_                                   1
  61929.                                  2    WRDE_                                 1
  61930.  __________________________________________________________________________________________________________________________________________________  1
  61931.  NOTE:  The Key values are:                                                 1
  61932.  
  61933.      (1)  Prefixes and suffixes of symbols that shall not be declared or    1
  61934.           #defined by the application.                                      1
  61935.  
  61936.      (2)  Prefixes and suffixes of symbols that shall be preceded in the    1
  61937.           application with a #undef of that symbol before any other use.    1
  61938.  
  61939.  
  61940.                        Table B-2  -  _POSIX_C_SOURCE
  61941.  __________________________________________________________________________________________________________________________________________________
  61942.       Name                                     Description
  61943.  _________________________________________________________________________
  61944.  
  61945.  _POSIX_C_SOURCE               Enable POSIX.1 {8} and POSIX.2 symbols; see
  61946.                                text.
  61947.  __________________________________________________________________________________________________________________________________________________
  61948.  
  61949.  
  61950.  In addition, when the application includes any of the headers defined in   1
  61951.  this standard, and _POSIX_C_SOURCE is defined to be the value 2:           1
  61952.  
  61953.      (1)  All symbols defined in POSIX.2 to appear when the header is
  61954.           included shall be made visible.                                   1
  61955.  
  61956.      (2)  Symbols that are explicitly permitted, but not required, by
  61957.           POSIX.2 to appear in the header (including those in reserved
  61958.           name spaces) may be made visible.
  61959.  
  61960.      (3)  Additional symbols shall not be made visible, unless controlled
  61961.           by another feature test macro.
  61962.  
  61963.  
  61964.  
  61965.               Copyright (c) 1991 IEEE.  All rights reserved.
  61966.       This is an unapproved IEEE Standards Draft, subject to change.
  61967.  
  61968.  
  61969.  
  61970.  
  61971.  B.1 C Language Definitions                                            909
  61972.  
  61973.  
  61974.  
  61975.  
  61976.  
  61977.  
  61978.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  61979.  
  61980.  The effect of defining the _POSIX_C_SOURCE macro to any other value is
  61981.  unspecified.
  61982.  
  61983.  If there are no feature test macros present in a program, only the set of
  61984.  symbols defined by the C Standard {7} shall be present.  For each feature
  61985.  test macro present, only the symbols specified by that feature test macro
  61986.  plus those of the C Standard {7} shall be defined when the header is
  61987.  included.
  61988.  
  61989.  BEGIN_RATIONALE
  61990.  
  61991.  B.1.1.1  POSIX Symbols Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  61992.           _P_1_0_0_3._2)
  61993.  
  61994.  When the application defines the _POSIX_C_SOURCE feature test macro with   1
  61995.  value 2, it must be aware that all of the name space from POSIX.1 {8} and  1
  61996.  POSIX.2 has been reserved.  This does not imply that a POSIX.2
  61997.  implementation must support POSIX.1 {8}, just that the application must
  61998.  not conflict with an implementation that does.  The application can check
  61999.  _POSIX_VERSION and _POSIX2_C_VERSION at compile time to see which          1
  62000.  standards are supported, if that is necessary.  This is primarily an
  62001.  issue for the headers <stdio.h>, <limits.h>, <locale.h>, and <unistd.h>,
  62002.  since other POSIX.1 {8} names appear in other headers not mentioned in
  62003.  POSIX.2.
  62004.  
  62005.  It is expected that C bindings to future POSIX standards and revisions
  62006.  will define new values for _POSIX_C_SOURCE, with each new value reserving  1
  62007.  the name space for that new standard or revision, plus all earlier POSIX
  62008.  standards.  Using a single feature test macro for all standards rather
  62009.  than a separate macro for each standard furthers the goal of eventually
  62010.  combining all of the C bindings into one standard, which will be included
  62011.  in an international standard that refers to a language-independent
  62012.  ISO/IEC 9945-1 {8}.
  62013.  
  62014.  END_RATIONALE
  62015.  
  62016.  
  62017.  B.1.2  Headers and Function Prototypes
  62018.  
  62019.  Implementations shall declare function prototypes for all functions.
  62020.  Each function prototype shall appear in the header included in the
  62021.  synopsis of the function.
  62022.  
  62023.  
  62024.  
  62025.  
  62026.  
  62027.  
  62028.  
  62029.  
  62030.  
  62031.               Copyright (c) 1991 IEEE.  All rights reserved.
  62032.       This is an unapproved IEEE Standards Draft, subject to change.
  62033.  
  62034.  
  62035.  
  62036.  
  62037.  910                                          B C Language Bindings Option
  62038.  
  62039.  
  62040.  
  62041.  
  62042.  
  62043.  
  62044.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  62045.  
  62046.  B.1.3  Error Numbers
  62047.  
  62048.  Some of the functions in this annex use the variable _e_r_r_n_o to report
  62049.  errors.  Such usage is documented in Errors in each specification.  The
  62050.  usage of _e_r_r_n_o and the meanings of the symbolic names shall be as defined
  62051.  in POSIX.1 {8} B.1.3.
  62052.  
  62053.  BEGIN_RATIONALE
  62054.  
  62055.  
  62056.  B.1.4  C Language Definitions Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  62057.         _P_1_0_0_3._2)
  62058.  
  62059.  This clause clarifies the interface to the C Standard {7}.  The
  62060.  description was taken from POSIX.1, with one important modification.       1
  62061.  Since POSIX.1 {8} and the C Standard {7} were being developed and          1
  62062.  approved at about the same time, POSIX.1 {8} allowed ``Common Usage C''    1
  62063.  implementations to give system vendors time to develop Standard C          1
  62064.  interfaces.  Since Standard C compilers are now commonly available,        1
  62065.  POSIX.2 does not explicitly describe the binding to Common Usage C.
  62066.  However, such a binding would be straightforward, as long as the rules
  62067.  for Common Usage C in POSIX.1 are followed.
  62068.  
  62069.  END_RATIONALE
  62070.  
  62071.  
  62072.  
  62073.  B.2  C Numerical Limits
  62074.  
  62075.  The following subclauses list the names of macros that C language
  62076.  applications can use to obtain minimum and current values for limits
  62077.  defined in 2.13.1.
  62078.  
  62079.  BEGIN_RATIONALE
  62080.  
  62081.  B.2.0.1  C Numerical Limits Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f
  62082.           _P_1_0_0_3._2)
  62083.  
  62084.  This subclause was added in Draft 9 to give C applications access to
  62085.  limits at compile time.  Applications can use the values from the macros
  62086.  without resorting to _s_y_s_c_o_n_f().  The descriptions very closely follow the
  62087.  descriptions of macros and limits in POSIX.1 {8}.
  62088.  
  62089.  This definition of the limits is specific to the C language.  Other
  62090.  language bindings might use different interfaces or names to provide
  62091.  equivalent information to the application.
  62092.  
  62093.  Note that there are no C bindings or interfaces that change based on the
  62094.  macros in Table B-5.  These macro only advertise the availability of the
  62095.  
  62096.  
  62097.               Copyright (c) 1991 IEEE.  All rights reserved.
  62098.       This is an unapproved IEEE Standards Draft, subject to change.
  62099.  
  62100.  
  62101.  
  62102.  
  62103.  B.2 C Numerical Limits                                                911
  62104.  
  62105.  
  62106.  
  62107.  
  62108.  
  62109.  
  62110.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  62111.  
  62112.  associated utilities.
  62113.  
  62114.  END_RATIONALE
  62115.  
  62116.  
  62117.  B.2.1  C Macros for Symbolic Limits
  62118.  
  62119.  The macros in Table B-3 shall be defined in the header <limits.h>.  They
  62120.  specify values for the symbolic limits defined in 2.13.1.
  62121.  
  62122.  
  62123.                 Table B-3  -  C Macros for Symbolic Limits
  62124.  __________________________________________________________________________________________________________________________________________________
  62125.                               Minimum Allowed             Minimum for this
  62126.    Symbolic Limit                by POSIX.2                Implementation
  62127.  _________________________________________________________________________
  62128.  
  62129.  {BC_BASE_MAX}            _POSIX2_BC_BASE_MAX             BC_BASE_MAX
  62130.  {BC_DIM_MAX}             _POSIX2_BC_DIM_MAX              BC_DIM_MAX
  62131.  {BC_SCALE_MAX}           _POSIX2_BC_SCALE_MAX            BC_SCALE_MAX
  62132.  {BC_STRING_MAX}          _POSIX2_BC_STRING_MAX           BC_STRING_MAX
  62133.  {COLL_WEIGHTS_MAX}       _POSIX2_COLL_WEIGHTS_MAX        COLL_WEIGHTS_MAX
  62134.  {EXPR_NEST_MAX}          _POSIX2_EXPR_NEST_MAX           EXPR_NEST_MAX
  62135.  {LINE_MAX}               _POSIX2_LINE_MAX                LINE_MAX
  62136.  {RE_DUP_MAX}             _POSIX2_RE_DUP_MAX              RE_DUP_MAX
  62137.  __________________________________________________________________________________________________________________________________________________
  62138.  
  62139.  
  62140.  The names in the first column of Table B-3 are symbolic limits as defined
  62141.  in 2.13.1.  The names in the second column are C macros that define the
  62142.  smallest values permitted for the symbolic limits on any POSIX.2
  62143.  implementation; they shall be defined as constant expressions with the
  62144.  most restrictive values specified in 2.13.1.  The names in the third
  62145.  column are C macros that define less restrictive values provided by the
  62146.  implementation; each shall be defined as a constant that
  62147.  
  62148.      - is not smaller than the associated macro in column 2, and
  62149.  
  62150.      - is not larger than the smallest value that will be returned by
  62151.        _s_y_s_c_o_n_f() when the application is executed.
  62152.  
  62153.  BEGIN_RATIONALE
  62154.  
  62155.  
  62156.  
  62157.  
  62158.  
  62159.  
  62160.  
  62161.  
  62162.  
  62163.               Copyright (c) 1991 IEEE.  All rights reserved.
  62164.       This is an unapproved IEEE Standards Draft, subject to change.
  62165.  
  62166.  
  62167.  
  62168.  
  62169.  912                                          B C Language Bindings Option
  62170.  
  62171.  
  62172.  
  62173.  
  62174.  
  62175.  
  62176.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  62177.  
  62178.  B.2.1.1  C Macros for Symbolic Limits Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  62179.           _p_a_r_t _o_f _P_1_0_0_3._2)
  62180.  
  62181.  The macros in column 3 of Table B-3 are required to be constant
  62182.  expressions.
  62183.  
  62184.  If the C binding is to be used with POSIX.2 implementations over which
  62185.  the implementor of the binding has no control, the column-3 values must
  62186.  be the same as column-2.  If the implementation of the C binding is
  62187.  intended to be used with a POSIX.2 implementation that always supports a
  62188.  larger value than one in column 2, that implementation of the binding may
  62189.  use the larger value for the column-3 macro.  If an application compiled
  62190.  with that binding is then used with a different POSIX.2 implementation,
  62191.  it is the user's fault that the application is being run in an
  62192.  environment in which it was not intended.
  62193.  
  62194.  The application can assume, for example, that the stream created by
  62195.  popen("mailx user","w") will accept lines of length {LINE_MAX}, even if
  62196.  this is larger than {_POSIX2_LINE_MAX}.  However, if the application is
  62197.  creating a data file that might be processed on another implementation,
  62198.  it should use the values in column 2.
  62199.  
  62200.  END_RATIONALE
  62201.  
  62202.  
  62203.  B.2.2  Compile-Time Symbolic Constants for Portability Specifications
  62204.  
  62205.  The macros in Table B-4 shall be defined in the header <unistd.h>.  These
  62206.  macros can be used by the application, at compile time, to determine
  62207.  which optional facilities are present and what actions shall be taken by
  62208.  the implementation.
  62209.  
  62210.  BEGIN_RATIONALE
  62211.  
  62212.  B.2.2.1  Compile-Time Symbolic Constants for Portability Specifications
  62213.           Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  62214.  
  62215.  The symbolic constant _POSIX2_C_VERSION is analogous to _POSIX_VERSION,
  62216.  defined in POSIX.1 {8}.  It indicates the version of the C interfaces
  62217.  that are supplied by the compiler and runtime library.                     1
  62218.  
  62219.  The version of the utilities is given by the {POSIX2_VERSION} limit (see
  62220.  2.13.1), whose value can be obtained at runtime using _s_y_s_c_o_n_f() (see       1
  62221.  B.10.2).                                                                   1
  62222.  
  62223.  END_RATIONALE                                                              1
  62224.  
  62225.  
  62226.  
  62227.  
  62228.  
  62229.               Copyright (c) 1991 IEEE.  All rights reserved.
  62230.       This is an unapproved IEEE Standards Draft, subject to change.
  62231.  
  62232.  
  62233.  
  62234.  
  62235.  B.2 C Numerical Limits                                                913
  62236.  
  62237.  
  62238.  
  62239.  
  62240.  
  62241.  
  62242.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  62243.  
  62244.  
  62245.               Table B-4  -  C Compile-Time Symbolic Constants
  62246.  __________________________________________________________________________________________________________________________________________________
  62247.     Macro Name                                 Description
  62248.  _________________________________________________________________________
  62249.  
  62250.  _POSIX2_C_VERSION             The integer value 199???L.  This value       11
  62251.                                indicates the version of the interfaces in   1
  62252.                                this annex that are provided by the          1
  62253.                                implementation.  It will change with each    1
  62254.                                published version of this standard to        1
  62255.                                indicate the 4-digit year and 2-digit month  1
  62256.                                that the standard was approved by the IEEE   1
  62257.                                Standards Board.                             1
  62258.  __________________________________________________________________________________________________________________________________________________
  62259.  
  62260.  
  62261.  B.2.3  Execution-Time Symbolic Constants for Portability Specifications
  62262.  
  62263.  The macros in Table B-5 can be used by the application at execution time
  62264.  to determine which optional facilities are present.  If a macro is
  62265.  defined to have the value -1 in the header <unistd.h>, the implementation
  62266.  shall never provide that feature when the application runs under that
  62267.  implementation.  If a macro is defined to have a value other than -1, the
  62268.  implementation shall always provide that feature.  If the macro is
  62269.  undefined, then the _s_y_s_c_o_n_f() function (see B.10.2) can be used to
  62270.  determine if the feature is provided for a particular invocation of the
  62271.  application.
  62272.  
  62273.  
  62274.              Table B-5  -  C Execution-Time Symbolic Constants
  62275.  __________________________________________________________________________________________________________________________________________________
  62276.     Macro Name                                 Description
  62277.  _________________________________________________________________________
  62278.  
  62279.  _POSIX2_C_DEV                 The system supports the C Language
  62280.                                Development Utilities Option (see Annex A)
  62281.  _POSIX2_FORT_DEV              The system supports the FORTRAN Development
  62282.                                Utilities Option (see Annex C)
  62283.  _POSIX2_FORT_RUN              The system supports the FORTRAN Runtime
  62284.                                Utilities Option (see Annex C)
  62285.  _POSIX2_LOCALEDEF             The system supports the creation of locales
  62286.                                as described in 4.35.
  62287.  _POSIX2_SW_DEV                The system supports the Software
  62288.                                Development Utilities Option (see Section
  62289.                                6)
  62290.  __________________________________________________________________________________________________________________________________________________
  62291.  
  62292.  
  62293.  
  62294.  
  62295.               Copyright (c) 1991 IEEE.  All rights reserved.
  62296.       This is an unapproved IEEE Standards Draft, subject to change.
  62297.  
  62298.  
  62299.  
  62300.  
  62301.  914                                          B C Language Bindings Option
  62302.  
  62303.  
  62304.  
  62305.  
  62306.  
  62307.  
  62308.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  62309.  
  62310.  B.2.4  POSIX.1 C Numerical Limits
  62311.  
  62312.  The macros specified in POSIX.1 {8} to provide compile-time values for
  62313.  the configurable variables in Table 7-1 (see 7.8.2) shall also be visible
  62314.  in a POSIX.2 system.  Other macros required by POSIX.1 {8} 2.9 (Numerical
  62315.  Limits) and 2.10 (Symbolic Constants) may also be visible in a POSIX.2
  62316.  system.
  62317.  
  62318.  BEGIN_RATIONALE
  62319.  
  62320.  B.2.4.1  POSIX.1 C Numerical Limits Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  62321.           _p_a_r_t _o_f _P_1_0_0_3._2)
  62322.  
  62323.  Subclause 7.8.2 requires that certain POSIX.1 {8} configurable variables
  62324.  be visible in POSIX.2.  Subclause B.2.4 ensures that POSIX.2 C
  62325.  applications can obtain these variables using the same macros as
  62326.  POSIX.1 {8} C applications.  It also allows an implementation to make all
  62327.  of the POSIX.1 {8} macros available even if _POSIX_SOURCE is not set.  It  1
  62328.  also allows an implementation to make all of the POSIX.1 {8} symbols       1
  62329.  available even if it does not support all of POSIX.1 {8}.                  1
  62330.  
  62331.  END_RATIONALE                                                              1
  62332.  
  62333.  
  62334.  
  62335.  B.3  C Binding for Shell Command Interface
  62336.  
  62337.  BEGIN_RATIONALE
  62338.  
  62339.  B.3.0.1  C Binding for Shell Command Interface Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e
  62340.           _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  62341.  
  62342.  The _s_y_s_t_e_m() and _p_o_p_e_n() functions should not be used by programs that
  62343.  have set user (or group) ID privileges, as defined in POSIX.1 {8}.  The
  62344.  _f_o_r_k() and _e_x_e_c family of functions [except _e_x_e_c_l_p() and _e_x_e_c_v_p()], also
  62345.  defined in POSIX.1 {8}, should be used instead.  This prevents any
  62346.  unforeseen manipulation of the user's environment that could cause
  62347.  execution of commands not anticipated by the calling program.
  62348.  
  62349.  If the original and ``_p_o_p_e_n()ed'' processes both intend to read or write
  62350.  or read and write a common file, and either will be using FILE-type C
  62351.  functions [_f_r_e_a_d(), _f_w_r_i_t_e(), etc.], the rules in POSIX.1 {8} 8.2.3 must
  62352.  be observed.
  62353.  
  62354.  END_RATIONALE
  62355.  
  62356.  
  62357.  
  62358.  
  62359.  
  62360.  
  62361.               Copyright (c) 1991 IEEE.  All rights reserved.
  62362.       This is an unapproved IEEE Standards Draft, subject to change.
  62363.  
  62364.  
  62365.  
  62366.  
  62367.  B.3 C Binding for Shell Command Interface                             915
  62368.  
  62369.  
  62370.  
  62371.  
  62372.  
  62373.  
  62374.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  62375.  
  62376.  B.3.1  C Binding for Execute Command
  62377.  
  62378.  Function:  _s_y_s_t_e_m()
  62379.  
  62380.  B.3.1.1  Synopsis
  62381.  
  62382.  #include <stdlib.h>
  62383.  
  62384.  int system(const char *_c_o_m_m_a_n_d);
  62385.  
  62386.  B.3.1.2  Description
  62387.  
  62388.  This standard requires the _s_y_s_t_e_m() function as described in the
  62389.  C Standard {7}.
  62390.  
  62391.  The _s_y_s_t_e_m() function shall execute the command specified by the string
  62392.  pointed to by _c_o_m_m_a_n_d. The environment of the executed command shall be
  62393.  as if a child process were created using the POSIX.1 {8} _f_o_r_k() function,
  62394.  and the child process invoked the sh utility (see 4.56) using the
  62395.  POSIX.1 {8} _e_x_e_c_l() function as follows:
  62396.  
  62397.        execl(<_s_h_e_l_l _p_a_t_h>, "_s_h", "-_c", _c_o_m_m_a_n_d, (_c_h_a_r *)_0);
  62398.  
  62399.  where <_s_h_e_l_l _p_a_t_h> is an unspecified pathname for the sh utility.
  62400.  
  62401.  The _s_y_s_t_e_m() function shall ignore the SIGINT and SIGQUIT signals, and
  62402.  block the SIGCHLD signal, while waiting for the command to terminate.  If
  62403.  this might cause the application to miss a signal that would have killed
  62404.  it, then the application should examine the return value from _s_y_s_t_e_m()
  62405.  and take whatever action is appropriate to the application if the command
  62406.  terminated due to receipt of a signal.
  62407.  
  62408.  The _s_y_s_t_e_m() function shall not affect the termination status of any
  62409.  child of the calling processes other than the process(es) it itself
  62410.  creates.
  62411.  
  62412.  The _s_y_s_t_e_m() function shall not return until the child process has
  62413.  terminated.
  62414.  
  62415.  B.3.1.3  Returns
  62416.  
  62417.  If _c_o_m_m_a_n_d is NULL, the _s_y_s_t_e_m() function shall return nonzero.
  62418.  
  62419.  If _c_o_m_m_a_n_d is not NULL, the _s_y_s_t_e_m() function shall return the
  62420.  termination status of the command language interpreter in the format
  62421.  specified by the _w_a_i_t_p_i_d() function in POSIX.1 {8}.  The termination
  62422.  status of the command language interpreter is as specified for the sh
  62423.  utility, except that if some error prevents the command language
  62424.  interpreter from executing after the child process is created, the return
  62425.  
  62426.  
  62427.               Copyright (c) 1991 IEEE.  All rights reserved.
  62428.       This is an unapproved IEEE Standards Draft, subject to change.
  62429.  
  62430.  
  62431.  
  62432.  
  62433.  916                                          B C Language Bindings Option
  62434.  
  62435.  
  62436.  
  62437.  
  62438.  
  62439.  
  62440.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  62441.  
  62442.  value from _s_y_s_t_e_m() shall be as if the command language interpreter had
  62443.  terminated using _e_x_i_t(127) or __e_x_i_t(127).  If a child process cannot be
  62444.  created, or if the termination status for the command language
  62445.  interpreter cannot be obtained, _s_y_s_t_e_m() shall return -1 and set _e_r_r_n_o to
  62446.  indicate the error.
  62447.  
  62448.  B.3.1.4  Errors
  62449.  
  62450.  The _s_y_s_t_e_m() function may set _e_r_r_n_o values as described by _f_o_r_k() in
  62451.  POSIX.1 {8}.
  62452.  
  62453.  BEGIN_RATIONALE
  62454.  
  62455.  B.3.1.5  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  62456.  
  62457.  The C Standard {7} specifies that when _c_o_m_m_a_n_d is NULL, _s_y_s_t_e_m() returns
  62458.  nonzero if there is a command interpreter available and zero if one is
  62459.  not available.  At first reading, it might appear that POSIX.2 conflicts
  62460.  with this, since it requires _s_y_s_t_e_m(NULL) to always return nonzero.
  62461.  There is no conflict, however.  A POSIX.2 implementation must always have
  62462.  a command interpreter available, and is nonconforming if none is present.
  62463.  It is therefore permissible for the _s_y_s_t_e_m() function on a POSIX.2 system
  62464.  to implement the behavior specified by the C Standard {7} as long as it
  62465.  is understood that the implementation is not POSIX.2 conforming if         1
  62466.  _s_y_s_t_e_m(NULL) returns zero.                                                 1
  62467.  
  62468.  Note that, while _s_y_s_t_e_m() must ignore SIGINT and SIGQUIT and block
  62469.  SIGCHLD while waiting for the child to terminate, the handling of signals
  62470.  in the executed command is as specified by _f_o_r_k() and _e_x_e_c.  For example,
  62471.  if SIGINT is being caught or is set to SIG_DFL when _s_y_s_t_e_m() is called,
  62472.  then the child will be started with SIGINT handling set to SIG_DFL.
  62473.  
  62474.  Ignoring SIGINT and SIGQUIT in the parent process prevents coordination
  62475.  problems (two processes reading from the same terminal, for example) when
  62476.  the executed command ignores or catches one of the signals.  It is also
  62477.  usually the correct action when the user has given a command to the
  62478.  application to be executed synchronously (as in the ``!''  command in
  62479.  many interactive applications).  In either case, the signal should be
  62480.  delivered only to the child process, not to the application itself.
  62481.  There is one situation where ignoring the signals might have less than
  62482.  the desired effect.  This is when the application uses _s_y_s_t_e_m() to
  62483.  perform some task invisible to the user.  If the user typed the interrupt
  62484.  character (^C for example) while _s_y_s_t_e_m() is being used in this way, one
  62485.  would expect the application to be killed, but only the executed command
  62486.  will be killed.  Applications that use _s_y_s_t_e_m() in this way should
  62487.  carefully check the return status from _s_y_s_t_e_m() to see if the executed
  62488.  command was successful, and should take appropriate action when the
  62489.  command fails.
  62490.  
  62491.  
  62492.  
  62493.               Copyright (c) 1991 IEEE.  All rights reserved.
  62494.       This is an unapproved IEEE Standards Draft, subject to change.
  62495.  
  62496.  
  62497.  
  62498.  
  62499.  B.3 C Binding for Shell Command Interface                             917
  62500.  
  62501.  
  62502.  
  62503.  
  62504.  
  62505.  
  62506.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  62507.  
  62508.  Blocking SIGCHLD while waiting for the child to terminate prevents the
  62509.  application from catching the signal and obtaining status from _s_y_s_t_e_m()'s
  62510.  child process before _s_y_s_t_e_m() can get the status itself.
  62511.  
  62512.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  62513.  
  62514.  The context in which the utility is ultimately executed may differ from
  62515.  that in which the _s_y_s_t_e_m() function was called.  For example, file
  62516.  descriptors that have the FD_CLOEXEC flag set will be closed, and the
  62517.  process ID and parent process ID will be different.  Also, if the
  62518.  executed utility changes its environment variables or its current working
  62519.  directory, that change will not be reflected in the caller's context.
  62520.  
  62521.  Earlier drafts of this standard required, or allowed, _s_y_s_t_e_m() to return
  62522.  with _e_r_r_n_o [EINTR] if it was interrupted with a signal.  This error
  62523.  return was removed, and a requirement that _s_y_s_t_e_m() not return until the
  62524.  child has terminated was added.  This means that if a _w_a_i_t_p_i_d() call in
  62525.  _s_y_s_t_e_m() exits with _e_r_r_n_o [EINTR], _s_y_s_t_e_m() must re-issue the _w_a_i_t_p_i_d().
  62526.  This change was made for two reasons:
  62527.  
  62528.      (1)  There is no way for an application to clean up if _s_y_s_t_e_m()
  62529.           returns [EINTR], short of calling _w_a_i_t(), and that could have
  62530.           the undesirable effect of returning status of children other
  62531.           than the one started by _s_y_s_t_e_m().
  62532.  
  62533.      (2)  While it might require a change in some historical
  62534.           implementations, those implementations already have to be
  62535.           changed because they use _w_a_i_t() instead of _w_a_i_t_p_i_d().
  62536.  
  62537.  Note that if the application is catching SIGCHLD signals, it will receive  1
  62538.  such a signal before a successful _s_y_s_t_e_m() call returns.                   1
  62539.  
  62540.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  62541.  
  62542.  The C Standard {7} requires that a call to _s_y_s_t_e_m() with a NULL will
  62543.  return a nonzero value, indicating the presence of a command language
  62544.  interpreter available to the system.  It was explicitly decided that when
  62545.  _c_o_m_m_a_n_d is NULL, _s_y_s_t_e_m() should not be required to check to make sure
  62546.  that the command language interpreter actually exists with the correct
  62547.  mode, that there are enough processes to execute it, etc.  The call
  62548.  _s_y_s_t_e_m(NULL) could, theoretically, check for such problems as too many
  62549.  existing child processes, and return zero.  However, it would be
  62550.  inappropriate to return zero due to such a (presumably) transient
  62551.  condition.  If some condition exists that is not under the control of
  62552.  this application and that would cause _a_n_y _s_y_s_t_e_m() call to fail, that
  62553.  system has been rendered nonconformant.
  62554.  
  62555.  Modified in Draft 6 to reflect the availability of the _w_a_i_t_p_i_d() function
  62556.  in POSIX.1 {8}.  To conform to this standard, _s_y_s_t_e_m() must use
  62557.  
  62558.  
  62559.               Copyright (c) 1991 IEEE.  All rights reserved.
  62560.       This is an unapproved IEEE Standards Draft, subject to change.
  62561.  
  62562.  
  62563.  
  62564.  
  62565.  918                                          B C Language Bindings Option
  62566.  
  62567.  
  62568.  
  62569.  
  62570.  
  62571.  
  62572.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  62573.  
  62574.  _w_a_i_t_p_i_d(), or some similar function, instead of _w_a_i_t().
  62575.  
  62576.  Figure B-1 illustrates how _s_y_s_t_e_m() might be implemented on a POSIX.1 {8}
  62577.  implementation.
  62578.  
  62579.  Note that, while a particular implementation of _s_y_s_t_e_m() (such as the one
  62580.  above) can assume a particular path for the shell, such a path is not
  62581.  necessarily valid on another system.  The above example is not portable,
  62582.  and is not intended to be.  There is no defined way for an application to
  62583.  find the specific path for the shell.  However, _c_o_n_f_s_t_r() can provide a
  62584.  value for PATH that is guaranteed to find the sh utility.
  62585.  
  62586.  One reviewer suggested that an implementation of _s_y_s_t_e_m() might want to
  62587.  use an environment variable such as SHELL to determine which command
  62588.  interpreter to use.  The supposed implementation would use the default
  62589.  command interpreter if the one specified by the environment variable was
  62590.  not available.  This would allow a user, when using an application that
  62591.  prompts for command lines to be processed using _s_y_s_t_e_m(), to specify a
  62592.  different command interpreter.  Such an implementation is discouraged.
  62593.  If the alternate command interpreter did not follow the command line
  62594.  syntax specified in POSIX.2, then changing SHELL would render _s_y_s_t_e_m()
  62595.  nonconformant.  This would affect applications that expected the
  62596.  specified behavior from _s_y_s_t_e_m(), and since this standard does not
  62597.  mention that SHELL affects _s_y_s_t_e_m(), the application would not know that
  62598.  it needed to unset SHELL.
  62599.  
  62600.  END_RATIONALE
  62601.  
  62602.  
  62603.  B.3.2  C Binding for Pipe Communications with Programs
  62604.  
  62605.  Functions:  _p_o_p_e_n(), _p_c_l_o_s_e()
  62606.  
  62607.  B.3.2.1  Synopsis
  62608.  
  62609.  #include <stdio.h>
  62610.  
  62611.  FILE *popen(const char *_c_o_m_m_a_n_d, const char *_m_o_d_e);
  62612.  
  62613.  int pclose(FILE *_s_t_r_e_a_m);
  62614.  
  62615.  B.3.2.2  Description
  62616.  
  62617.  The _p_o_p_e_n() function shall execute the command specified by the string
  62618.  _c_o_m_m_a_n_d. It shall create a pipe between the calling program and the
  62619.  executed command, and return a pointer to a C Standard {7} stream that
  62620.  can be used to either read from or write to the pipe.  The _p_c_l_o_s_e()
  62621.  function shall close the stream, wait for the command to terminate, and
  62622.  return the termination status from the command language interpreter.
  62623.  
  62624.  
  62625.               Copyright (c) 1991 IEEE.  All rights reserved.
  62626.       This is an unapproved IEEE Standards Draft, subject to change.
  62627.  
  62628.  
  62629.  
  62630.  
  62631.  B.3 C Binding for Shell Command Interface                             919
  62632.  
  62633.  
  62634.  
  62635.  
  62636.  
  62637.  
  62638.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  62639.  
  62640.  _________________________________________________________________________
  62641.  #include <signal.h>
  62642.  
  62643.  int system(const char *cmd)                                                1
  62644.  {
  62645.      int     stat;
  62646.      pid_t   pid;
  62647.      struct  sigaction sa, savintr, savequit;
  62648.      sigset_t saveblock;
  62649.  
  62650.      if (cmd == NULL)
  62651.          return(1);
  62652.      sa.sa_handler = SIG_IGN;
  62653.      sigemptyset(&sa.sa_mask);
  62654.      sa.sa_flags = 0;
  62655.      sigemptyset(&savintr.sa_mask);                                         1
  62656.      sigemptyset(&savequit.sa_mask);                                        1
  62657.      sigaction(SIGINT, &sa, &savintr);
  62658.      sigaction(SIGQUIT, &sa, &savequit);
  62659.      sigaddset(&sa.sa_mask, SIGCHLD);                                       1
  62660.      sigprocmask(SIG_BLOCK, &sa.sa_mask, &saveblock);
  62661.      if ((pid = fork()) == 0) {
  62662.          sigaction(SIGINT, &savintr, (struct sigaction *)0);
  62663.          sigaction(SIGQUIT, &savequit, (struct sigaction *)0);
  62664.          sigprocmask(SIG_SETMASK, &saveblock, (sigset_t *)0);
  62665.          execl("/bin/sh", "sh", "-c", cmd, (char *)0);
  62666.          _exit(127);
  62667.      }
  62668.      if (pid == -1) {
  62669.          stat = -1;  /* errno comes from fork() */
  62670.      } else {
  62671.          while (waitpid(pid, &stat, 0) == -1) {
  62672.              if (errno != EINTR) {
  62673.                  stat = -1;
  62674.                  break;
  62675.              }
  62676.          }
  62677.      }
  62678.      sigaction(SIGINT, &savintr, (struct sigaction *)0);
  62679.      sigaction(SIGQUIT, &savequit, (struct sigaction *)0);
  62680.      sigprocmask(SIG_SETMASK, &saveblock, (sigset_t *)0);
  62681.      return(stat);
  62682.  }
  62683.  _________________________________________________________________________
  62684.  
  62685.                Figure B-1  -  Sample _ssss_yyyy_ssss_tttt_eeee_mmmm() Implementation
  62686.  
  62687.  
  62688.  
  62689.  
  62690.  
  62691.               Copyright (c) 1991 IEEE.  All rights reserved.
  62692.       This is an unapproved IEEE Standards Draft, subject to change.
  62693.  
  62694.  
  62695.  
  62696.  
  62697.  920                                          B C Language Bindings Option
  62698.  
  62699.  
  62700.  
  62701.  
  62702.  
  62703.  
  62704.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  62705.  
  62706.  The environment of the executed command shall be as if a child process
  62707.  were created within the _p_o_p_e_n() call using the _f_o_r_k() function, and the
  62708.  child invoked the sh utility using the call:
  62709.  
  62710.        execl(<_s_h_e_l_l _p_a_t_h>, "sh", "-c", _c_o_m_m_a_n_d, (_c_h_a_r *)_0);
  62711.  
  62712.  where <_s_h_e_l_l _p_a_t_h> is an unspecified pathname for the sh utility.          1
  62713.  However, _p_o_p_e_n() shall ensure that any streams from previous _p_o_p_e_n()       1
  62714.  calls that remain open in the parent process are closed in the new child   1
  62715.  process.                                                                   1
  62716.  
  62717.  The _m_o_d_e argument to _p_o_p_e_n() is a string that specifies I/O mode:
  62718.  
  62719.      (1)  If _m_o_d_e is "r", when the child process is started its file
  62720.           descriptor STDOUT_FILENO shall be the writable end of the pipe,
  62721.           and the file descriptor _f_i_l_e_n_o(_s_t_r_e_a_m) in the calling process,
  62722.           where _s_t_r_e_a_m is the stream pointer returned by _p_o_p_e_n(), shall be
  62723.           the readable end of the pipe.
  62724.  
  62725.      (2)  If _m_o_d_e is "w", when the child process is started its file
  62726.           descriptor STDIN_FILENO shall be the readable end of the pipe,
  62727.           and the file descriptor _f_i_l_e_n_o(_s_t_r_e_a_m) in the calling process,
  62728.           where _s_t_r_e_a_m is the stream pointer returned by _p_o_p_e_n(), shall be
  62729.           the writable end of the pipe.
  62730.  
  62731.      (3)  If _m_o_d_e is any other value, the result is undefined.
  62732.  
  62733.  A stream opened by _p_o_p_e_n() should be closed by _p_c_l_o_s_e().  As stated
  62734.  above, _p_c_l_o_s_e() shall return the termination status from the command
  62735.  language interpreter.  However, if the application has called any of the
  62736.  following:
  62737.  
  62738.      (1)  _w_a_i_t(),
  62739.  
  62740.      (2)  _w_a_i_t_p_i_d() with a _p_i_d argument less than or equal to zero or
  62741.           equal to the process ID of the command line interpreter, or
  62742.  
  62743.      (3)  any other function not defined in POSIX.1 {8} or POSIX.2 that
  62744.           could do one of the above
  62745.  
  62746.  and one of those calls caused the termination status to be unavailable to
  62747.  _p_c_l_o_s_e(), then _p_c_l_o_s_e() shall return -1 with _e_r_r_n_o set to [ECHILD] to
  62748.  report this situation.  In any case, _p_c_l_o_s_e() shall not return before the
  62749.  child process created by _p_o_p_e_n() has terminated.
  62750.  
  62751.  If the command language interpreter cannot be executed, the child
  62752.  termination status returned by _p_c_l_o_s_e() shall be as if the command
  62753.  language interpreter terminated using _e_x_i_t(127) or __e_x_i_t(127).  If it can
  62754.  be executed, the _e_x_i_t() value shall be as described for the sh utility.
  62755.  
  62756.  
  62757.               Copyright (c) 1991 IEEE.  All rights reserved.
  62758.       This is an unapproved IEEE Standards Draft, subject to change.
  62759.  
  62760.  
  62761.  
  62762.  
  62763.  B.3 C Binding for Shell Command Interface                             921
  62764.  
  62765.  
  62766.  
  62767.  
  62768.  
  62769.  
  62770.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  62771.  
  62772.  The _p_c_l_o_s_e() function shall not affect the termination status of any
  62773.  child of the calling process other than the one created by _p_o_p_e_n() for
  62774.  the associated stream.
  62775.  
  62776.  If the argument _s_t_r_e_a_m to _p_c_l_o_s_e() is not a pointer to a stream created
  62777.  by _p_o_p_e_n(), the result of _p_c_l_o_s_e() is undefined.
  62778.  
  62779.  After _p_o_p_e_n(), both the parent and the child process shall be capable of
  62780.  executing independently before either terminates.  See 2.9.1.2.
  62781.  
  62782.  B.3.2.3  Returns
  62783.  
  62784.  The _p_o_p_e_n() function shall return a NULL pointer if the pipe or
  62785.  subprocess cannot be created.  Otherwise, it shall return a stream
  62786.  pointer as described above.
  62787.  
  62788.  Upon successful return, _p_c_l_o_s_e() shall return the termination status of
  62789.  the command language interpreter.  Otherwise, _p_c_l_o_s_e() shall return -1
  62790.  and set _e_r_r_n_o to indicate the error.
  62791.  
  62792.  B.3.2.4  Errors
  62793.  
  62794.  If any of the following conditions are detected, the _p_o_p_e_n() function
  62795.  shall return NULL and set _e_r_r_n_o to the corresponding value:
  62796.  
  62797.     [EINVAL]    The _m_o_d_e argument is invalid.
  62798.  
  62799.  The _p_o_p_e_n() function may also set _e_r_r_n_o values as described by the
  62800.  POSIX.1 {8} _f_o_r_k() or _p_i_p_e() functions.
  62801.  
  62802.  If any of the following conditions are detected, the _p_c_l_o_s_e() function
  62803.  shall return -1 and set _e_r_r_n_o to the corresponding value:
  62804.  
  62805.     [ECHILD]    The status of the child process could not be obtained, as
  62806.                 described above.
  62807.  
  62808.  BEGIN_RATIONALE
  62809.  
  62810.  B.3.2.5  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  62811.  
  62812.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  62813.  
  62814.  Because open files are shared, a mode "r" command can be used as an input
  62815.  filter and a mode "w" command as an output filter.
  62816.  
  62817.  The behavior of _p_o_p_e_n() is specified for _m_o_d_es of "r" and "w".  Other
  62818.  modes such as "rb" and "wb" might be supported by specific
  62819.  implementations, but these would not be portable features.  Note that
  62820.  historical implementations of _p_o_p_e_n() only check to see if the first
  62821.  
  62822.  
  62823.               Copyright (c) 1991 IEEE.  All rights reserved.
  62824.       This is an unapproved IEEE Standards Draft, subject to change.
  62825.  
  62826.  
  62827.  
  62828.  
  62829.  922                                          B C Language Bindings Option
  62830.  
  62831.  
  62832.  
  62833.  
  62834.  
  62835.  
  62836.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  62837.  
  62838.  character of _m_o_d_e is r.  Thus, a _m_o_d_e of "robert the robot" would be
  62839.  treated as _m_o_d_e "r", and a _m_o_d_e of "anything else" would be treated as
  62840.  _m_o_d_e "w".
  62841.  
  62842.  If the application calls _w_a_i_t_p_i_d() with a _p_i_d argument greater than zero,
  62843.  and it still has a _p_o_p_e_n()ed stream open, it must ensure that _p_i_d does
  62844.  not refer to the process started by _p_o_p_e_n().
  62845.  
  62846.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  62847.  
  62848.  There is a requirement that _p_c_l_o_s_e() not return before the child process
  62849.  terminates.  This is intended to disallow implementations that return
  62850.  [EINTR] if a signal is received while waiting.  If _p_c_l_o_s_e() returned
  62851.  before the child terminated, there would be no way for the application to
  62852.  discover which child used to be associated with the stream, and it could
  62853.  not do the cleanup itself.
  62854.  
  62855.  If the stream pointed to by _s_t_r_e_a_m was not created by _p_o_p_e_n(), historical
  62856.  implementations of _p_c_l_o_s_e() return -1 without setting _e_r_r_n_o. To avoid
  62857.  requiring _p_c_l_o_s_e() to set _e_r_r_n_o in this case, this standard makes the
  62858.  behavior undefined.  An application should not use _p_c_l_o_s_e() to close any
  62859.  stream that wasn't created by _p_o_p_e_n().
  62860.  
  62861.  Wording was added in Draft 10 requiring that the parent and child
  62862.  processes be able to execute independently.  This behavior has been the
  62863.  intent all along, and the specific words were taken from the current
  62864.  draft of the POSIX.1a revision to POSIX.1 {8}.  Rationale about this
  62865.  wording appears in B.3.1.1 of POSIX.1a.
  62866.  
  62867.  Some historical implementations either block or ignore the signals
  62868.  SIGINT, SIGQUIT, and SIGHUP while waiting for the child process to
  62869.  terminate.  Since this behavior is not described in POSIX.2, such
  62870.  implementations are not conforming.  Also, some historical
  62871.  implementations return [EINTR] if a signal is received, even though the
  62872.  child process has not terminated.  Such implementations are also
  62873.  considered nonconforming.
  62874.  
  62875.  Consider, for example, an application that uses
  62876.  
  62877.        popen("command", "r")
  62878.  
  62879.  to start _c_o_m_m_a_n_d, which is part of the same application.  The parent
  62880.  writes a prompt to its standard output (presumably the terminal) and then
  62881.  reads from the _p_o_p_e_n_e_d stream.  The child reads the response from the
  62882.  user, does some transformation on the response (pathname expansion,
  62883.  perhaps) and writes the result to its standard output.  The parent
  62884.  process reads the result from the pipe, does something with it, and
  62885.  prints another prompt.  The cycle repeats.  Assuming that both processes
  62886.  do appropriate buffer flushing, this would be expected to work.
  62887.  
  62888.  
  62889.               Copyright (c) 1991 IEEE.  All rights reserved.
  62890.       This is an unapproved IEEE Standards Draft, subject to change.
  62891.  
  62892.  
  62893.  
  62894.  
  62895.  B.3 C Binding for Shell Command Interface                             923
  62896.  
  62897.  
  62898.  
  62899.  
  62900.  
  62901.  
  62902.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  62903.  
  62904.  Modified in Draft 6 to reflect the availability of the _w_a_i_t_p_i_d() function
  62905.  in POSIX.1 {8}.  To conform to this standard, _p_c_l_o_s_e() must use
  62906.  _w_a_i_t_p_i_d(), or some similar function, instead of _w_a_i_t().
  62907.  
  62908.  Figure B-2 illustrates how the _p_c_l_o_s_e() function might be implemented on
  62909.  a POSIX.1 {8} system.
  62910.  
  62911.  _________________________________________________________________________
  62912.  int pclose(FILE *stream)                                                   1
  62913.  {
  62914.          int     stat;
  62915.          pid_t   pid;
  62916.  
  62917.          pid = <_p_i_d _f_o_r _p_r_o_c_e_s_s _c_r_e_a_t_e_d _f_o_r _s_t_r_e_a_m _b_y _p_o_p_e_n()>
  62918.          (void) fclose(stream);
  62919.  
  62920.          while (waitpid(pid, &stat, 0) == -1) {
  62921.                  if (errno != EINTR) {
  62922.                          stat = -1;
  62923.                          break;
  62924.                  }
  62925.          }
  62926.          return(stat);
  62927.  }
  62928.  _________________________________________________________________________
  62929.  
  62930.                Figure B-2  -  Sample _pppp_cccc_llll_oooo_ssss_eeee() Implementation
  62931.  
  62932.  
  62933.  END_RATIONALE
  62934.  
  62935.  
  62936.  
  62937.  
  62938.  
  62939.  
  62940.  
  62941.  
  62942.  
  62943.  
  62944.  
  62945.  
  62946.  
  62947.  
  62948.  
  62949.  
  62950.  
  62951.  
  62952.  
  62953.  
  62954.  
  62955.               Copyright (c) 1991 IEEE.  All rights reserved.
  62956.       This is an unapproved IEEE Standards Draft, subject to change.
  62957.  
  62958.  
  62959.  
  62960.  
  62961.  924                                          B C Language Bindings Option
  62962.  
  62963.  
  62964.  
  62965.  
  62966.  
  62967.  
  62968.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  62969.  
  62970.  B.4  C Binding for Access Environment Variables
  62971.  
  62972.  Function:  _g_e_t_e_n_v()
  62973.  
  62974.  The C language binding to the service described in 7.2 shall be the
  62975.  POSIX.1 {8} _g_e_t_e_n_v() function.
  62976.  
  62977.  
  62978.  
  62979.  B.5  C Binding for Regular Expression Matching
  62980.  
  62981.  Functions:  _r_e_g_c_o_m_p(), _r_e_g_e_x_e_c(), _r_e_g_f_r_e_e(), _r_e_g_e_r_r_o_r()
  62982.  
  62983.  
  62984.  B.5.1  Synopsis
  62985.  
  62986.  #include <sys/types.h>
  62987.  #include <regex.h>
  62988.  
  62989.  int regcomp(regex_t *_p_r_e_g, const char *_p_a_t_t_e_r_n, int _c_f_l_a_g_s);
  62990.  
  62991.  int regexec(const regex_t *_p_r_e_g, const char *_s_t_r_i_n_g,
  62992.          size_t _n_m_a_t_c_h, regmatch_t _p_m_a_t_c_h[], int _e_f_l_a_g_s);
  62993.  
  62994.  size_t regerror(int _e_r_r_c_o_d_e, const regex_t *_p_r_e_g,
  62995.          char *_e_r_r_b_u_f, size_t _e_r_r_b_u_f__s_i_z_e);
  62996.  
  62997.  void regfree(regex_t *_p_r_e_g);
  62998.  
  62999.  
  63000.  B.5.2  Description
  63001.  
  63002.  These functions shall interpret basic and extended regular expressions,
  63003.  as described in 2.8.
  63004.  
  63005.  The header <regex.h> shall define the structure types _r_e_g_e_x__t and
  63006.  _r_e_g_m_a_t_c_h__t. The structure type _r_e_g_e_x__t shall include at least the member
  63007.  shown in Table B-6.
  63008.  
  63009.  The structure type _r_e_g_m_a_t_c_h__t shall contain at least the members shown in
  63010.  Table B-7.  The type _r_e_g_o_f_f__t, which shall be defined in <regex.h>, shall  1
  63011.  be a signed arithmetic type that can hold the largest value that can be    1
  63012.  stored in either an _o_f_f__t or a _s_s_i_z_e__t.                                    1
  63013.  
  63014.  The _r_e_g_c_o_m_p() function shall compile the regular expression contained in   1
  63015.  the string pointed to by the _p_a_t_t_e_r_n argument and place the results in     1
  63016.  the structure pointed to by _p_r_e_g. The _c_f_l_a_g_s argument shall be the
  63017.  bitwise inclusive OR of zero or more of the flags shown in Table B-8,
  63018.  which shall be defined in the header <regex.h>.
  63019.  
  63020.  
  63021.               Copyright (c) 1991 IEEE.  All rights reserved.
  63022.       This is an unapproved IEEE Standards Draft, subject to change.
  63023.  
  63024.  
  63025.  
  63026.  
  63027.  B.5 C Binding for Regular Expression Matching                         925
  63028.  
  63029.  
  63030.  
  63031.  
  63032.  
  63033.  
  63034.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  63035.  
  63036.  
  63037.                    Table B-6  -  Structure Type _rrrr_eeee_gggg_eeee_xxxx______tttt
  63038.  __________________________________________________________________________________________________________________________________________________
  63039.  Member        Member
  63040.   Type          Name                          Description
  63041.  _________________________________________________________________________
  63042.  
  63043.  _s_i_z_e__t        _r_e__n_s_u_b        Number of parenthesized subexpressions.
  63044.  __________________________________________________________________________________________________________________________________________________
  63045.  
  63046.                   Table B-7  -  Structure Type _rrrr_eeee_gggg_mmmm_aaaa_tttt_cccc_hhhh______tttt
  63047.  __________________________________________________________________________________________________________________________________________________
  63048.   Member         Member
  63049.    Type           Name                        Description
  63050.  _________________________________________________________________________
  63051.  
  63052.  _r_e_g_o_f_f__t        _r_m__s_o        Byte offset from start of _s_t_r_i_n_g to start     11
  63053.                               of substring.                                 1
  63054.  _r_e_g_o_f_f__t        _r_m__e_o        Byte offset from start of _s_t_r_i_n_g of the       11
  63055.                               first character after the end of substring.   1
  63056.  __________________________________________________________________________________________________________________________________________________
  63057.  
  63058.                   Table B-8  -  _rrrr_eeee_gggg_cccc_oooo_mmmm_pppp() _cccc_ffff_llll_aaaa_gggg_ssss Argument
  63059.  __________________________________________________________________________________________________________________________________________________
  63060.      _ffff_llll_aaaa_gggg                                      Description
  63061.  _________________________________________________________________________
  63062.  
  63063.  REG_EXTENDED                  Use Extended Regular Expressions.
  63064.  REG_ICASE                     Ignore case in match.  See 2.8.2.
  63065.  REG_NOSUB                     Report only success/fail in _r_e_g_e_x_e_c().
  63066.  REG_NEWLINE                   Change the handling of <newline>, as
  63067.                                described in the text.
  63068.  __________________________________________________________________________________________________________________________________________________
  63069.  
  63070.                   Table B-9  -  _rrrr_eeee_gggg_eeee_xxxx_eeee_cccc() _eeee_ffff_llll_aaaa_gggg_ssss Argument
  63071.  __________________________________________________________________________________________________________________________________________________
  63072.     _ffff_llll_aaaa_gggg                                       Description
  63073.  _________________________________________________________________________
  63074.  
  63075.  REG_NOTBOL                    The first character of the string pointed
  63076.                                to by _s_t_r_i_n_g is not the beginning of the
  63077.                                line.  Therefore, the circumflex character
  63078.                                (^), when taken as a special character,
  63079.                                shall not match the beginning of _s_t_r_i_n_g.
  63080.                                The last character of the string pointed to
  63081.                                by _s_t_r_i_n_g is not the end of the line.
  63082.                                Therefore, the dollar sign ($), when taken
  63083.                                as a special character, shall not match the
  63084.                                end of _s_t_r_i_n_g.
  63085.  
  63086.  
  63087.               Copyright (c) 1991 IEEE.  All rights reserved.
  63088.       This is an unapproved IEEE Standards Draft, subject to change.
  63089.  
  63090.  
  63091.  
  63092.  
  63093.  926                                          B C Language Bindings Option
  63094.  
  63095.  
  63096.  
  63097.  
  63098.  
  63099.  
  63100.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  63101.  
  63102.  REG_NOTEOL
  63103.  
  63104.  
  63105.  
  63106.  
  63107.  __________________________________________________________________________________________________________________________________________________
  63108.  
  63109.  
  63110.  The default regular expression type for _p_a_t_t_e_r_n shall be a Basic Regular
  63111.  Expression.  The application can specify Extended Regular Expressions
  63112.  using the REG_EXTENDED _c_f_l_a_g_s flag.
  63113.  
  63114.  If the function _r_e_g_c_o_m_p() succeeds, it shall return zero; otherwise it
  63115.  shall return nonzero, and the content of _p_r_e_g shall be undefined.
  63116.  
  63117.  If the REG_NOSUB flag was not set in _c_f_l_a_g_s, then _r_e_g_c_o_m_p() shall set
  63118.  _r_e__n_s_u_b to the number of parenthesized subexpressions [delimited by \( \)
  63119.  in basic regular expressions or ( ) in extended regular expressions]
  63120.  found in _p_a_t_t_e_r_n.
  63121.  
  63122.  The _r_e_g_e_x_e_c() function shall compare the null-terminated string specified
  63123.  by _s_t_r_i_n_g against the compiled regular expression _p_r_e_g initialized by a
  63124.  previous call to _r_e_g_c_o_m_p().  If it finds a match, _r_e_g_e_x_e_c() shall return
  63125.  zero; otherwise it shall return nonzero indicating either no match or an
  63126.  error.  The _e_f_l_a_g_s argument shall be the bitwise inclusive OR of zero or
  63127.  more of the flags shown in Table B-9, which shall be defined in the
  63128.  header <regex.h>.
  63129.  
  63130.  If _n_m_a_t_c_h is zero or REG_NOSUB was set in the _c_f_l_a_g_s argument to
  63131.  _r_e_g_c_o_m_p(), then _r_e_g_e_x_e_c() shall ignore the _p_m_a_t_c_h argument.  Otherwise,
  63132.  the _p_m_a_t_c_h argument shall point to an array with at least _n_m_a_t_c_h
  63133.  elements, and _r_e_g_e_x_e_c() shall fill in the elements of that array with
  63134.  offsets of the substrings of _s_t_r_i_n_g that correspond to the parenthesized
  63135.  subexpressions of _p_a_t_t_e_r_n: _p_m_a_t_c_h[_i]._r_m__s_o shall be the byte offset of
  63136.  the beginning and _p_m_a_t_c_h[_i]._r_m__e_o shall be one greater than the byte
  63137.  offset of the end of substring _i. (Subexpression _i begins at the _ith
  63138.  matched open parenthesis, counting from 1.)  Offsets in _p_m_a_t_c_h[0] shall
  63139.  identify the substring that corresponds to the entire regular expression.
  63140.  Unused elements of _p_m_a_t_c_h up to _p_m_a_t_c_h[_n_m_a_t_c_h-1] shall be filled with -1.
  63141.  If there are more than _n_m_a_t_c_h subexpressions in _p_a_t_t_e_r_n (_p_a_t_t_e_r_n itself
  63142.  counts as a subexpression), then _r_e_g_e_x_e_c() shall still do the match, but
  63143.  shall record only the first _n_m_a_t_c_h substrings.
  63144.  
  63145.  When matching a basic or extended regular expression, any given
  63146.  parenthesized subexpression of _p_a_t_t_e_r_n might participate in the match of
  63147.  several different substrings of _s_t_r_i_n_g, or it might not match any
  63148.  substring even though the pattern as a whole did match.  The following
  63149.  rules shall be used to determine which substrings to report in _p_m_a_t_c_h
  63150.  when matching regular expressions:
  63151.  
  63152.  
  63153.               Copyright (c) 1991 IEEE.  All rights reserved.
  63154.       This is an unapproved IEEE Standards Draft, subject to change.
  63155.  
  63156.  
  63157.  
  63158.  
  63159.  B.5 C Binding for Regular Expression Matching                         927
  63160.  
  63161.  
  63162.  
  63163.  
  63164.  
  63165.  
  63166.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  63167.  
  63168.      (1)  If subexpression _i in a regular expression is not contained       1
  63169.           within another subexpression, and it participated in the match    1
  63170.           several times, then the byte offsets in _p_m_a_t_c_h[_i] shall delimit
  63171.           the last such match.
  63172.  
  63173.      (2)  If subexpression _i is not contained within another                1
  63174.           subexpression, and it did not participate in an otherwise         1
  63175.           successful match, then the byte offsets in _p_m_a_t_c_h[_i] shall be     1
  63176.           -1.  A subexpression shall not participate in the match when:     1
  63177.  
  63178.            (a)  * or \{ \} appears immediately after the subexpression in   1
  63179.                 a basic regular expression, or *, ?, or { } appears         1
  63180.                 immediately after the subexpression in an extended regular  1
  63181.                 expression, and the subexpression did not match (matched    1
  63182.                 zero times), or                                             1
  63183.  
  63184.            (b)  | is used in an extended regular expression to select this  1
  63185.                 subexpression or another, and the other subexpression       1
  63186.                 matched.                                                    1
  63187.  
  63188.      (3)  If subexpression _i is contained within another subexpression _j,   1
  63189.           and _i is not contained within any other subexpression that is     1
  63190.           contained within _j, and a match of subexpression _j is reported    1
  63191.           in _p_m_a_t_c_h[_j], then the match or nonmatch of subexpression _i       1
  63192.           reported in _p_m_a_t_c_h[_i] shall be as described in (1) and (2)        1
  63193.           above, but within the substring reported in _p_m_a_t_c_h[_j] rather      1
  63194.           than the whole string.                                            1
  63195.  
  63196.      (4)  If subexpression _i is contained in subexpression _j, and the byte
  63197.           offsets in _p_m_a_t_c_h[_j] are -1, then the byte offsets in _p_m_a_t_c_h[_i]   1
  63198.           also shall be -1.                                                 1
  63199.  
  63200.      (5)  If subexpression _i matched a zero-length string, then both byte
  63201.           offsets in _p_m_a_t_c_h[_i] shall be the byte offset of the character
  63202.           or null terminator immediately following the zero-length string.
  63203.  
  63204.  If, when _r_e_g_e_x_e_c() is called, the locale is different than when the        1
  63205.  regular expression was compiled, the result is undefined.                  1
  63206.  
  63207.  If REG_NEWLINE is not set in _c_f_l_a_g_s, then a <newline> character in
  63208.  _p_a_t_t_e_r_n or _s_t_r_i_n_g shall be treated as an ordinary character.  If
  63209.  REG_NEWLINE is set, then <newline> shall be treated as an ordinary
  63210.  character except as follows:
  63211.  
  63212.      (1)  A <newline> in _s_t_r_i_n_g shall not be matched by a period outside
  63213.           of a bracket expression (see 2.8.3.1.3) or by any form of a
  63214.           nonmatching list (see 2.8.3.2).
  63215.  
  63216.  
  63217.  
  63218.  
  63219.               Copyright (c) 1991 IEEE.  All rights reserved.
  63220.       This is an unapproved IEEE Standards Draft, subject to change.
  63221.  
  63222.  
  63223.  
  63224.  
  63225.  928                                          B C Language Bindings Option
  63226.  
  63227.  
  63228.  
  63229.  
  63230.  
  63231.  
  63232.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  63233.  
  63234.      (2)  A circumflex (^) in _p_a_t_t_e_r_n, when used to specify expression
  63235.           anchoring (see 2.8.4.4 and 2.8.4.6), shall match the zero-length
  63236.           string immediately after a <newline> in _s_t_r_i_n_g, regardless of
  63237.           the setting of REG_NOTBOL.
  63238.  
  63239.      (3)  A dollar-sign ($) in _p_a_t_t_e_r_n, when used to specify expression
  63240.           anchoring, shall match the zero-length string immediately before
  63241.           a <newline> in _s_t_r_i_n_g, regardless of the setting of REG_NOTEOL.
  63242.  
  63243.  The _r_e_g_f_r_e_e() function shall free any memory allocated by _r_e_g_c_o_m_p()
  63244.  associated with _p_r_e_g.
  63245.  
  63246.  The _r_e_g_e_r_r_o_r() function provides a mapping from error codes returned by
  63247.  _r_e_g_c_o_m_p() and _r_e_g_e_x_e_c() to unspecified printable strings.  It shall
  63248.  generate a string corresponding to the value of the _e_r_r_c_o_d_e argument,
  63249.  which shall be the last nonzero value returned by _r_e_g_c_o_m_p() or _r_e_g_e_x_e_c()
  63250.  with the given value of _p_r_e_g. If _e_r_r_c_o_d_e is not such a value, the content
  63251.  of the generated string is unspecified.  If _p_r_e_g is (_r_e_g_e_x_e_c__t)0, but      1
  63252.  _e_r_r_c_o_d_e is a value returned by a previous call to _r_e_g_e_x_e_c() or _r_e_g_c_o_m_p(),  1
  63253.  then _r_e_g_e_r_r_o_r() still shall generate an error string corresponding to the  1
  63254.  value of _e_r_r_c_o_d_e, but it might not be as detailed under some               1
  63255.  implementations.                                                           1
  63256.  
  63257.  If the _e_r_r_b_u_f__s_i_z_e argument is not zero, _r_e_g_e_r_r_o_r() shall place the
  63258.  generated string into the _e_r_r_b_u_f__s_i_z_e-byte buffer pointed to by _e_r_r_b_u_f.
  63259.  If the string (including the terminating null) cannot fit in the buffer,
  63260.  _r_e_g_e_r_r_o_r() shall truncate the string and null-terminate the result.
  63261.  
  63262.  If _e_r_r_b_u_f__s_i_z_e is zero, _r_e_g_e_r_r_o_r() shall ignore the _e_r_r_b_u_f argument, but
  63263.  shall return the integer value described below.
  63264.  
  63265.  If the _p_r_e_g argument to _r_e_g_e_x_e_c() or _r_e_g_f_r_e_e() is not a compiled regular
  63266.  expression returned by _r_e_g_c_o_m_p(), the result is undefined.  A _p_r_e_g shall
  63267.  no longer be treated as a compiled regular expression after it is given
  63268.  to _r_e_g_f_r_e_e().
  63269.  
  63270.  
  63271.  B.5.3  Returns
  63272.  
  63273.  On successful completion, the _r_e_g_c_o_m_p() function shall return zero.  On
  63274.  successful completion, the _r_e_g_e_x_e_c() function shall return zero to
  63275.  indicate that _s_t_r_i_n_g matched _p_a_t_t_e_r_n, or REG_NOMATCH (which shall be
  63276.  defined in <regex.h>) to indicate no match.
  63277.  
  63278.  The _r_e_g_e_r_r_o_r() function shall return the size of the buffer needed to
  63279.  hold the entire generated string, including the null termination.  If the
  63280.  return value is greater than _e_r_r_b_u_f__s_i_z_e, the string returned in the
  63281.  buffer pointed to by _e_r_r_b_u_f has been truncated.
  63282.  
  63283.  
  63284.  
  63285.               Copyright (c) 1991 IEEE.  All rights reserved.
  63286.       This is an unapproved IEEE Standards Draft, subject to change.
  63287.  
  63288.  
  63289.  
  63290.  
  63291.  B.5 C Binding for Regular Expression Matching                         929
  63292.  
  63293.  
  63294.  
  63295.  
  63296.  
  63297.  
  63298.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  63299.  
  63300.  
  63301.              Table B-10  -  _rrrr_eeee_gggg_cccc_oooo_mmmm_pppp(), _rrrr_eeee_gggg_eeee_xxxx_eeee_cccc() Return Values
  63302.  __________________________________________________________________________________________________________________________________________________
  63303.   Error Code                                   Description
  63304.  _________________________________________________________________________
  63305.  
  63306.  REG_NOMATCH                   _r_e_g_e_x_e_c() failed to match
  63307.  REG_BADPAT                    Invalid regular expression
  63308.  REG_ECOLLATE                  Invalid collating element referenced
  63309.  REG_ECTYPE                    Invalid character class type referenced
  63310.  REG_EESCAPE                   Trailing \ in pattern
  63311.  REG_ESUBREG                   Number in \_d_i_g_i_t invalid or in error
  63312.  REG_EBRACK                    [ ] imbalance
  63313.  REG_EPAREN                    \( \) or ( ) imbalance
  63314.  REG_EBRACE                    \{ \} imbalance
  63315.  REG_BADBR                     Content of \{ \} invalid:  Not a number,
  63316.                                number too large, more than two numbers,
  63317.                                first larger than second
  63318.  REG_ERANGE                    Invalid endpoint in range expression
  63319.  REG_ESPACE                    Out of memory
  63320.  REG_BADRPT                    ?, *, or + not preceded by valid regular
  63321.                                expression
  63322.  __________________________________________________________________________________________________________________________________________________
  63323.  
  63324.  
  63325.  B.5.4  Errors
  63326.  
  63327.  If _r_e_g_c_o_m_p() or _r_e_g_e_x_e_c() fails, it shall return a nonzero value
  63328.  indicating the type of failure.  Table B-10 contains the names of macros
  63329.  for error codes that may be returned.  If a code is returned, the
  63330.  interpretation shall be as given in the table.  The implementation shall
  63331.  define the macros in Table B-10 in <regex.h>, and may define additional
  63332.  macros beginning with ``REG_'' for other error codes.
  63333.  
  63334.  If _r_e_g_c_o_m_p() detects an illegal regular expression, it may return
  63335.  REG_BADPAT, or it may return one of the error codes that more precisely
  63336.  describes the error.
  63337.  
  63338.  BEGIN_RATIONALE
  63339.  
  63340.  
  63341.  B.5.5  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  63342.  
  63343.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  63344.  
  63345.  An example of using the functions is shown in Figure B-3
  63346.  
  63347.  The following demonstrates how the REG_NOTBOL flag could be used with
  63348.  _r_e_g_e_x_e_c() to find all substrings in a line that match a pattern supplied
  63349.  
  63350.  
  63351.               Copyright (c) 1991 IEEE.  All rights reserved.
  63352.       This is an unapproved IEEE Standards Draft, subject to change.
  63353.  
  63354.  
  63355.  
  63356.  
  63357.  930                                          B C Language Bindings Option
  63358.  
  63359.  
  63360.  
  63361.  
  63362.  
  63363.  
  63364.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  63365.  
  63366.  _________________________________________________________________________
  63367.  #include <regex.h>
  63368.  
  63369.  /*
  63370.   * Match string against the extended regular expression in
  63371.   * pattern, treating errors as no match.
  63372.   *                                                                         1
  63373.   * Return 1 for match, 0 for no match.
  63374.   */
  63375.  
  63376.  int
  63377.  match(const char *string, const char *pattern)                             1
  63378.  {
  63379.          int     status;
  63380.          regex_t re;
  63381.  
  63382.          if (regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB) != 0) {
  63383.                  return(0);      /* report error */
  63384.          }
  63385.          status = regexec(&re, string, (size_t) 0, NULL, 0);
  63386.          regfree(&re);
  63387.          if (status != 0) {
  63388.                  return(0);      /* report error */
  63389.          }
  63390.          return status == 0;                                                1
  63391.  }
  63392.  _________________________________________________________________________
  63393.  
  63394.             Figure B-3  -  Example Regular Expression Matching
  63395.  
  63396.  
  63397.  by a user.  (For simplicity of the example, very little error checking is
  63398.  done.)
  63399.  
  63400.        (void) regcomp (&re, pattern, 0);
  63401.        /* this call to regexec() finds the first match on the line */
  63402.        error = regexec (&re, &buffer[0], 1, &pm, 0);
  63403.        while (error == 0) {    /* while matches found */
  63404.                <_s_u_b_s_t_r_i_n_g _f_o_u_n_d _b_e_t_w_e_e_n _p_m._r_m__s_p _a_n_d _p_m._r_m__e_p>
  63405.                /* This call to regexec() finds the next match */
  63406.                error = regexec (&re, pm.rm_ep, 1, &pm, REG_NOTBOL);
  63407.        }
  63408.  
  63409.  An application could use regerror(code,preg,NULL,(size_t)0) to find out
  63410.  how big a buffer is needed for the generated string, _m_a_l_l_o_c() a buffer to
  63411.  hold the string, and then call _r_e_g_e_r_r_o_r() again to get the string.
  63412.  Alternately, it could allocate a fixed, static buffer that is big enough
  63413.  to hold most strings (perhaps 128 bytes), and then _m_a_l_l_o_c() a larger
  63414.  buffer if it finds that this is too small.
  63415.  
  63416.  
  63417.               Copyright (c) 1991 IEEE.  All rights reserved.
  63418.       This is an unapproved IEEE Standards Draft, subject to change.
  63419.  
  63420.  
  63421.  
  63422.  
  63423.  B.5 C Binding for Regular Expression Matching                         931
  63424.  
  63425.  
  63426.  
  63427.  
  63428.  
  63429.  
  63430.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  63431.  
  63432.  The _r_e_g_m_a_t_c_h() function must fill in all _n_m_a_t_c_h elements of _p_m_a_t_c_h, where  1
  63433.  _n_m_a_t_c_h and _p_m_a_t_c_h are supplied by the application, even if some elements   1
  63434.  of _p_m_a_t_c_h do not correspond to subexpressions in _p_a_t_t_e_r_n. The application  1
  63435.  writer should note that there is probably no reason for using a value of   1
  63436.  _n_m_a_t_c_h that is larger than _p_r_e_g->_r_e__n_s_u_b.                                  1
  63437.  
  63438.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  63439.  
  63440.  The REG_ICASE flag supports the operations taken by the grep -i option
  63441.  and the historical implementations of ex and vi.  Including this flag
  63442.  will make it easier for application code to be written that does the same
  63443.  thing as these utilities.
  63444.  
  63445.  The substrings reported in _p_m_a_t_c_h[] are defined using offsets from the
  63446.  start of the string rather than pointers.  Since this is a new interface,
  63447.  there should be no impact on historical implementations or applications,
  63448.  and offsets should be just as easy to use as pointers.  The change to
  63449.  offsets was made to facilitate future extensions in which the string to
  63450.  be searched is presented to _r_e_g_e_x_e_c() in blocks, allowing a string to be
  63451.  searched that is not all in memory at once.
  63452.  
  63453.  A new type _r_e_g_o_f_f__t is used for the elements of _p_m_a_t_c_h[] to ensure that    1
  63454.  the application can represent either the largest possible array in memory  1
  63455.  (important for a POSIX.2-conforming application) or the largest possible   1
  63456.  file (important for an application using the extension where a file is     1
  63457.  searched in chunks).                                                       1
  63458.  
  63459.  The working group has rejected, at least for now, the inclusion of a
  63460.  _r_e_g_s_u_b() function that would be used to do substitutions for a matched
  63461.  regular expression.  While such a routine would be useful to some
  63462.  applications, its utility would be much more limited than the matching
  63463.  function described here.  Both regular expression parsing and
  63464.  substitution are possible to implement without support other than that
  63465.  required by the C Standard {7}, but matching is much more complex than
  63466.  substituting.  The only ``difficult'' part of substitution, given the
  63467.  information supplied by _r_e_g_e_x_e_c(), is finding the next character in a
  63468.  string when there can be multibyte characters.  That is a much wider
  63469.  issue, and one that needs a more general solution.
  63470.  
  63471.  The _e_r_r_n_o variable has not been used for error returns to avoid
  63472.  cluttering up the _e_r_r_n_o namespace for this feature.
  63473.  
  63474.  In Draft 9, the interface was modified so that the matched substrings
  63475.  _r_m__s_p and _r_m__e_p are in a separate _r_e_g_m_a_t_c_h__t structure instead of in
  63476.  _r_e_g_e_x__t.  This allows a single compiled regular expression to be used
  63477.  simultaneously in several contexts; in _m_a_i_n() and a signal handler,
  63478.  perhaps, or in multiple threads of lightweight processes.  (The _p_r_e_g
  63479.  argument to _r_e_g_e_x_e_c() is declared with type const, so the implementation
  63480.  is not permitted to use the structure to store intermediate results.)  It
  63481.  
  63482.  
  63483.               Copyright (c) 1991 IEEE.  All rights reserved.
  63484.       This is an unapproved IEEE Standards Draft, subject to change.
  63485.  
  63486.  
  63487.  
  63488.  
  63489.  932                                          B C Language Bindings Option
  63490.  
  63491.  
  63492.  
  63493.  
  63494.  
  63495.  
  63496.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  63497.  
  63498.  also allows an application to request an arbitrary number of substrings
  63499.  from a regular expression.  (Previous versions reported only ten
  63500.  substrings.)  The number of subexpressions in the regular expression is
  63501.  reported in _r_e__n_s_u_b in _p_r_e_g. With this change to _r_e_g_e_x_e_c(), consideration
  63502.  was given to dropping the REG_NOSUB flag, since the user can now specify
  63503.  this with a zero _n_m_a_t_c_h argument to _r_e_g_e_x_e_c().  However, keeping
  63504.  REG_NOSUB allows an implementation to use a different (perhaps more
  63505.  efficient) algorithm if it knows in _r_e_g_c_o_m_p() that no subexpressions need
  63506.  be reported.  The implementation is only required to fill in _p_m_a_t_c_h if
  63507.  _n_m_a_t_c_h is not zero and if REG_NOSUB is not specified.  Note that the
  63508.  _s_i_z_e__t type, as defined in the C Standard {7}, is unsigned, so the
  63509.  description of _r_e_g_e_x_e_c() does not need to address negative values of
  63510.  _n_m_a_t_c_h.
  63511.  
  63512.  The rules for reporting substrings of extended regular expressions are
  63513.  consistent with those used by Henry Spencer's ``almost public domain''
  63514.  version of _r_e_g_e_x_e_c().
  63515.  
  63516.  The REG_NOTBOL and REG_NOTEOL flags were added to _r_e_g_e_x_e_c() in Draft 9.
  63517.  REG_NOTBOL was added to allow an application to do repeated searches for
  63518.  the same pattern in a line.  If the pattern contains a circumflex
  63519.  character that should match the beginning of a line, then the pattern
  63520.  should only match when matched against the beginning of the line.
  63521.  Without the REG_NOTBOL flag, the application could rewrite the expression
  63522.  for subsequent matches, but in the general case this would require
  63523.  parsing the expression.  The need for REG_NOTEOL is not as clear; it was
  63524.  added for symmetry.
  63525.  
  63526.  The addition of the _r_e_g_e_r_r_o_r() function addresses the historical need for
  63527.  portable application programs to have access to error information more
  63528.  than ``Function failed to compile/match  your regular expression for       1
  63529.  unknown reasons.''                                                         1
  63530.  
  63531.  This interface provides for two different methods of dealing with error
  63532.  conditions.  The specific error codes (REG_EBRACE, for example), defined
  63533.  in <regex.h>, allow an application to recover from an error if it is so
  63534.  able.  Many applications, especially those that use patterns supplied by
  63535.  a user, will not try to deal with specific error cases, but will just use
  63536.  _r_e_g_e_r_r_o_r() to obtain a human-readable error message to present to the
  63537.  user.
  63538.  
  63539.  The _r_e_g_e_r_r_o_r() function uses a scheme similar to _c_o_n_f_s_t_r() to deal with
  63540.  the problem of allocating memory to hold the generated string.  The
  63541.  scheme used by _s_t_r_e_r_r_o_r() in the C Standard {7} was considered
  63542.  unacceptable since it creates difficulties for multithreaded
  63543.  applications.  (POSIX.4a, a standard for threads, started balloting in     1
  63544.  January 1991.)  A different scheme used by _r_e_g_e_r_r_o_r() in one draft of      1
  63545.  this standard was eliminated to improve internal consistency, and because
  63546.  the current interface produced greater consensus than the other.
  63547.  
  63548.  
  63549.               Copyright (c) 1991 IEEE.  All rights reserved.
  63550.       This is an unapproved IEEE Standards Draft, subject to change.
  63551.  
  63552.  
  63553.  
  63554.  
  63555.  B.5 C Binding for Regular Expression Matching                         933
  63556.  
  63557.  
  63558.  
  63559.  
  63560.  
  63561.  
  63562.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  63563.  
  63564.  The _p_r_e_g argument is provided to _r_e_g_e_r_r_o_r() to allow an implementation to
  63565.  generate a more descriptive message than would be possible with _e_r_r_c_o_d_e
  63566.  alone.  An implementation might, for example, save the character offset
  63567.  of the offending character of the pattern in a field of _p_r_e_g, and then
  63568.  include that in the generated message string.  The implementation may
  63569.  also ignore _p_r_e_g.
  63570.  
  63571.  A REG_FILENAME flag was considered, but omitted.  This flag caused
  63572.  _r_e_g_e_x_e_c() to match patterns as described in 3.13 instead of regular
  63573.  expressions.  This service is now provided by the _f_n_m_a_t_c_h() function [see
  63574.  B.6].
  63575.  
  63576.  END_RATIONALE
  63577.  
  63578.  
  63579.  
  63580.  B.6  C Binding for Match Filename or Pathname
  63581.  
  63582.  Function:  _f_n_m_a_t_c_h()
  63583.  
  63584.  
  63585.  B.6.1  Synopsis
  63586.  
  63587.  #include <fnmatch.h>
  63588.  
  63589.  int fnmatch(const char *_p_a_t_t_e_r_n, const char *_s_t_r_i_n_g, int _f_l_a_g_s);
  63590.  
  63591.  
  63592.  B.6.2  Description
  63593.  
  63594.  The _f_n_m_a_t_c_h() function shall match patterns as described in 3.13.1 and
  63595.  3.13.2.  It checks the string specified by the _s_t_r_i_n_g argument to see if
  63596.  it matches the pattern specified by the _p_a_t_t_e_r_n argument.
  63597.  
  63598.  The _f_l_a_g_s argument modifies the interpretation of _p_a_t_t_e_r_n and _s_t_r_i_n_g. It
  63599.  is the bitwise inclusive OR of zero or more of the flags shown in
  63600.  Table B-11, which are defined in the header <fnmatch.h>.  If the
  63601.  FNM_PATHNAME flag is set in _f_l_a_g_s, then a slash character in _s_t_r_i_n_g shall
  63602.  be explicitly matched by a slash in _p_a_t_t_e_r_n; it shall not be matched by
  63603.  either the asterisk or question-mark special characters, nor by a bracket
  63604.  expression.  If the FNM_PATHNAME flag is not set, the slash character
  63605.  shall be treated as an ordinary character.
  63606.  
  63607.  If FNM_NOESCAPE is not set in _f_l_a_g_s, a backslash character (\) in _p_a_t_t_e_r_n  1
  63608.  followed by any other character shall match that second character in
  63609.  _s_t_r_i_n_g. In particular, '\\' shall match a backslash in _s_t_r_i_n_g. If          1
  63610.  FNM_NOESCAPE is set, a backslash character shall be treated as an
  63611.  ordinary character.
  63612.  
  63613.  
  63614.  
  63615.               Copyright (c) 1991 IEEE.  All rights reserved.
  63616.       This is an unapproved IEEE Standards Draft, subject to change.
  63617.  
  63618.  
  63619.  
  63620.  
  63621.  934                                          B C Language Bindings Option
  63622.  
  63623.  
  63624.  
  63625.  
  63626.  
  63627.  
  63628.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  63629.  
  63630.  
  63631.                   Table B-11  -  _ffff_nnnn_mmmm_aaaa_tttt_cccc_hhhh() _ffff_llll_aaaa_gggg_ssss Argument
  63632.  __________________________________________________________________________________________________________________________________________________
  63633.     _f_l_a_g_s                                      Description
  63634.  _________________________________________________________________________
  63635.  
  63636.  FNM_NOESCAPE                  Disable backslash escaping                   1
  63637.  FNM_PATHNAME                  Slash in _s_t_r_i_n_g only matches slash in
  63638.                                _p_a_t_t_e_r_n
  63639.  FNM_PERIOD                    Leading period in _s_t_r_i_n_g must be exactly
  63640.                                matched by period in _p_a_t_t_e_r_n
  63641.  __________________________________________________________________________________________________________________________________________________
  63642.  
  63643.  
  63644.  If FNM_PERIOD is set in _f_l_a_g_s, then a leading period in _s_t_r_i_n_g shall
  63645.  match a period in _p_a_t_t_e_r_n as described by rule (2) in 3.13.2, where the    1
  63646.  location of ``leading'' is indicated by the value of FNM_PATHNAME:         1
  63647.  
  63648.      - If FNM_PATHNAME is set, a period is ``leading'' if it is the first
  63649.        character in _s_t_r_i_n_g or if it immediately follows a slash.
  63650.  
  63651.      - If FNM_PATHNAME is not set, a period is ``leading'' only if it is
  63652.        the first character of _s_t_r_i_n_g.
  63653.  
  63654.  If FNM_PERIOD is not set, then no special restrictions shall be placed on
  63655.  matching a period.
  63656.  
  63657.  
  63658.  B.6.3  Returns
  63659.  
  63660.  If _s_t_r_i_n_g matches the pattern specified by _p_a_t_t_e_r_n, then _f_n_m_a_t_c_h() shall
  63661.  return zero.  If there is no match, _f_n_m_a_t_c_h() shall return FNM_NOMATCH,
  63662.  which shall be defined in the header <fnmatch.h>.  If an error occurs,
  63663.  _f_n_m_a_t_c_h() shall return another nonzero value.
  63664.  
  63665.  
  63666.  B.6.4  Errors
  63667.  
  63668.  This standard does not specify any error conditions that are required to
  63669.  be detected by the _f_n_m_a_t_c_h() function.  Some errors may be detected under
  63670.  unspecified conditions.
  63671.  
  63672.  BEGIN_RATIONALE
  63673.  
  63674.  
  63675.  
  63676.  
  63677.  
  63678.  
  63679.  
  63680.  
  63681.               Copyright (c) 1991 IEEE.  All rights reserved.
  63682.       This is an unapproved IEEE Standards Draft, subject to change.
  63683.  
  63684.  
  63685.  
  63686.  
  63687.  B.6 C Binding for Match Filename or Pathname                          935
  63688.  
  63689.  
  63690.  
  63691.  
  63692.  
  63693.  
  63694.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  63695.  
  63696.  B.6.5  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  63697.  
  63698.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  63699.  
  63700.  The _f_n_m_a_t_c_h() function has two major uses.  It could be used by an
  63701.  application or utility that needs to read a directory and apply a pattern
  63702.  against each entry.  The find utility is an example of this.  It can also
  63703.  be used by the pax utility to process its _p_a_t_t_e_r_n operands, or by
  63704.  applications that need to match strings in a similar manner.
  63705.  
  63706.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  63707.  
  63708.  This function replaces the REG_FILENAME flag of _r_e_g_c_o_m_p() in early
  63709.  drafts.  It provides virtually the same functionality as the _r_e_g_c_o_m_p()
  63710.  and _r_e_g_e_x_e_c() functions using the REG_FILENAME and REG_FSLASH flags [the
  63711.  REG_FSLASH flag was proposed for _r_e_g_c_o_m_p(), and would have had the
  63712.  opposite effect from FMN_PATHNAME], but with a simpler interface and less
  63713.  overhead.
  63714.  
  63715.  The name _f_n_m_a_t_c_h() is intended to imply _f_i_l_e_n_a_m_e match, rather than
  63716.  _p_a_t_h_n_a_m_e match.  The default action of this function is to match
  63717.  filenames, rather than pathnames, since it gives no special significance
  63718.  to the slash character.  With the FNM_PATHNAME flag, _f_n_m_a_t_c_h() does match
  63719.  pathnames, but without tilde expansion, parameter expansion, or special
  63720.  treatment for period at the beginning of a filename.
  63721.  
  63722.  END_RATIONALE
  63723.  
  63724.  
  63725.  
  63726.  
  63727.  
  63728.  
  63729.  
  63730.  
  63731.  
  63732.  
  63733.  
  63734.  
  63735.  
  63736.  
  63737.  
  63738.  
  63739.  
  63740.  
  63741.  
  63742.  
  63743.  
  63744.  
  63745.  
  63746.  
  63747.               Copyright (c) 1991 IEEE.  All rights reserved.
  63748.       This is an unapproved IEEE Standards Draft, subject to change.
  63749.  
  63750.  
  63751.  
  63752.  
  63753.  936                                          B C Language Bindings Option
  63754.  
  63755.  
  63756.  
  63757.  
  63758.  
  63759.  
  63760.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  63761.  
  63762.  B.7  C Binding for Command Option Parsing
  63763.  
  63764.  Function:  _g_e_t_o_p_t()
  63765.  
  63766.  
  63767.  B.7.1  Synopsis
  63768.  
  63769.  #include <unistd.h>
  63770.  
  63771.  int getopt(int _a_r_g_c, char * const _a_r_g_v[], const char *_o_p_t_s_t_r_i_n_g);          1
  63772.  
  63773.  extern char *optarg;
  63774.  extern int optind, opterr, optopt;
  63775.  
  63776.  
  63777.  B.7.2  Description
  63778.  
  63779.  The _g_e_t_o_p_t() function is a command-line parser that can be used by
  63780.  applications that follow Utility Syntax Guidelines 3, 4, 5, 6, 7, 9, and
  63781.  10 in 2.10.2.  The remaining guidelines are not addressed by _g_e_t_o_p_t() and
  63782.  are the responsibility of the application.
  63783.  
  63784.  The parameters _a_r_g_c and _a_r_g_v are the argument count and argument array as
  63785.  passed to _m_a_i_n().  The argument _o_p_t_s_t_r_i_n_g is a string of recognized
  63786.  option characters; if a character is followed by a colon, the option
  63787.  takes an argument.  All option characters allowed by Utility Syntax
  63788.  Guideline 3 are allowed in _o_p_t_s_t_r_i_n_g. The implementation may accept other
  63789.  characters as an extension.
  63790.  
  63791.  The variable _o_p_t_i_n_d is the index of the next element of the _a_r_g_v[] vector
  63792.  to be processed.  It is initialized to 1 by the system, and _g_e_t_o_p_t()
  63793.  updates it when it finishes with each element of _a_r_g_v[]. When an element
  63794.  of _a_r_g_v[] contains multiple option characters, it is unspecified how
  63795.  _g_e_t_o_p_t() determines which options have already been processed.
  63796.  
  63797.  The _g_e_t_o_p_t() function shall return the next option character from _a_r_g_v
  63798.  that matches a character in _o_p_t_s_t_r_i_n_g, if there is one that matches.  If   1
  63799.  the option takes an argument, _g_e_t_o_p_t() shall set the variable _o_p_t_a_r_g to
  63800.  point to the option-argument as follows:
  63801.  
  63802.      (1)  If the option was the last character in the string pointed to by
  63803.           an element of _a_r_g_v, then _o_p_t_a_r_g contains the next element of
  63804.           _a_r_g_v, and _o_p_t_i_n_d shall be incremented by 2.  If the resulting
  63805.           value of _o_p_t_i_n_d is not less than _a_r_g_c, this indicates a missing
  63806.           option argument, and _g_e_t_o_p_t() shall return an error indication.
  63807.  
  63808.      (2)  Otherwise, _o_p_t_a_r_g points to the string following the option
  63809.           character in that element of _a_r_g_v, and _o_p_t_i_n_d shall be
  63810.           incremented by 1.
  63811.  
  63812.  
  63813.               Copyright (c) 1991 IEEE.  All rights reserved.
  63814.       This is an unapproved IEEE Standards Draft, subject to change.
  63815.  
  63816.  
  63817.  
  63818.  
  63819.  B.7 C Binding for Command Option Parsing                              937
  63820.  
  63821.  
  63822.  
  63823.  
  63824.  
  63825.  
  63826.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  63827.  
  63828.  If, when _g_e_t_o_p_t() is called, _a_r_g_v[_o_p_t_i_n_d] is NULL, *_a_r_g_v[_o_p_t_i_n_d] is not
  63829.  the character -, or _a_r_g_v[_o_p_t_i_n_d] points to the string "-", _g_e_t_o_p_t() shall
  63830.  return -1 without changing _o_p_t_i_n_d. If _a_r_g_v[_o_p_t_i_n_d] points to the string
  63831.  "--", _g_e_t_o_p_t() shall return -1 after incrementing _o_p_t_i_n_d.
  63832.  
  63833.  If _g_e_t_o_p_t() encounters an option character that is not contained in
  63834.  _o_p_t_s_t_r_i_n_g, it shall return the question-mark (?) character.  If it
  63835.  detects a missing option argument, it shall return the colon character
  63836.  (:) if the first character of _o_p_t_s_t_r_i_n_g was a colon, or a question-mark
  63837.  character otherwise.  In either case, _g_e_t_o_p_t() shall set the variable
  63838.  _o_p_t_o_p_t to the option character that caused the error.  If the application
  63839.  has not set the variable _o_p_t_e_r_r to zero and the first character of
  63840.  _o_p_t_s_t_r_i_n_g is not a colon, _g_e_t_o_p_t() shall also print a diagnostic message
  63841.  to standard error using the formatting rules specified for the getopts     1
  63842.  utility (see 4.27.6.2).                                                    1
  63843.  
  63844.  
  63845.  B.7.3  Returns
  63846.  
  63847.  The _g_e_t_o_p_t() function shall return the next option character specified on
  63848.  the command line.  The value -1 shall be returned when all command line
  63849.  options have been parsed.
  63850.  
  63851.  
  63852.  B.7.4  Errors
  63853.  
  63854.  If an invalid option is encountered, _g_e_t_o_p_t() shall return a question-
  63855.  mark character.  If an option with a missing option argument is
  63856.  encountered, _g_e_t_o_p_t() shall return either a question-mark or a colon, as
  63857.  described previously.
  63858.  
  63859.  BEGIN_RATIONALE
  63860.  
  63861.  
  63862.  B.7.5  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  63863.  
  63864.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  63865.  
  63866.  The _g_e_t_o_p_t() function is only required to support option characters
  63867.  included in Guideline 3.  Many historical implementations of _g_e_t_o_p_t()
  63868.  support other characters as options.  This is an allowed extension, but
  63869.  applications that use extensions are not maximally portable.  Note that
  63870.  support for multibyte option characters is only possible when such
  63871.  characters can be represented as type _i_n_t.
  63872.  
  63873.  The code fragment in Figure B-4 shows how one might process the arguments
  63874.  for a utility that can take the mutually exclusive options a and b and
  63875.  the options f and o, both of which require arguments.
  63876.  
  63877.  
  63878.  
  63879.               Copyright (c) 1991 IEEE.  All rights reserved.
  63880.       This is an unapproved IEEE Standards Draft, subject to change.
  63881.  
  63882.  
  63883.  
  63884.  
  63885.  938                                          B C Language Bindings Option
  63886.  
  63887.  
  63888.  
  63889.  
  63890.  
  63891.  
  63892.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  63893.  
  63894.  _________________________________________________________________________
  63895.  #include  <unistd.h>
  63896.  
  63897.  int main (int argc, char *argv[ ])                                         1
  63898.  {                                                                          1
  63899.          int c, bflg, aflg, errflg = 0;                                     1
  63900.          char *ifile, *ofile;                                               1
  63901.          extern char *optarg;
  63902.          extern int optind, optopt;
  63903.          . . .
  63904.          while ((c = getopt(argc, argv, ":abf:o:")) != -1) {
  63905.                  switch (c) {
  63906.                  case 'a':
  63907.                          if (bflg)
  63908.                                  errflg = 1;                                1
  63909.                          else
  63910.                                  aflg = 1;                                  1
  63911.                          break;
  63912.                  case 'b':
  63913.                          if (aflg)
  63914.                                  errflg = 1;                                1
  63915.                          else
  63916.                                  bflg = 1;                                  1
  63917.                                  bproc( );
  63918.                          break;
  63919.                  case 'f':
  63920.                          ifile = optarg;
  63921.                          break;
  63922.                  case 'o':
  63923.                          ofile = optarg;
  63924.                          break;
  63925.                  case ':':       /* -f or -o without option-arg */          1
  63926.                          fprintf (stderr,                                   1
  63927.                                  "Option -%c requires an option-argument\n",1
  63928.                                  optopt);                                   1
  63929.                          errflg = 1;                                        1
  63930.                          break;
  63931.                  case '?':
  63932.                          fprintf (stderr,
  63933.                                  "Unrecognized option: -%c\n", optopt);
  63934.                          errflg = 1;                                        1
  63935.                          break;
  63936.                  }
  63937.          }
  63938.          if (errflg) {
  63939.                  fprintf(stderr, "usage: . . . ");
  63940.                  exit(2);
  63941.          }
  63942.          for ( ; optind < argc; optind++) {
  63943.  
  63944.  
  63945.               Copyright (c) 1991 IEEE.  All rights reserved.
  63946.       This is an unapproved IEEE Standards Draft, subject to change.
  63947.  
  63948.  
  63949.  
  63950.  
  63951.  B.7 C Binding for Command Option Parsing                              939
  63952.  
  63953.  
  63954.  
  63955.  
  63956.  
  63957.  
  63958.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  63959.  
  63960.                  if (access(argv[optind], R_OK)) {
  63961.          . . .
  63962.  }
  63963.  _________________________________________________________________________
  63964.  
  63965.              Figure B-4  -  Argument Processing with _gggg_eeee_tttt_oooo_pppp_tttt()
  63966.  
  63967.  
  63968.  
  63969.  
  63970.  
  63971.  
  63972.  
  63973.  
  63974.  
  63975.  
  63976.  
  63977.  
  63978.  
  63979.  
  63980.  
  63981.  
  63982.  
  63983.  
  63984.  
  63985.  
  63986.  
  63987.  
  63988.  
  63989.  
  63990.  
  63991.  
  63992.  
  63993.  
  63994.  
  63995.  
  63996.  
  63997.  
  63998.  
  63999.  
  64000.  
  64001.  
  64002.  
  64003.  
  64004.  
  64005.  
  64006.  
  64007.  
  64008.  
  64009.  
  64010.  
  64011.               Copyright (c) 1991 IEEE.  All rights reserved.
  64012.       This is an unapproved IEEE Standards Draft, subject to change.
  64013.  
  64014.  
  64015.  
  64016.  
  64017.  940                                          B C Language Bindings Option
  64018.  
  64019.  
  64020.  
  64021.  
  64022.  
  64023.  
  64024.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  64025.  
  64026.  The code in Figure B-4 accepts any of the following as equivalent:
  64027.  
  64028.        cmd -ao arg path path
  64029.        cmd -a -o arg path path
  64030.        cmd -o arg -a path path
  64031.        cmd -a -o arg -- path path
  64032.        cmd -a -oarg path path
  64033.        cmd -aoarg path path
  64034.  
  64035.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  64036.  
  64037.  Support for the _o_p_t_o_p_t variable was added in Draft 9.  This documents
  64038.  historical practice, and allows the application to obtain the identity of
  64039.  the invalid option.
  64040.  
  64041.  The description was extensively rewritten in Draft 9 to be more explicit
  64042.  about how _o_p_t_a_r_g and _o_p_t_i_n_d are set, and to recognize that this routine
  64043.  deals with a vector of string pointers, not directly with a shell command
  64044.  line.
  64045.  
  64046.  The description was modified in Draft 9 to make it clear that _g_e_t_o_p_t(),
  64047.  like the getopts utility, shall deal with option-arguments whether
  64048.  separated from the option by <blank>_s or not.  Note that the requirements
  64049.  on _g_e_t_o_p_t() and getopts are more stringent than the Utility Syntax
  64050.  Guidelines.
  64051.  
  64052.  The _g_e_t_o_p_t() function has been changed to return -1, rather than EOF, so
  64053.  that <_s_t_d_i_o._h> is not required.
  64054.  
  64055.  The special significance of a colon as the first character of _o_p_t_s_t_r_i_n_g    1
  64056.  was added in Draft 11 to make _g_e_t_o_p_t() consistent with the getopts         1
  64057.  utility.  It allows an application to make a distinction between a         1
  64058.  missing argument and an incorrect option letter without having to examine  1
  64059.  the option letter.  It is true that a missing argument can only be         1
  64060.  detected in one case, but that is a case that has to be considered.        1
  64061.  
  64062.  END_RATIONALE                                                              1
  64063.  
  64064.  
  64065.  
  64066.  
  64067.  
  64068.  
  64069.  
  64070.  
  64071.  
  64072.  
  64073.  
  64074.  
  64075.  
  64076.  
  64077.               Copyright (c) 1991 IEEE.  All rights reserved.
  64078.       This is an unapproved IEEE Standards Draft, subject to change.
  64079.  
  64080.  
  64081.  
  64082.  
  64083.  B.7 C Binding for Command Option Parsing                              941
  64084.  
  64085.  
  64086.  
  64087.  
  64088.  
  64089.  
  64090.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  64091.  
  64092.  B.8  C Binding for Generate Pathnames Matching a Pattern
  64093.  
  64094.  Functions:  _g_l_o_b(), _g_l_o_b_f_r_e_e()
  64095.  
  64096.  
  64097.  B.8.1  Synopsis
  64098.  
  64099.  #include <glob.h>
  64100.  
  64101.  int glob(const char *_p_a_t_t_e_r_n, int _f_l_a_g_s,
  64102.          int (*_e_r_r_f_u_n_c)(const char *_e_p_a_t_h, int _e_e_r_r_n_o), glob_t *_p_g_l_o_b);
  64103.  
  64104.  void globfree(glob_t *_p_g_l_o_b);
  64105.  
  64106.  
  64107.  B.8.2  Description
  64108.  
  64109.  The _g_l_o_b() function is a pathname generator that implements the rules
  64110.  defined in 3.13, with optional support for rule (3) in 3.13.3.
  64111.  
  64112.  The header <glob.h> defines the structure type _g_l_o_b__t, which includes at
  64113.  least the members shown in Table B-12.
  64114.  
  64115.  
  64116.                    Table B-12  -  Structure Type _gggg_llll_oooo_bbbb______tttt
  64117.  __________________________________________________________________________________________________________________________________________________
  64118.  Member           Member
  64119.   Type             Name                         Description
  64120.  _________________________________________________________________________
  64121.  
  64122.  _s_i_z_e__t          _g_l__p_a_t_h_c         Count of paths matched by _p_a_t_t_e_r_n.        11
  64123.  _c_h_a_r **         _g_l__p_a_t_h_v         Pointer to a list of matched pathnames.
  64124.  _s_i_z_e__t          _g_l__o_f_f_s          Slots to reserve at the beginning of      11
  64125.                                   _g_l__p_a_t_h_v.                                 1
  64126.  __________________________________________________________________________________________________________________________________________________
  64127.  
  64128.  
  64129.  The argument _p_a_t_t_e_r_n is a pointer to a pathname pattern to be expanded.
  64130.  The _g_l_o_b() function shall match all accessible pathnames against this
  64131.  pattern and develop a list of all pathnames that match.  In order to have
  64132.  access to a pathname, _g_l_o_b() requires search permission on every
  64133.  component of a path except the last and read permission on each directory
  64134.  of any filename component of _p_a_t_t_e_r_n that contains any of the special
  64135.  characters *, ? or [.  The _g_l_o_b() function stores the number of matched
  64136.  pathnames into _p_g_l_o_b->_g_l__p_a_t_h_c and a pointer to a list of pointers to
  64137.  pathnames into _p_g_l_o_b->_g_l__p_a_t_h_v. The pathnames are in sort order as
  64138.  defined by 2.2.2.30.  The first pointer after the last pathname shall be
  64139.  NULL.  If the pattern does not match any pathnames, the returned number
  64140.  of matched paths is set to zero.
  64141.  
  64142.  
  64143.               Copyright (c) 1991 IEEE.  All rights reserved.
  64144.       This is an unapproved IEEE Standards Draft, subject to change.
  64145.  
  64146.  
  64147.  
  64148.  
  64149.  942                                          B C Language Bindings Option
  64150.  
  64151.  
  64152.  
  64153.  
  64154.  
  64155.  
  64156.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  64157.  
  64158.  It is the caller's responsibility to create the structure pointed to by
  64159.  _p_g_l_o_b. The _g_l_o_b() function shall allocate other space as needed,
  64160.  including the memory pointed to by _g_l__p_a_t_h_v. The _g_l_o_b_f_r_e_e() function
  64161.  shall free any space associated with _p_g_l_o_b from a previous call to
  64162.  _g_l_o_b().
  64163.  
  64164.  The argument _f_l_a_g_s is used to control the behavior of _g_l_o_b().  The value
  64165.  of _f_l_a_g_s is the bitwise inclusive OR of any of the constants shown in
  64166.  Table B-13, which are defined in <glob.h>.
  64167.  
  64168.  
  64169.                    Table B-13  -  _gggg_llll_oooo_bbbb() _ffff_llll_aaaa_gggg_ssss Argument
  64170.  __________________________________________________________________________________________________________________________________________________
  64171.      Name                                      Description
  64172.  _________________________________________________________________________
  64173.  
  64174.  GLOB_APPEND                   Append pathnames generated to the ones from
  64175.                                a previous call to _g_l_o_b().
  64176.  GLOB_DOOFFS                   Make use of _p_g_l_o_b->_g_l__o_f_f_s. If this flag is
  64177.                                set, _p_g_l_o_b->_g_l__o_f_f_s is used to specify how
  64178.                                many NULL pointers to add to the beginning
  64179.                                of _p_g_l_o_b->_g_l__p_a_t_h_v. In other words,
  64180.                                _p_g_l_o_b->_g_l__p_a_t_h_v shall point to
  64181.                                _p_g_l_o_b->_g_l__o_f_f_s NULL pointers, followed by
  64182.                                _p_g_l_o_b->_g_l__p_a_t_h_c pathname pointers, followed
  64183.                                by a NULL pointer.
  64184.  GLOB_ERR                      Causes _g_l_o_b() to return when it encounters
  64185.                                a directory that it cannot open or read.
  64186.                                Ordinarily, _g_l_o_b() continues to find
  64187.                                matches.
  64188.  GLOB_MARK                     Each pathname that is a directory that
  64189.                                matches _p_a_t_t_e_r_n has a slash appended.
  64190.  GLOB_NOCHECK                  Support rule (3) in 3.13.3.  If _p_a_t_t_e_r_n
  64191.                                does not match any pathname, then _g_l_o_b()
  64192.                                shall return a list consisting of only
  64193.                                _p_a_t_t_e_r_n, and the number of matched
  64194.                                pathnames is 1.
  64195.  GLOB_NOESCAPE                 Disable backslash escaping.                  1
  64196.  GLOB_NOSORT                   Ordinarily, _g_l_o_b() sorts the matching
  64197.                                pathnames according to the definition of
  64198.                                _c_o_l_l_a_t_i_o_n _s_e_q_u_e_n_c_e in 2.2.2.30.  When this
  64199.                                flag is used the order of pathnames
  64200.                                returned is unspecified.
  64201.  __________________________________________________________________________________________________________________________________________________
  64202.  
  64203.  
  64204.  The GLOB_APPEND flag can be used to append a new set of words to those
  64205.  generated by a previous call to _g_l_o_b().  The following rules apply when    1
  64206.  two or more calls to _g_l_o_b() are made with the same value of _p_g_l_o_b and      1
  64207.  
  64208.  
  64209.               Copyright (c) 1991 IEEE.  All rights reserved.
  64210.       This is an unapproved IEEE Standards Draft, subject to change.
  64211.  
  64212.  
  64213.  
  64214.  
  64215.  B.8 C Binding for Generate Pathnames Matching a Pattern               943
  64216.  
  64217.  
  64218.  
  64219.  
  64220.  
  64221.  
  64222.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  64223.  
  64224.  without intervening calls to _g_l_o_b_f_r_e_e():                                   1
  64225.  
  64226.      (1)  The first such call shall not set GLOB_APPEND.  All subsequent    1
  64227.           calls shall set it.                                               1
  64228.  
  64229.      (2)  All of the calls shall set GLOB_DOOFFS, or all shall not set it.  1
  64230.  
  64231.      (3)  After the second call, _p_g_l_o_b->_g_l__p_a_t_h_v shall point to a list
  64232.           containing the following:
  64233.  
  64234.            (a)  Zero or more NULLs, as specified by GLOB_DOOFFS and
  64235.                 _p_g_l_o_b->_g_l__o_f_f_s.
  64236.  
  64237.            (b)  Pointers to the pathnames that were in the _p_g_l_o_b->_g_l__p_a_t_h_v
  64238.                 list before the call, in the same order as before.
  64239.  
  64240.            (c)  Pointers to the new pathnames generated by the second
  64241.                 call, in the specified order.
  64242.  
  64243.      (4)  The count returned in _p_g_l_o_b->_g_l__p_a_t_h_c shall be the total number
  64244.           of pathnames from the two calls.
  64245.  
  64246.  The application can change any of the fields in Table B-12 after a call    1
  64247.  to _g_l_o_b(), but if it does it shall reset them to the original value        1
  64248.  before a subsequent call, using the same _p_g_l_o_b value, to _g_l_o_b_f_r_e_e() or     1
  64249.  _g_l_o_b() with the GLOB_APPEND flag.                                          1
  64250.  
  64251.  If, during the search, a directory is encountered that cannot be opened
  64252.  or read and _e_r_r_f_u_n_c is not NULL, _g_l_o_b() shall call (*_e_r_r_f_u_n_c)() with two
  64253.  arguments:
  64254.  
  64255.      (1)  The _e_p_a_t_h argument is a pointer to the path that failed.
  64256.  
  64257.      (2)  The _e_e_r_r_n_o argument is the value of _e_r_r_n_o from the failure, as
  64258.           set by the POSIX.1 {8} _o_p_e_n_d_i_r(), _r_e_a_d_d_i_r(), or _s_t_a_t()
  64259.           functions.  (Other values may be used to report other errors not
  64260.           explicitly documented for those functions.)
  64261.  
  64262.  If (*_e_r_r_f_u_n_c)() is called and returns nonzero, or if the GLOB_ERR flag is
  64263.  set in _f_l_a_g_s, _g_l_o_b() shall stop the scan and return GLOB_ABORTED after
  64264.  setting _g_l__p_a_t_h_c and _g_l__p_a_t_h_v in _p_g_l_o_b to reflect the paths already
  64265.  scanned.  If GLOB_ERR is not set and either _e_r_r_f_u_n_c is NULL or
  64266.  (*_e_r_r_f_u_n_c)() returns zero, the error shall be ignored.
  64267.  
  64268.  
  64269.  
  64270.  
  64271.  
  64272.  
  64273.  
  64274.  
  64275.               Copyright (c) 1991 IEEE.  All rights reserved.
  64276.       This is an unapproved IEEE Standards Draft, subject to change.
  64277.  
  64278.  
  64279.  
  64280.  
  64281.  944                                          B C Language Bindings Option
  64282.  
  64283.  
  64284.  
  64285.  
  64286.  
  64287.  
  64288.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  64289.  
  64290.  B.8.3  Returns
  64291.  
  64292.  On successful completion, _g_l_o_b() shall return zero.  The argument
  64293.  _p_g_l_o_b->_g_l__p_a_t_h_c shall return the number of matched pathnames and the
  64294.  argument _p_g_l_o_b->_g_l__p_a_t_h_v shall contain a pointer to a null-terminated
  64295.  list of matched and sorted pathnames.  However, if _p_g_l_o_b->_g_l__p_a_t_h_c is
  64296.  zero, the content of _p_g_l_o_b->_g_l__p_a_t_h_v is undefined.
  64297.  
  64298.  
  64299.                  Table B-14  -  _gggg_llll_oooo_bbbb() Error Return Values
  64300.  __________________________________________________________________________________________________________________________________________________
  64301.      Name                                      Description
  64302.  _________________________________________________________________________
  64303.  
  64304.  GLOB_ABORTED                  The scan was stopped because GLOB_ERR was
  64305.                                set or (*_e_r_r_f_u_n_c)() returned nonzero.
  64306.  GLOB_NOMATCH                  The _p_a_t_t_e_r_n does not match any exiting       11
  64307.                                pathname, and GLOB_NOCHECK was not set in    1
  64308.                                _f_l_a_g_s.                                       1
  64309.  GLOB_NOSPACE                  An attempt to allocate memory failed.
  64310.  __________________________________________________________________________________________________________________________________________________
  64311.  
  64312.  
  64313.  
  64314.  B.8.4  Errors
  64315.  
  64316.  If _g_l_o_b() terminates due to an error, it shall return one of the nonzero
  64317.  constants shown in Table B-14, which are defined in <glob.h>.  The
  64318.  arguments _p_g_l_o_b->_g_l__p_a_t_h_c and _p_g_l_o_b->_g_l__p_a_t_h_v are still set as defined
  64319.  above in Returns.
  64320.  
  64321.  BEGIN_RATIONALE
  64322.  
  64323.  
  64324.  B.8.5  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  64325.  
  64326.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  64327.  
  64328.  This function is not provided for the purpose of enabling utilities to
  64329.  perform pathname expansion on their arguments, as this operation is
  64330.  performed by the shell, and utilities are explicitly not expected to redo
  64331.  this.  Instead, it is provided for applications that need to do pathname
  64332.  expansion on strings obtained from other sources, such as a pattern typed
  64333.  by a user or read from a file.
  64334.  
  64335.  If a utility needs to see if a pathname matches a given pattern, it can
  64336.  use _f_n_m_a_t_c_h().
  64337.  
  64338.  
  64339.  
  64340.  
  64341.               Copyright (c) 1991 IEEE.  All rights reserved.
  64342.       This is an unapproved IEEE Standards Draft, subject to change.
  64343.  
  64344.  
  64345.  
  64346.  
  64347.  B.8 C Binding for Generate Pathnames Matching a Pattern               945
  64348.  
  64349.  
  64350.  
  64351.  
  64352.  
  64353.  
  64354.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  64355.  
  64356.  Note that _g_l__p_a_t_h_c and _g_l__p_a_t_h_v have meaning even if _g_l_o_b() fails.  This
  64357.  allows _g_l_o_b() to report partial results in the event of an error.
  64358.  However, if _g_l__p_a_t_h_c is zero, _g_l__p_a_t_h_v is unspecified even if _g_l_o_b() did
  64359.  not return an error.
  64360.  
  64361.  The GLOB_NOCHECK option could be used when an application wants to expand
  64362.  a pathname if wildcards are specified, but wants to treat the pattern as
  64363.  just a string otherwise.  The sh utility might use this for option-
  64364.  arguments, for example.
  64365.  
  64366.  One use of the GLOB_DOOFFS flag is by applications that build an argument
  64367.  list for use with the POSIX.1 {8} _e_x_e_c_v(), _e_x_e_c_v_e(), or _e_x_e_c_v_p()
  64368.  functions.  Suppose, for example, that an application wants to do the
  64369.  equivalent of ls -l *.c, but for some reason system("ls -l *.c") is not
  64370.  acceptable.  The application could obtain (_a_p_p_r_o_x_i_m_a_t_e_l_y) the same result
  64371.  using the sequence:
  64372.  
  64373.        globbuf.gl_offs = 2;
  64374.        glob ("*.c", GLOB_DOOFFS, NULL, &globbuf);
  64375.        globbuf.gl_pathv[0] = "ls";
  64376.        globbuf.gl_pathv[1] = "-l";
  64377.        execvp ("ls", &globbuf.gl_pathv[0]);
  64378.  
  64379.  Using the same example, ls -l *.c *.h could be approximately simulated
  64380.  using GLOB_APPEND as follows:
  64381.  
  64382.        globbuf.gl_offs = 2;
  64383.        glob ("*.c", GLOB_DOOFFS, NULL, &globbuf);
  64384.        glob ("*.h", GLOB_DOOFFS|GLOB_APPEND, NULL, &globbuf);
  64385.         ... etc. ...
  64386.  
  64387.  The new pathnames generated by a subsequent call with GLOB_APPEND are not
  64388.  sorted together with the previous pathnames.  This mirrors the way that
  64389.  the shell handles pathname expansion when multiple expansions are done on
  64390.  a command line.
  64391.  
  64392.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  64393.  
  64394.  The interface was simplified to a useful, but less complex, subset.  The
  64395.  _e_r_r_f_u_n_c argument was added to allow errors to be reported.
  64396.  
  64397.  A reviewer claimed that the GLOB_DOOFFS flag is unnecessary because it
  64398.  could be simulated using:
  64399.  
  64400.  
  64401.  
  64402.  
  64403.  
  64404.  
  64405.  
  64406.  
  64407.               Copyright (c) 1991 IEEE.  All rights reserved.
  64408.       This is an unapproved IEEE Standards Draft, subject to change.
  64409.  
  64410.  
  64411.  
  64412.  
  64413.  946                                          B C Language Bindings Option
  64414.  
  64415.  
  64416.  
  64417.  
  64418.  
  64419.  
  64420.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  64421.  
  64422.            new = (char **)malloc((n + pglob->gl_pathc + 1)
  64423.                           * sizeof (char *));
  64424.            (void) memcpy (new+n, pglob->gl_pathv,
  64425.                           pglob->gl_pathc * sizeof(char *));
  64426.            (void) memset (new, 0, n * sizeof (char *));
  64427.            free (pglob->gl_pathv);
  64428.            pglob->gl_pathv = new;
  64429.  
  64430.  However, this assumes that the memory pointed to by _g_l__p_a_t_h_v is a block
  64431.  that was separately created using _m_a_l_l_o_c().  This is not necessarily the
  64432.  case.  An application should make no assumptions about how the memory
  64433.  referenced by fields in _p_g_l_o_b was allocated.  It might have been obtained
  64434.  from _m_a_l_l_o_c() in a large chunk, and then carved up within _g_l_o_b(), or it
  64435.  might have been created using a different memory allocator.  It is not
  64436.  the intent of this standard to specify or imply how the memory used by
  64437.  _g_l_o_b() is managed.
  64438.  
  64439.  The structure elements _g_l__p_a_t_h_c and _g_l__p_a_t_h_v were renamed from _g_l__a_r_g_c
  64440.  and _g_l__a_r_g_v in Draft 9.  The old names implied an association with the
  64441.  parameters to _m_a_i_n() that does not necessarily exist.
  64442.  
  64443.  The GLOB_APPEND flag was added in Draft 9 at the request of a reviewer.
  64444.  This flag would be used when an application wants to expand several
  64445.  different patterns into a single list.
  64446.  
  64447.  Tilde and parameter expansion were removed from _g_l_o_b() in Draft 9.
  64448.  Applications that need these expansions should use the _w_o_r_d_e_x_p() function
  64449.  [see B.9].
  64450.  
  64451.  END_RATIONALE
  64452.  
  64453.  
  64454.  
  64455.  
  64456.  
  64457.  
  64458.  
  64459.  
  64460.  
  64461.  
  64462.  
  64463.  
  64464.  
  64465.  
  64466.  
  64467.  
  64468.  
  64469.  
  64470.  
  64471.  
  64472.  
  64473.               Copyright (c) 1991 IEEE.  All rights reserved.
  64474.       This is an unapproved IEEE Standards Draft, subject to change.
  64475.  
  64476.  
  64477.  
  64478.  
  64479.  B.8 C Binding for Generate Pathnames Matching a Pattern               947
  64480.  
  64481.  
  64482.  
  64483.  
  64484.  
  64485.  
  64486.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  64487.  
  64488.  B.9  C Binding for Perform Word Expansions
  64489.  
  64490.  Functions:  _w_o_r_d_e_x_p(), _w_o_r_d_f_r_e_e()
  64491.  
  64492.  
  64493.  B.9.1  Synopsis
  64494.  
  64495.  #include <wordexp.h>
  64496.  
  64497.  int wordexp(const char *_w_o_r_d_s, wordexp_t *_p_w_o_r_d_e_x_p, int _f_l_a_g_s);
  64498.  
  64499.  void wordfree(wordexp_t *_p_w_o_r_d_e_x_p);
  64500.  
  64501.  
  64502.  B.9.2  Description
  64503.  
  64504.  The _w_o_r_d_e_x_p() function shall perform word expansions as described in 3.6,
  64505.  subject to quoting as in 3.2, and place the list of expanded words into
  64506.  _p_w_o_r_d_e_x_p. The expansions shall be the same as would be performed by the
  64507.  shell if _w_o_r_d_s were the part of a command line representing the arguments
  64508.  to a utility.  Therefore, _w_o_r_d_s shall not contain an unquoted <newline>
  64509.  or any of the unquoted shell special characters |, &, ;, <, or >, except
  64510.  in the context of command substitution as specified in 3.6.3.  It also
  64511.  shall not contain unquoted parentheses or braces, except in the context
  64512.  of command or variable substitution.  If _w_o_r_d_s contains an unquoted
  64513.  comment character (number sign) that is the beginning of a token,
  64514.  _w_o_r_d_e_x_p() may treat the comment character as a regular character, or may
  64515.  interpret it as a comment indicator and ignore the remainder of _w_o_r_d_s.
  64516.  
  64517.  The header <wordexp.h> defines the structure type _w_o_r_d_e_x_p__t, which
  64518.  includes at least the members shown in Table B-15.
  64519.  
  64520.  
  64521.                   Table B-15  -  Structure Type _wwww_oooo_rrrr_dddd_eeee_xxxx_pppp______tttt
  64522.  __________________________________________________________________________________________________________________________________________________
  64523.  Member           Member
  64524.   Type             Name                         Description
  64525.  _________________________________________________________________________
  64526.  
  64527.  _s_i_z_e__t          _w_e__w_o_r_d_c         Count of words matched by _w_o_r_d_s.          11
  64528.  _c_h_a_r **         _w_e__w_o_r_d_v         Pointer to list of expanded words.
  64529.  _s_i_z_e__t          _w_e__o_f_f_s          Slots to reserve at the beginning of      11
  64530.                                   _w_e__w_o_r_d_v.                                 1
  64531.  __________________________________________________________________________________________________________________________________________________
  64532.  
  64533.  
  64534.  The argument _w_o_r_d_s is a pointer to a string containing one or more words
  64535.  to be expanded.  The _w_o_r_d_e_x_p() function shall store the number of
  64536.  generated words into _w_e__w_o_r_d_c and a pointer to a list of pointers to
  64537.  
  64538.  
  64539.               Copyright (c) 1991 IEEE.  All rights reserved.
  64540.       This is an unapproved IEEE Standards Draft, subject to change.
  64541.  
  64542.  
  64543.  
  64544.  
  64545.  948                                          B C Language Bindings Option
  64546.  
  64547.  
  64548.  
  64549.  
  64550.  
  64551.  
  64552.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  64553.  
  64554.  words in _w_e__w_o_r_d_v. Each individual field created during field splitting
  64555.  (see 3.6.5) or pathname expansion (see 3.6.6) is a separate word in the
  64556.  _w_e__w_o_r_d_v list.  The words are in order as described in 3.6.  The first
  64557.  pointer after the last word pointer shall be NULL.  The expansion of
  64558.  special parameters described in 3.5.2 is unspecified.
  64559.  
  64560.  It is the caller's responsibility to create the structure pointed to by
  64561.  _p_w_o_r_d_e_x_p. The _w_o_r_d_e_x_p() function allocates other space as needed,
  64562.  including memory pointed to by _w_e__w_o_r_d_v. The _w_o_r_d_f_r_e_e() function shall
  64563.  free any memory associated with _p_w_o_r_d_e_x_p from a previous call to
  64564.  _w_o_r_d_e_x_p().
  64565.  
  64566.  The argument _f_l_a_g_s is used to control the behavior of _w_o_r_d_e_x_p().  The
  64567.  value of _f_l_a_g_s is the bitwise inclusive OR of any of the constants in
  64568.  Table B-16, which are defined in <wordexp.h>.
  64569.  
  64570.  
  64571.                   Table B-16  -  _wwww_oooo_rrrr_dddd_eeee_xxxx_pppp() _ffff_llll_aaaa_gggg_ssss Argument
  64572.  __________________________________________________________________________________________________________________________________________________
  64573.      Name                                      Description
  64574.  _________________________________________________________________________
  64575.  
  64576.  WRDE_APPEND                   Append words generated to the ones from a
  64577.                                previous call to _w_o_r_d_e_x_p().
  64578.  WRDE_DOOFFS                   Make use of _w_e__o_f_f_s. If this flag is set,
  64579.                                _w_e__o_f_f_s is used to specify how many NULL
  64580.                                pointers to add to the beginning of
  64581.                                _w_e__w_o_r_d_v. In other words, _w_e__w_o_r_d_v shall
  64582.                                point to _w_e__o_f_f_s NULL pointers, followed by
  64583.                                _w_e__w_o_r_d_c word pointers, followed by a NULL
  64584.                                pointer.
  64585.  WRDE_NOCMD                    Fail if command substitution, as specified
  64586.                                in 3.6.3, is requested.
  64587.  WRDE_REUSE                    The _p_w_o_r_d_e_x_p argument was passed to a
  64588.                                previous successful call to _w_o_r_d_e_x_p(), and
  64589.                                has not been passed to _w_o_r_d_f_r_e_e().  The
  64590.                                result shall be the same as if the
  64591.                                application had called _w_o_r_d_f_r_e_e() and then
  64592.                                called _w_o_r_d_e_x_p() without WRDE_REUSE.
  64593.  WRDE_SHOWERR                  Do not redirect standard error to
  64594.                                /dev/null.
  64595.  WRDE_UNDEF                    Report error on an attempt to expand an
  64596.                                undefined shell variable.
  64597.  __________________________________________________________________________________________________________________________________________________
  64598.  
  64599.  
  64600.  The WRDE_APPEND flag can be used to append a new set of words to those
  64601.  generated by a previous call to _w_o_r_d_e_x_p().  The following rules apply
  64602.  when two or more calls to _w_o_r_d_e_x_p() are made with the same value of
  64603.  
  64604.  
  64605.               Copyright (c) 1991 IEEE.  All rights reserved.
  64606.       This is an unapproved IEEE Standards Draft, subject to change.
  64607.  
  64608.  
  64609.  
  64610.  
  64611.  B.9 C Binding for Perform Word Expansions                             949
  64612.  
  64613.  
  64614.  
  64615.  
  64616.  
  64617.  
  64618.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  64619.  
  64620.  _p_w_o_r_d_e_x_p and without intervening calls to _w_o_r_d_f_r_e_e():
  64621.  
  64622.      (1)  The first such call shall not set WRDE_APPEND.  All subsequent
  64623.           calls shall set it.
  64624.  
  64625.      (2)  All of the calls shall set WRDE_DOOFFS, or all shall not set it.
  64626.  
  64627.      (3)  After the second and each subsequent call, _w_e__w_o_r_d_v shall point
  64628.           to a list containing the following:
  64629.  
  64630.            (a)  Zero or more NULLs, as specified by WRDE_DOOFFS and
  64631.                 _w_e__o_f_f_s.
  64632.  
  64633.            (b)  Pointers to the words that were in the _w_e__w_o_r_d_v list
  64634.                 before the call, in the same order as before.
  64635.  
  64636.            (c)  Pointers to the new words generated by the latest call, in
  64637.                 the specified order.
  64638.  
  64639.      (4)  The count returned in _w_e__w_o_r_d_c shall be the total number of
  64640.           words from all of the calls.
  64641.  
  64642.  The application can change any of the fields in Table B-15 after a call    1
  64643.  to _w_o_r_d_e_x_p(), but if it does it shall reset them to the original value     1
  64644.  before a subsequent call, using the same _p_w_o_r_d_e_x_p value, to _w_o_r_d_f_r_e_e() or  1
  64645.  _w_o_r_d_e_x_p() with the WRDE_APPEND or WRDE_REUSE flag.                         1
  64646.  
  64647.  If _w_o_r_d_s contains an unquoted <newline>, |, &, ;, <, >, parenthesis, or
  64648.  brace in an inappropriate context, _w_o_r_d_e_x_p() shall fail, and the number
  64649.  of expanded words shall be zero.
  64650.  
  64651.  Unless WRDE_SHOWERR is set in _f_l_a_g_s, _w_o_r_d_e_x_p() shall redirect standard
  64652.  error to /dev/null for any utilities executed as a result of command
  64653.  substitution while expanding _w_o_r_d_s. If WRDE_SHOWERR is set, _w_o_r_d_e_x_p() may
  64654.  write messages to standard error if syntax errors are detected while
  64655.  expanding _w_o_r_d_s.
  64656.  
  64657.  If WRDE_DOOFFS is set, then _w_e__o_f_f_s shall have the same value for each     1
  64658.  _w_o_r_d_e_x_p() call and the _w_o_r_d_f_r_e_e() call using a given _p_g_l_o_b.                1
  64659.  
  64660.  
  64661.  B.9.3  Returns
  64662.  
  64663.  If no errors are encountered while expanding _w_o_r_d_s, _w_o_r_d_e_x_p() shall
  64664.  return zero.  Otherwise it shall return a nonzero value.
  64665.  
  64666.  
  64667.  
  64668.  
  64669.  
  64670.  
  64671.               Copyright (c) 1991 IEEE.  All rights reserved.
  64672.       This is an unapproved IEEE Standards Draft, subject to change.
  64673.  
  64674.  
  64675.  
  64676.  
  64677.  950                                          B C Language Bindings Option
  64678.  
  64679.  
  64680.  
  64681.  
  64682.  
  64683.  
  64684.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  64685.  
  64686.  B.9.4  Errors
  64687.  
  64688.  
  64689.                   Table B-17  -  _wwww_oooo_rrrr_dddd_eeee_xxxx_pppp() Return Values
  64690.  __________________________________________________________________________________________________________________________________________________
  64691.      Name                                      Description
  64692.  _________________________________________________________________________
  64693.  
  64694.  WRDE_BADCHAR                  One of the unquoted characters |, &, ;, <,
  64695.                                >, parentheses, or braces appears in _w_o_r_d_s
  64696.                                in an inappropriate context.
  64697.  WRDE_BADVAL                   Reference to undefined shell variable when
  64698.                                WRDE_UNDEF is set in _f_l_a_g_s.
  64699.  WRDE_CMDSUB                   Command substitution requested when
  64700.                                WRDE_NOCMD was set in flags.
  64701.  WRDE_NOSPACE                  Attempt to allocate memory failed
  64702.  WRDE_SYNTAX                   Shell syntax error, such as unbalanced
  64703.                                parentheses or unterminated string.
  64704.  __________________________________________________________________________________________________________________________________________________
  64705.  
  64706.  
  64707.  If _w_o_r_d_e_x_p() terminates due to an error, it shall return one of the
  64708.  nonzero constants shown in Table B-17, which shall be defined in
  64709.  <wordexp.h>.  The implementation may define additional error returns
  64710.  beginning with WRDE_.
  64711.  
  64712.  If _w_o_r_d_e_x_p() returns the error value WRDE_NOSPACE, then
  64713.  _p_w_o_r_d_e_x_p->_w_e__w_o_r_d_c and _p_w_o_r_d_e_x_p->_w_e__w_o_r_d_v shall be updated to reflect any
  64714.  words that were successfully expanded.  In other cases, they shall not be
  64715.  modified.
  64716.  
  64717.  BEGIN_RATIONALE
  64718.  
  64719.  
  64720.  B.9.5  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  64721.  
  64722.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  64723.  
  64724.  This function is intended to be used by an application that wants to do
  64725.  all of the shell's expansions on a word or words obtained from a user.
  64726.  For example, if the application prompts for a file name (or list of file
  64727.  names) and then used _w_o_r_d_e_x_p() to process the input, the user could
  64728.  respond with anything that would be valid as input to the shell.
  64729.  
  64730.  The WRDE_NOCMD flag is provided for applications that, for security or
  64731.  other reasons, want to prevent a user from executing shell commands.
  64732.  Disallowing unquoted shell special characters also prevents unwanted side
  64733.  effects such as executing a command or writing a file.
  64734.  
  64735.  
  64736.  
  64737.               Copyright (c) 1991 IEEE.  All rights reserved.
  64738.       This is an unapproved IEEE Standards Draft, subject to change.
  64739.  
  64740.  
  64741.  
  64742.  
  64743.  B.9 C Binding for Perform Word Expansions                             951
  64744.  
  64745.  
  64746.  
  64747.  
  64748.  
  64749.  
  64750.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  64751.  
  64752.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  64753.  
  64754.  This function was added in Draft 9 as an alternative to _g_l_o_b().  There
  64755.  has been continuing controversy over exactly what features should be
  64756.  included in _g_l_o_b().  It is hoped that providing _w_o_r_d_e_x_p() (which provides
  64757.  all of the shell's word expansions, but will probably be slow to
  64758.  execute), and _g_l_o_b() (which is faster but does only expansion of
  64759.  pathnames, without tilde or parameter expansion), will satisfy the
  64760.  majority of reviewers.
  64761.  
  64762.  While _w_o_r_d_e_x_p() could be implemented entirely as a library routine, it is  1
  64763.  expected that most implementations will run a shell in a subprocess to do
  64764.  the expansion.
  64765.  
  64766.  Two different approaches have been proposed for how the required
  64767.  information might be presented to the shell and the results returned.
  64768.  They are presented here as examples.
  64769.  
  64770.  One proposal is to extend the echo utility by adding a -q option.  This
  64771.  option would cause echo to add a backslash before each backslash and each
  64772.  <blank> that occurs within an argument.  The _w_o_r_d_e_x_p() function could
  64773.  then invoke the shell as follows:
  64774.  
  64775.        (void) strcpy (buffer, "echo -q ");
  64776.        (void) strcat (buffer, _w_o_r_d_s);
  64777.        if ((flags & WRDE_SHOWERR) == 0)
  64778.                (void) strcat (buffer, " 2>/dev/null");
  64779.        f = popen (buffer, "r");
  64780.  
  64781.  The _w_o_r_d_e_x_p() function would read the resulting output, remove unquoted
  64782.  backslashes, and break into words at unquoted <blank>_s.  If the
  64783.  WRDE_NOCMD flag was set, _w_o_r_d_e_x_p() would have to scan _w_o_r_d_s before
  64784.  starting the subshell to make sure that there would be no command
  64785.  substitution.  In any case, it would have to scan _w_o_r_d_s for unquoted
  64786.  special characters.
  64787.  
  64788.  Another proposal is to add the following options to sh:
  64789.  
  64790.     -w _w_o_r_d_l_i_s_t This option provides a wordlist expansion service to
  64791.                 applications.  The words in _w_o_r_d_l_i_s_t are expanded, and the
  64792.                 following is written to standard output:
  64793.  
  64794.                  (1)  The count of the number of words after expansion, in
  64795.                       decimal, followed by a null byte.
  64796.  
  64797.                  (2)  The number of bytes needed to represent the expanded
  64798.                       words (not including null separators), in decimal,
  64799.                       followed by a null byte.
  64800.  
  64801.  
  64802.  
  64803.               Copyright (c) 1991 IEEE.  All rights reserved.
  64804.       This is an unapproved IEEE Standards Draft, subject to change.
  64805.  
  64806.  
  64807.  
  64808.  
  64809.  952                                          B C Language Bindings Option
  64810.  
  64811.  
  64812.  
  64813.  
  64814.  
  64815.  
  64816.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  64817.  
  64818.                  (3)  The expanded words, each terminated by a null byte.
  64819.  
  64820.                 If an error is encountered during word expansion, sh exits
  64821.                 with a nonzero status after writing the above to report
  64822.                 any words successfully expanded
  64823.  
  64824.     -P          Run in ``protected'' mode.  If specified with the -w
  64825.                 option, no command substitution is performed.
  64826.  
  64827.  With these options, _w_o_r_d_e_x_p() could be implemented fairly simply by
  64828.  creating a subprocess using _f_o_r_k(), and executing sh using the line:
  64829.  
  64830.        execl(<_s_h_e_l_l _p_a_t_h>, "_s_h", "-_P", "-_w", _w_o_r_d_s, (_c_h_a_r *)_0);
  64831.  
  64832.  after directing standard error to /dev/null.
  64833.  
  64834.  It seemed objectionable for a library routine to write messages to
  64835.  standard error, unless explicitly requested, so _w_o_r_d_e_x_p() is required to
  64836.  redirect standard error to /dev/null to ensure that no messages are
  64837.  generated, even for commands executed for command substitution.  The new
  64838.  WRDE_SHOWERR flag can be specified to request that error messages be
  64839.  written.
  64840.  
  64841.  The WRDE_REUSE flag allows the implementation to avoid the expense of
  64842.  freeing and reallocating memory, if that is possible.  A minimal
  64843.  implementation can just call _w_o_r_d_f_r_e_e() when WRDE_REUSE is set.
  64844.  
  64845.  END_RATIONALE
  64846.  
  64847.  
  64848.  
  64849.  
  64850.  
  64851.  
  64852.  
  64853.  
  64854.  
  64855.  
  64856.  
  64857.  
  64858.  
  64859.  
  64860.  
  64861.  
  64862.  
  64863.  
  64864.  
  64865.  
  64866.  
  64867.  
  64868.  
  64869.               Copyright (c) 1991 IEEE.  All rights reserved.
  64870.       This is an unapproved IEEE Standards Draft, subject to change.
  64871.  
  64872.  
  64873.  
  64874.  
  64875.  B.9 C Binding for Perform Word Expansions                             953
  64876.  
  64877.  
  64878.  
  64879.  
  64880.  
  64881.  
  64882.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  64883.  
  64884.  B.10  C Binding for Get POSIX Configurable Variables
  64885.  
  64886.  
  64887.  B.10.1  C Binding for Get String-Valued Configurable Variables
  64888.  
  64889.  Function:  _c_o_n_f_s_t_r()
  64890.  
  64891.  B.10.1.1  Synopsis
  64892.  
  64893.  #include <unistd.h>
  64894.  
  64895.  size_t confstr(int _n_a_m_e, char *_b_u_f, size_t _l_e_n);
  64896.  
  64897.  B.10.1.2  Description
  64898.  
  64899.  The _c_o_n_f_s_t_r() function provides a method for applications to get
  64900.  configuration-defined string values.  Its use and purpose are similar to
  64901.  the _s_y_s_c_o_n_f() function defined in POSIX.1 {8}, but it is used where
  64902.  string values rather than numeric values are returned.
  64903.  
  64904.  The _n_a_m_e argument represents the system variable to be queried.  The
  64905.  implementation shall support all of the _n_a_m_e values shown in Table B-18,
  64906.  which are defined in <unistd.h>.  It may support others.
  64907.  
  64908.  
  64909.                    Table B-18  -  confstr() _nnnn_aaaa_mmmm_eeee Values
  64910.  __________________________________________________________________________________________________________________________________________________
  64911.  _nnnn_aaaa_mmmm_eeee Value                           String returned by confstr()
  64912.  _________________________________________________________________________
  64913.  
  64914.  _CS_PATH                      A value for the PATH environment variable
  64915.                                that finds all standard utilities.
  64916.  __________________________________________________________________________________________________________________________________________________
  64917.  
  64918.  
  64919.  If _l_e_n is not zero, and if _n_a_m_e has a configuration-defined value,
  64920.  _c_o_n_f_s_t_r() shall copy that value into the _l_e_n-byte buffer pointed to by
  64921.  _b_u_f. If the string to be returned is longer than _l_e_n bytes, including the
  64922.  terminating null, then _c_o_n_f_s_t_r() shall truncate the string to _l_e_n-1 bytes
  64923.  and null-terminate the result.  The application can detect that the
  64924.  string was truncated by comparing the value returned by _c_o_n_f_s_t_r() with
  64925.  _l_e_n.
  64926.  
  64927.  If _l_e_n is zero and _b_u_f is NULL, then _c_o_n_f_s_t_r() still shall return the
  64928.  integer value as defined below, but shall not return a string.  If _l_e_n is
  64929.  zero but _b_u_f is not NULL, the result is unspecified.
  64930.  
  64931.  
  64932.  
  64933.  
  64934.  
  64935.               Copyright (c) 1991 IEEE.  All rights reserved.
  64936.       This is an unapproved IEEE Standards Draft, subject to change.
  64937.  
  64938.  
  64939.  
  64940.  
  64941.  954                                          B C Language Bindings Option
  64942.  
  64943.  
  64944.  
  64945.  
  64946.  
  64947.  
  64948.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  64949.  
  64950.  B.10.1.3  Returns
  64951.  
  64952.  If _n_a_m_e does not have a configuration-defined value, _c_o_n_f_s_t_r() shall
  64953.  return zero and leave _e_r_r_n_o unchanged.
  64954.  
  64955.  If _n_a_m_e has a configuration-defined value, the _c_o_n_f_s_t_r() function shall
  64956.  return the size of buffer that would be needed to hold the entire
  64957.  configuration-defined value.  If this return value is greater than _l_e_n,
  64958.  the string returned in _b_u_f has been truncated.
  64959.  
  64960.  B.10.1.4  Errors
  64961.  
  64962.  If any of the following conditions occur, _c_o_n_f_s_t_r() shall return zero and
  64963.  set _e_r_r_n_o to the corresponding value:
  64964.  
  64965.     [EINVAL]    The value of the _n_a_m_e argument is invalid.
  64966.  
  64967.  BEGIN_RATIONALE
  64968.  
  64969.  B.10.1.5  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  64970.  
  64971.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  64972.  
  64973.  An application can distinguish between an invalid _n_a_m_e parameter value
  64974.  and one that corresponds to a configurable variable that has no
  64975.  configuration-defined value by checking if _e_r_r_n_o has been modified.  This
  64976.  mirrors the behavior of _s_y_s_c_o_n_f() in POSIX.1 {8}.
  64977.  
  64978.  The original need for this function was to provide a way of finding the
  64979.  configuration-defined default value for the environment variable PATH.
  64980.  Since PATH can be modified by the user to include directories that could
  64981.  contain utilities replacing POSIX.2 standard utilities, applications need
  64982.  a way to determine the system-supplied PATH environment variable value
  64983.  that contains the correct search path for the POSIX.2 standard utilities.
  64984.  
  64985.  An application could use confstr(name,NULL,(size_t) 0) to find out how
  64986.  big a buffer is needed for the string value, _m_a_l_l_o_c() a buffer to hold
  64987.  the string, and call _c_o_n_f_s_t_r() again to get the string.  Alternately, it
  64988.  could allocate a fixed, static buffer that is big enough to hold most
  64989.  answers (512 bytes, maybe, or 1024), but then _m_a_l_l_o_c() a larger buffer if
  64990.  it finds that this is too small.
  64991.  
  64992.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  64993.  
  64994.  In Draft 7, these values and _s_y_s_c_o_n_f() values defined in POSIX.1 {8} were
  64995.  obtained using a function named _p_o_s_i_x_c_o_n_f().  However, that routine was
  64996.  dropped in favor of _c_s_y_s_c_o_n_f().  There did not seem to be any reason to
  64997.  provide the redundant interface to POSIX.1 {8} functions, nor to return
  64998.  values as strings when numeric values are really what are needed.
  64999.  
  65000.  
  65001.               Copyright (c) 1991 IEEE.  All rights reserved.
  65002.       This is an unapproved IEEE Standards Draft, subject to change.
  65003.  
  65004.  
  65005.  
  65006.  
  65007.  B.10 C Binding for Get POSIX Configurable Variables                   955
  65008.  
  65009.  
  65010.  
  65011.  
  65012.  
  65013.  
  65014.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  65015.  
  65016.  _c_s_y_s_c_o_n_f() could be extended to return strings for other related
  65017.  standards or features.
  65018.  
  65019.  In Draft 9, _c_s_y_s_c_o_n_f() has been replaced by _c_o_n_f_s_t_r().  The name was
  65020.  changed because too many people were confused by the name; they thought
  65021.  that the `c' referred to the C language, rather than characters (as
  65022.  distinct from integers).  The _c_o_n_f_s_t_r() function also copies the returned
  65023.  string into a buffer supplied by the application instead of returning a
  65024.  pointer to a string.  This allows a cleaner interface in some
  65025.  implementations (lightweight processes were mentioned), and resolves
  65026.  questions about when the application must copy the string returned.
  65027.  
  65028.  END_RATIONALE
  65029.  
  65030.  
  65031.  B.10.2  C Binding for Get Numeric-Valued Configurable Variables
  65032.  
  65033.  Functions:  _s_y_s_c_o_n_f(), _p_a_t_h_c_o_n_f(), _f_p_a_t_h_c_o_n_f()
  65034.  
  65035.  A system that supports the C Language Bindings Option shall support the C
  65036.  language bindings defined in POSIX.1 {8} for the _s_y_s_c_o_n_f(), _p_a_t_h_c_o_n_f(),
  65037.  and _f_p_a_t_h_c_o_n_f() functions.  Of the _n_a_m_e values defined in POSIX.1 {8},
  65038.  only those that correspond to numeric-valued configuration values listed
  65039.  in Table 7-1, are required by POSIX.2.  In addition, the _s_y_s_c_o_n_f()
  65040.  function shall support the _n_a_m_e values in Table B-19, defined in
  65041.  <unistd.h>, to provide values for values in 2.13.1.
  65042.  
  65043.  BEGIN_RATIONALE
  65044.  
  65045.  
  65046.  B.10.3  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  65047.  
  65048.  In Draft 9, the _n_a_m_e values corresponding to the _POSIX2_* symbolic
  65049.  limits were changed to more closely follow the convention used in
  65050.  POSIX.1 {8}.  In POSIX.1 {8}, for example, the _n_a_m_e value for
  65051.  {_POSIX_VERSION} is _SC_VERSION.  The POSIX.2 _n_a_m_e value for
  65052.  {_POSIX2_C_DEV} (actually, it was {_POSIX_C_DEV} in Draft 8) was
  65053.  _SC_POSIX_C_DEV, and is now _SC_2_C_DEV.
  65054.  
  65055.  If sysconf(_SC_2_VERSION) is not equal to the value of the
  65056.  {_POSIX2_VERSION} symbolic constant (see B.2.2), the utilities available
  65057.  via _s_y_s_t_e_m() or _p_o_p_e_n() might not behave as described in this standard.
  65058.  This would mean that the application is not running in an environment
  65059.  that conforms to POSIX.2.  Some applications might be able to deal with
  65060.  this, others might not.  However, the interfaces defined in Annex B shall
  65061.  continue to operate as specified, even if sysconf(_SC_2_VERSION) reports
  65062.  that the utilities no longer perform as specified.
  65063.  
  65064.  
  65065.  
  65066.  
  65067.               Copyright (c) 1991 IEEE.  All rights reserved.
  65068.       This is an unapproved IEEE Standards Draft, subject to change.
  65069.  
  65070.  
  65071.  
  65072.  
  65073.  956                                          B C Language Bindings Option
  65074.  
  65075.  
  65076.  
  65077.  
  65078.  
  65079.  
  65080.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  65081.  
  65082.  
  65083.     Table B-19  -  C Bindings for Numeric-Valued Configurable Variables
  65084.  __________________________________________________________________________________________________________________________________________________
  65085.                    Symbolic Limit          _n_a_m_e Value
  65086.                  _________________________________________
  65087.  
  65088.                  {BC_BASE_MAX}        _SC_BC_BASE_MAX
  65089.                  {BC_DIM_MAX}         _SC_BC_DIM_MAX
  65090.                  {BC_SCALE_MAX}       _SC_BC_SCALE_MAX
  65091.                  {BC_STRING_MAX}      _SC_BC_STRING_MAX
  65092.                  {COLL_WEIGHTS_MAX}   _SC_COLL_WEIGHTS_MAX
  65093.                  {EXPR_NEST_MAX}      _SC_EXPR_NEST_MAX
  65094.                  {LINE_MAX}           _SC_LINE_MAX
  65095.                  {RE_DUP_MAX}         _SC_RE_DUP_MAX
  65096.                  {POSIX2_VERSION}     _SC_2_VERSION
  65097.                  {POSIX2_C_DEV}       _SC_2_C_DEV
  65098.                  {POSIX2_FORT_DEV}    _SC_2_FORT_DEV
  65099.                  {POSIX2_FORT_RUN}    _SC_2_FORT_RUN
  65100.                  {POSIX2_LOCALEDEF}   _SC_2_LOCALEDEF
  65101.                  {POSIX2_SW_DEV}      _SC_2_SW_DEV
  65102.  __________________________________________________________________________________________________________________________________________________
  65103.  
  65104.  
  65105.  END_RATIONALE
  65106.  
  65107.  
  65108.  
  65109.  B.11  C Binding for Locale Control
  65110.  
  65111.  The C binding to the services described in 7.9 shall be the _s_e_t_l_o_c_a_l_e()
  65112.  function defined in POSIX.1 {8} 8.1.2.  In addition to the category
  65113.  values defined in POSIX.1 {8}, _s_e_t_l_o_c_a_l_e() shall also accept the value
  65114.  LC_MESSAGES, which shall be defined in <locale.h>.
  65115.  
  65116.  BEGIN_RATIONALE
  65117.  
  65118.  
  65119.  B.11.1  C Binding for Locale Control Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a
  65120.          _p_a_r_t _o_f _P_1_0_0_3._2)
  65121.  
  65122.  The order in which the various locale categories are processed by
  65123.  _s_e_t_l_o_c_a_l_e() is not specified by POSIX.1 {8}, so the place for LC_MESSAGES
  65124.  in that order is also unspecified.
  65125.  
  65126.  END_RATIONALE
  65127.  
  65128.  
  65129.  
  65130.  
  65131.  
  65132.  
  65133.               Copyright (c) 1991 IEEE.  All rights reserved.
  65134.       This is an unapproved IEEE Standards Draft, subject to change.
  65135.  
  65136.  
  65137.  
  65138.  
  65139.  B.11 C Binding for Locale Control                                     957
  65140.  
  65141.  
  65142.  
  65143.  
  65144.  
  65145.  
  65146.  
  65147.  
  65148.  
  65149.  
  65150.  
  65151.  
  65152.  
  65153.  
  65154.  
  65155.  
  65156.  
  65157.  
  65158.  
  65159.  
  65160.  
  65161.  
  65162.  
  65163.  
  65164.  
  65165.  
  65166.  
  65167.  
  65168.  
  65169.  
  65170.  
  65171.  
  65172.  
  65173.  
  65174.  
  65175.  
  65176.  
  65177.  
  65178.  
  65179.  
  65180.  
  65181.  
  65182.  
  65183.  
  65184.  
  65185.  
  65186.  
  65187.  
  65188.  
  65189.  
  65190.  
  65191.  
  65192.  
  65193.  
  65194.  
  65195.  
  65196.  
  65197.  
  65198.  
  65199.  
  65200.  
  65201.  
  65202.  
  65203.  
  65204.  
  65205.  
  65206.  
  65207.  
  65208.  
  65209.  
  65210.  
  65211.  
  65212.                                                              P1003.2/D11.2
  65213.  
  65214.  
  65215.  
  65216.  
  65217.  
  65218.  
  65219.                                   Annex C
  65220.                                 (normative)
  65221.              FORTRAN Development and Runtime Utilities Options
  65222.  
  65223.  
  65224.  
  65225.  
  65226.  This annex describes utilities used for the development of FORTRAN
  65227.  language applications, including compilation or translation of FORTRAN
  65228.  source code, and the execution of certain FORTRAN applications at
  65229.  runtime.
  65230.  
  65231.  The utilities described in this annex may be provided by the conforming
  65232.  system; however, any system claiming conformance to the FORTRAN
  65233.  Development Utilities Option shall provide the fort77 utility and any
  65234.  system claiming conformance to the FORTRAN Runtime Utilities Option shall
  65235.  provide the asa utility.
  65236.  
  65237.  BEGIN_RATIONALE
  65238.  
  65239.  
  65240.  C.0.1  FORTRAN Development and Runtime Utilities Options Rationale. (_T_h_i_s
  65241.         _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  65242.  
  65243.  This clause is included in this standard as a temporary measure to
  65244.  accommodate existing FORTRAN developers.  It is the intention of the
  65245.  POSIX.2 working group that this annex be moved from this standard to the
  65246.  emerging standard being developed by the POSIX.9 working group, which
  65247.  will specify FORTRAN-specific interfaces to the basic services provided
  65248.  by this standard and POSIX.1.  The movement of this annex should occur in
  65249.  a later version of this standard.
  65250.  
  65251.  See the rationale for asa for a description of the FORTRAN Runtime
  65252.  Utilities Option and why it was split off from the FORTRAN Development
  65253.  Utilities Option.
  65254.  
  65255.  END_RATIONALE
  65256.  
  65257.  
  65258.  
  65259.  
  65260.  
  65261.  
  65262.  
  65263.  
  65264.  
  65265.               Copyright (c) 1991 IEEE.  All rights reserved.
  65266.       This is an unapproved IEEE Standards Draft, subject to change.
  65267.  
  65268.  
  65269.  
  65270.  
  65271.  Annex C FORTRAN Development and Runtime Utilities Options             959
  65272.  
  65273.  
  65274.  
  65275.  
  65276.  
  65277.  
  65278.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  65279.  
  65280.  C.1  asa - Interpret carriage-control characters
  65281.  
  65282.  This utility is optional.  It shall be provided on systems that support
  65283.  the FORTRAN Runtime Utilities Option.
  65284.  
  65285.  
  65286.  C.1.1  Synopsis
  65287.  
  65288.  asa  [_f_i_l_e ...]
  65289.  
  65290.  
  65291.  C.1.2  Description
  65292.  
  65293.  The asa utility shall write its input files to standard output, mapping
  65294.  carriage-control characters from the text files to line-printer control
  65295.  sequences in an implementation-defined manner.
  65296.  
  65297.  The first character of every line shall be removed from the input, and
  65298.  the following actions shall be performed:
  65299.  
  65300.  If the character removed is:
  65301.  
  65302.     <space>     The rest of the line shall be output without change.
  65303.  
  65304.     0           A <newline> shall be output, then the rest of the input
  65305.                 line.
  65306.  
  65307.     1           One or more implementation-defined characters that causes
  65308.                 an advance to the next page shall be output, followed by
  65309.                 the rest of the input line.
  65310.  
  65311.     +           The <newline> of the previous line shall be replaced with
  65312.                 one or more implementation-defined characters that causes
  65313.                 printing to return to column position 1, followed by the
  65314.                 rest of the input line.  If the + is the first character
  65315.                 in the input, it shall have the same effect as <space>.
  65316.  
  65317.  The action of the asa utility is unspecified upon encountering any
  65318.  character other than those listed above as the first character in a line.
  65319.  
  65320.  
  65321.  C.1.3  Options
  65322.  
  65323.  None.
  65324.  
  65325.  
  65326.  
  65327.  
  65328.  
  65329.  
  65330.  
  65331.               Copyright (c) 1991 IEEE.  All rights reserved.
  65332.       This is an unapproved IEEE Standards Draft, subject to change.
  65333.  
  65334.  
  65335.  
  65336.  
  65337.  960                   C FORTRAN Development and Runtime Utilities Options
  65338.  
  65339.  
  65340.  
  65341.  
  65342.  
  65343.  
  65344.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  65345.  
  65346.  C.1.4  Operands
  65347.  
  65348.     _f_i_l_e        A pathname of a text file used for input.  If no _f_i_l_e
  65349.                 operands are specified, the standard input shall be used.
  65350.  
  65351.  
  65352.  C.1.5  External Influences
  65353.  
  65354.  C.1.5.1  Standard Input
  65355.  
  65356.  The standard input shall be used only if no _f_i_l_e operands are specified.
  65357.  See Input Files.
  65358.  
  65359.  C.1.5.2  Input Files
  65360.  
  65361.  The input files shall be text files.
  65362.  
  65363.  C.1.5.3  Environment Variables
  65364.  
  65365.  The following environment variables shall affect the execution of asa:
  65366.  
  65367.     LANG               This variable shall determine the locale to use for
  65368.                        the locale categories when both LC_ALL and the
  65369.                        corresponding environment variable (beginning with
  65370.                        LC_) do not specify a locale.  See 2.6.
  65371.  
  65372.     LC_ALL             This variable shall determine the locale to be used
  65373.                        to override any values for locale categories
  65374.                        specified by the settings of LANG or any
  65375.                        environment variables beginning with LC_.
  65376.  
  65377.     LC_CTYPE           This variable shall determine the locale for the
  65378.                        interpretation of sequences of bytes of text data
  65379.                        as characters (e.g., single- versus multibyte
  65380.                        characters in arguments and input files).
  65381.  
  65382.     LC_MESSAGES        This variable shall determine the language in which
  65383.                        messages should be written.
  65384.  
  65385.  C.1.5.4  Asynchronous Events
  65386.  
  65387.  Default.
  65388.  
  65389.  
  65390.  
  65391.  
  65392.  
  65393.  
  65394.  
  65395.  
  65396.  
  65397.               Copyright (c) 1991 IEEE.  All rights reserved.
  65398.       This is an unapproved IEEE Standards Draft, subject to change.
  65399.  
  65400.  
  65401.  
  65402.  
  65403.  C.1 asa - Interpret carriage-control characters                       961
  65404.  
  65405.  
  65406.  
  65407.  
  65408.  
  65409.  
  65410.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  65411.  
  65412.  C.1.6  External Effects
  65413.  
  65414.  C.1.6.1  Standard Output
  65415.  
  65416.  The standard output shall be the text from the input file modified as
  65417.  described in C.1.2.
  65418.  
  65419.  C.1.6.2  Standard Error
  65420.  
  65421.  None.
  65422.  
  65423.  C.1.6.3  Output Files
  65424.  
  65425.  None.
  65426.  
  65427.  
  65428.  C.1.7  Extended Description
  65429.  
  65430.  None.
  65431.  
  65432.  
  65433.  C.1.8  Exit Status
  65434.  
  65435.  The asa utility shall exit with one of the following values:
  65436.  
  65437.      0    All input files were output successfully.
  65438.  
  65439.     >0    An error occurred.
  65440.  
  65441.  
  65442.  C.1.9  Consequences of Errors
  65443.  
  65444.  Default.
  65445.  
  65446.  BEGIN_RATIONALE
  65447.  
  65448.  
  65449.  C.1.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  65450.  
  65451.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  65452.  
  65453.  The asa utility is needed to map ``standard'' FORTRAN 77 output into a
  65454.  form acceptable to contemporary printers.  Usually asa is used to pipe
  65455.  data to the lp utility (see lp in 4.38.)
  65456.  
  65457.  The following command:
  65458.  
  65459.        asa file
  65460.  
  65461.  
  65462.  
  65463.               Copyright (c) 1991 IEEE.  All rights reserved.
  65464.       This is an unapproved IEEE Standards Draft, subject to change.
  65465.  
  65466.  
  65467.  
  65468.  
  65469.  962                   C FORTRAN Development and Runtime Utilities Options
  65470.  
  65471.  
  65472.  
  65473.  
  65474.  
  65475.  
  65476.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  65477.  
  65478.  permits the viewing of file (created by a program using FORTRAN-style
  65479.  carriage control characters) on a terminal.
  65480.  
  65481.  The following command:
  65482.  
  65483.        a.out | asa | lp
  65484.  
  65485.  formats the FORTRAN output of a.out and directs it to the printer.
  65486.  
  65487.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  65488.  
  65489.  This utility is generally used only by FORTRAN programs.  It was moved to
  65490.  this annex in response to multiple ballot objections requesting its
  65491.  removal.  The working group decided to retain asa to avoid breaking the
  65492.  existing large base of FORTRAN applications that put carriage control
  65493.  characters in their output files.  This is a compromise position to
  65494.  achieve balloting acceptance:  the overhead of maintaining a separate
  65495.  option in POSIX.2 for just this one utility is seen to be small in
  65496.  comparison to the benefit achieved for FORTRAN applications.  Since it is
  65497.  a separate option, there is no requirement that a system have a FORTRAN
  65498.  compiler in order to run applications that need asa.
  65499.  
  65500.  Historical implementations have used an ASCII <form-feed> character in
  65501.  response to a '1', and an ASCII <carriage-return> in response to a '+'.
  65502.  It is suggested that implementations treat characters other than '0',
  65503.  '1', and '+' as <space> in the absence of any compelling reason to do
  65504.  otherwise.  However, the action is listed here as ``unspecified,''
  65505.  permitting an implementation to provide extensions to access fast
  65506.  multiple line slewing and channel seeking in a nonportable manner.
  65507.  
  65508.  END_RATIONALE
  65509.  
  65510.  
  65511.  
  65512.  
  65513.  
  65514.  
  65515.  
  65516.  
  65517.  
  65518.  
  65519.  
  65520.  
  65521.  
  65522.  
  65523.  
  65524.  
  65525.  
  65526.  
  65527.  
  65528.  
  65529.               Copyright (c) 1991 IEEE.  All rights reserved.
  65530.       This is an unapproved IEEE Standards Draft, subject to change.
  65531.  
  65532.  
  65533.  
  65534.  
  65535.  C.1 asa - Interpret carriage-control characters                       963
  65536.  
  65537.  
  65538.  
  65539.  
  65540.  
  65541.  
  65542.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  65543.  
  65544.  C.2  fort77 - FORTRAN compiler
  65545.  
  65546.  This utility is optional.  It shall be provided on systems that support
  65547.  the FORTRAN Development Utilities Option.
  65548.  
  65549.  
  65550.  C.2.1  Synopsis
  65551.  
  65552.  fort77  [-c] [-g] [-L _d_i_r_e_c_t_o_r_y] ...  [-O _o_p_t_l_e_v_e_l] [-o _o_u_t_f_i_l_e] [-s]
  65553.          [-w] _o_p_e_r_a_n_d ...
  65554.  
  65555.  
  65556.  C.2.2  Description
  65557.  
  65558.  The fort77 utility is the interface to the FORTRAN compilation system; it
  65559.  shall accept the full FORTRAN language defined by ISO 1539 {2}.  The
  65560.  system conceptually consists of a compiler and link editor.  The files
  65561.  referenced by _o_p_e_r_a_n_ds are compiled and linked to produce an executable
  65562.  file.  (It is unspecified whether the linking occurs entirely within the
  65563.  operation of fort77; some systems may produce objects that are not fully
  65564.  resolved until the file is executed.)
  65565.  
  65566.  If the -c option is present, for all pathname operands of the form
  65567.  _f_i_l_e.f, the files
  65568.  
  65569.        $(basename _p_a_t_h_n_a_m_e ._f)._o
  65570.  
  65571.  shall be created or overwritten as the result of successful compilation.
  65572.  If the -c option is not specified, it is unspecified whether such .o
  65573.  files are created or deleted for the _f_i_l_e.f operands.
  65574.  
  65575.  If there are no options that prevent link editing (such as -c) and all
  65576.  operands compile and link without error, the resulting executable file
  65577.  shall be written into the file named by the -o option (if present) or to
  65578.  the file a.out.  The executable file shall be created as specified in
  65579.  2.9.1.4, except that the file permissions shall be set to
  65580.  
  65581.        S_IRWXO | S_IRWXG | S_IRWXU
  65582.  
  65583.  (see POSIX.1 {8} 5.6.1.2) and that the bits specified by the _u_m_a_s_k of the
  65584.  process shall be cleared.
  65585.  
  65586.  
  65587.  C.2.3  Options
  65588.  
  65589.  The fort77 utility shall conform to the utility argument syntax
  65590.  guidelines described in 2.10.2, except that:
  65591.  
  65592.  
  65593.  
  65594.  
  65595.               Copyright (c) 1991 IEEE.  All rights reserved.
  65596.       This is an unapproved IEEE Standards Draft, subject to change.
  65597.  
  65598.  
  65599.  
  65600.  
  65601.  964                   C FORTRAN Development and Runtime Utilities Options
  65602.  
  65603.  
  65604.  
  65605.  
  65606.  
  65607.  
  65608.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  65609.  
  65610.      - The -l _l_i_b_r_a_r_y operands have the format of options, but their
  65611.        position within a list of operands affects the order in which
  65612.        libraries are searched.
  65613.  
  65614.      - The order of specifying the multiple -L options is significant.
  65615.  
  65616.      - Conforming applications shall specify each option separately; that
  65617.        is, grouping option letters (e.g., -cg) need not be recognized by
  65618.        all implementations.
  65619.  
  65620.  The following options shall be supported by the implementation:
  65621.  
  65622.     -c          Suppress the link-edit phase of the compilation, and do
  65623.                 not remove any object files that are produced.
  65624.  
  65625.     -g          Produce symbolic information in the object or executable
  65626.                 files; the nature of this information is unspecified, and
  65627.                 may be modified by implementation-defined interactions
  65628.                 with other options.
  65629.  
  65630.     -s          Produce object and/or executable files from which symbolic
  65631.                 and other information not required for proper execution
  65632.                 using the POSIX.1 {8} _e_x_e_c family has been removed
  65633.                 (stripped).  If both -g and -s options are present, the
  65634.                 action taken is unspecified.
  65635.  
  65636.     -o _o_u_t_f_i_l_e  Use the pathname _o_u_t_f_i_l_e, instead of the default a.out,
  65637.                 for the executable file produced.  If the -o option is
  65638.                 present with -c, the result is unspecified.
  65639.  
  65640.     -L _d_i_r_e_c_t_o_r_y
  65641.                 Change the algorithm of searching for the libraries named
  65642.                 in -l operands to look in the directory named by the
  65643.                 _d_i_r_e_c_t_o_r_y pathname before looking in the usual places.
  65644.                 Directories named in -L options shall be searched in the
  65645.                 specified order.  Implementations shall support at least
  65646.                 ten instances of this option in a single fort77 command
  65647.                 invocation.  If a directory specified by a -L option
  65648.                 contains a file named libf.a, the results are unspecified.
  65649.  
  65650.     -O _o_p_t_l_e_v_e_l Specify the level of code optimization.  If the _o_p_t_l_e_v_e_l
  65651.                 option-argument is the digit 0, all special code
  65652.                 optimizations shall be disabled.  If it is the digit 1,
  65653.                 the nature of the optimization is unspecified.  If the -O
  65654.                 option is omitted, the nature of the system's default
  65655.                 optimization is unspecified.  It is unspecified whether
  65656.                 code generated in the presence of the -O 0 option is the
  65657.                 same as that generated when -O is omitted.  Other _o_p_t_l_e_v_e_l
  65658.                 values may be supported.
  65659.  
  65660.  
  65661.               Copyright (c) 1991 IEEE.  All rights reserved.
  65662.       This is an unapproved IEEE Standards Draft, subject to change.
  65663.  
  65664.  
  65665.  
  65666.  
  65667.  C.2 fort77 - FORTRAN compiler                                         965
  65668.  
  65669.  
  65670.  
  65671.  
  65672.  
  65673.  
  65674.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  65675.  
  65676.     -w          Suppress warnings.
  65677.  
  65678.  Multiple instances of -L options can be specified.
  65679.  
  65680.  
  65681.  C.2.4  Operands
  65682.  
  65683.  An _o_p_e_r_a_n_d is either in the form of a pathname or the form -l _l_i_b_r_a_r_y.
  65684.  At least one operand of the pathname form shall be specified.  The
  65685.  following operands shall be supported by the implementation:
  65686.  
  65687.     _f_i_l_e._f      The pathname of a FORTRAN source file to be compiled and
  65688.                 optionally passed to the link editor.  The file name
  65689.                 operand shall be of this form if the -c option is used.
  65690.  
  65691.     _f_i_l_e._a      A library of object files typically produced by ar (see
  65692.                 6.1), and passed directly to the link editor.
  65693.                 Implementations may recognize implementation-defined
  65694.                 suffixes other than .a as denoting object file libraries.
  65695.  
  65696.     _f_i_l_e._o      An object file produced by fort77 -c, and passed directly
  65697.                 to the link editor.  Implementations may recognize
  65698.                 implementation-defined suffixes other than .o as denoting
  65699.                 object files.
  65700.  
  65701.  The processing of other files is implementation defined.
  65702.  
  65703.     -l _l_i_b_r_a_r_y  (The letter ell.)  Search the library named:
  65704.  
  65705.                       lib_l_i_b_r_a_r_y._a
  65706.  
  65707.                 A library is searched when its name is encountered, so the
  65708.                 placement of a -l operand is significant.  Several
  65709.                 standard libraries can be specified in this manner, as
  65710.                 described in C.2.7.  Implementations may recognize
  65711.                 implementation-defined suffixes other than .a as denoting
  65712.                 libraries.
  65713.  
  65714.  
  65715.  C.2.5  External Influences
  65716.  
  65717.  C.2.5.1  Standard Input
  65718.  
  65719.  None.
  65720.  
  65721.  
  65722.  
  65723.  
  65724.  
  65725.  
  65726.  
  65727.               Copyright (c) 1991 IEEE.  All rights reserved.
  65728.       This is an unapproved IEEE Standards Draft, subject to change.
  65729.  
  65730.  
  65731.  
  65732.  
  65733.  966                   C FORTRAN Development and Runtime Utilities Options
  65734.  
  65735.  
  65736.  
  65737.  
  65738.  
  65739.  
  65740.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  65741.  
  65742.  C.2.5.2  Input Files
  65743.  
  65744.  The input file shall be one of the following:  a text file containing
  65745.  FORTRAN source code; an object file in the format produced by fort77 -c;
  65746.  or a library of object files, in the format produced by archiving zero or
  65747.  more object files, using ar.  Implementations may supply additional
  65748.  utilities that produce files in these formats.  Additional input files
  65749.  are implementation defined.
  65750.  
  65751.  A <tab> character encountered within the first six characters on a line
  65752.  of source code shall cause the compiler to interpret the following
  65753.  character as if it were the seventh character on the line (i.e., in
  65754.  column 7).
  65755.  
  65756.  C.2.5.3  Environment Variables
  65757.  
  65758.  The following environment variables shall affect the execution of fort77:
  65759.  
  65760.     LANG               This variable shall determine the locale to use for
  65761.                        the locale categories when both LC_ALL and the
  65762.                        corresponding environment variable (beginning with
  65763.                        LC_) do not specify a locale.  See 2.6.
  65764.  
  65765.     LC_ALL             This variable shall determine the locale to be used
  65766.                        to override any values for locale categories
  65767.                        specified by the settings of LANG or any
  65768.                        environment variables beginning with LC_.
  65769.  
  65770.     LC_CTYPE           This variable shall determine the locale for the
  65771.                        interpretation of sequences of bytes of text data
  65772.                        as characters (e.g., single- versus multibyte
  65773.                        characters in arguments and input files).
  65774.  
  65775.     LC_MESSAGES        This variable shall determine the language in which
  65776.                        messages should be written.
  65777.  
  65778.     TMPDIR             This variable shall be interpreted as a pathname
  65779.                        that should override the default directory for
  65780.                        temporary files, if any.
  65781.  
  65782.  C.2.5.4  Asynchronous Events
  65783.  
  65784.  Default.
  65785.  
  65786.  
  65787.  
  65788.  
  65789.  
  65790.  
  65791.  
  65792.  
  65793.               Copyright (c) 1991 IEEE.  All rights reserved.
  65794.       This is an unapproved IEEE Standards Draft, subject to change.
  65795.  
  65796.  
  65797.  
  65798.  
  65799.  C.2 fort77 - FORTRAN compiler                                         967
  65800.  
  65801.  
  65802.  
  65803.  
  65804.  
  65805.  
  65806.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  65807.  
  65808.  C.2.6  External Effects
  65809.  
  65810.  C.2.6.1  Standard Output
  65811.  
  65812.  None.
  65813.  
  65814.  C.2.6.2  Standard Error
  65815.  
  65816.  Used only for diagnostic messages.  If more than one file operand ending
  65817.  in .f (or possibly other unspecified suffixes) is given, for each such
  65818.  file:
  65819.  
  65820.        "%s:\n", <_f_i_l_e>
  65821.  
  65822.  may be written to allow identification of the diagnostic message with the
  65823.  appropriate input file.
  65824.  
  65825.  This utility may produce warning messages about certain conditions that
  65826.  do not warrant returning an error (nonzero) exit value.
  65827.  
  65828.  C.2.6.3  Output Files
  65829.  
  65830.  Object files, listing files, and/or executable files shall be produced in
  65831.  unspecified formats.
  65832.  
  65833.  
  65834.  C.2.7  Extended Description
  65835.  
  65836.  C.2.7.1  Standard Libraries
  65837.  
  65838.  The fort77 utility shall recognize the following -l operand for the
  65839.  standard library:
  65840.  
  65841.     -l f        This library contains all library functions referenced in
  65842.                 ISO 1539 {2}.  An implementation shall not require this
  65843.                 operand to be present to cause a search of this library.
  65844.  
  65845.  In the absence of options that inhibit invocation of the link editor,
  65846.  such as -c, the fort77 utility shall cause the equivalent of a -l f
  65847.  operand to be passed to the link editor as the last -l operand, causing
  65848.  it to be searched after all other object files and libraries are loaded.
  65849.  
  65850.  It is unspecified whether the library libf.a exists as a regular file.
  65851.  The implementation may accept as -l operands names of objects that do not
  65852.  exist as regular files.
  65853.  
  65854.  
  65855.  
  65856.  
  65857.  
  65858.  
  65859.               Copyright (c) 1991 IEEE.  All rights reserved.
  65860.       This is an unapproved IEEE Standards Draft, subject to change.
  65861.  
  65862.  
  65863.  
  65864.  
  65865.  968                   C FORTRAN Development and Runtime Utilities Options
  65866.  
  65867.  
  65868.  
  65869.  
  65870.  
  65871.  
  65872.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  65873.  
  65874.  C.2.7.2  External Symbols
  65875.  
  65876.  The FORTRAN compiler and link editor shall support the significance of     1
  65877.  external symbols up to a length of at least 31 bytes.  The compiler may    1
  65878.  fold case (i.e., may ignore uppercase/lowercase distinctions between       1
  65879.  identifiers).  The action taken upon encountering symbols exceeding the    1
  65880.  implementation-defined maximum symbol length is unspecified.
  65881.  
  65882.  The compiler and link editor shall support a minimum of 511 external
  65883.  symbols per source or object file, and a minimum of 4095 external symbols
  65884.  total.  A diagnostic message is written to standard output if the
  65885.  implementation-defined limit is exceeded; other actions are unspecified.
  65886.  
  65887.  
  65888.  C.2.8  Exit Status
  65889.  
  65890.  The fort77 utility shall exit with one of the following values:
  65891.  
  65892.      0    Successful compilation or link edit.
  65893.  
  65894.     >0    An error occurred.
  65895.  
  65896.  
  65897.  C.2.9  Consequences of Errors
  65898.  
  65899.  When fort77 encounters a compilation error, it shall write a diagnostic
  65900.  to standard error and continue to compile other source code operands.  It
  65901.  shall return a nonzero exit status, but it is implementation defined
  65902.  whether an object module is created.  If the link edit is unsuccessful, a
  65903.  diagnostic message shall be written to standard error, and fort77 shall
  65904.  exit with a nonzero status.
  65905.  
  65906.  BEGIN_RATIONALE
  65907.  
  65908.  
  65909.  C.2.10  Rationale. (_T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _n_o_t _a _p_a_r_t _o_f _P_1_0_0_3._2)
  65910.  
  65911.  _E_x_a_m_p_l_e_s_,__U_s_a_g_e
  65912.  
  65913.  The following are examples of usage:
  65914.  
  65915.     fort77 -o foo xyz.f      Compiles xyz.f and creates the executable
  65916.                              foo.
  65917.  
  65918.     fort77 -c xyz.f          Compiles xyz.f and creates the object file
  65919.                              xyz.o.
  65920.  
  65921.     fort77 xyz.f             Compiles xyz.f and creates the executable
  65922.                              a.out.
  65923.  
  65924.  
  65925.               Copyright (c) 1991 IEEE.  All rights reserved.
  65926.       This is an unapproved IEEE Standards Draft, subject to change.
  65927.  
  65928.  
  65929.  
  65930.  
  65931.  C.2 fort77 - FORTRAN compiler                                         969
  65932.  
  65933.  
  65934.  
  65935.  
  65936.  
  65937.  
  65938.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  65939.  
  65940.     fort77 xyz.f b.o         Compiles xyz.f, links it with b.o, and
  65941.                              creates the executable a.out.
  65942.  
  65943.  _H_i_s_t_o_r_y__o_f__D_e_c_i_s_i_o_n_s__M_a_d_e
  65944.  
  65945.  The file inclusion and symbol definition (#define) mechanisms used by the
  65946.  c89 utility were not included in POSIX.2--even though they are commonly
  65947.  implemented--since there is no requirement that the FORTRAN compiler use
  65948.  the C preprocessor.
  65949.  
  65950.  The -onetrip option was not included in this specification, even though
  65951.  many historical compilers support it, because it is a relic from
  65952.  FORTRAN-66; it is an anachronism that should not be perpetuated.
  65953.  
  65954.  Some implementations produce compilation listings.  This aspect of
  65955.  FORTRAN has been left unspecified because there was opposition within the
  65956.  balloting group to the various methods proposed for implementing it:  a
  65957.  -V option overlapped with historical vendor practice and a naming
  65958.  convention of creating files with .l suffixes collided with historical
  65959.  lex file naming practice.
  65960.  
  65961.  There is no -I option in this version of POSIX.2 to specify a directory
  65962.  for file inclusion.  An INCLUDE directive has been a part of the
  65963.  FORTRAN-8X discussions, but it is not clear whether it will be retained.
  65964.  
  65965.  It is noted that many FORTRAN compilers produce an object module even
  65966.  when compilation errors occur; during a subsequent compilation, the
  65967.  compiler may patch the object module rather than recompiling all the
  65968.  code.  Consequently, it is left to the implementor whether or not an
  65969.  object file is created.
  65970.  
  65971.  The name of this utility was changed to fort77 in Draft 9 to parallel the
  65972.  renaming of the C compiler.  The name f77 was not chosen to avoid
  65973.  collision with historical implementations.
  65974.  
  65975.  A reference to MIL-STD-1753 was removed from an earlier draft in response
  65976.  to a request from the POSIX.9 working group.  It was not the intention of
  65977.  this document to require certification of the FORTRAN compiler and the
  65978.  forthcoming POSIX.9 standard does not specify the military standard or
  65979.  any special preprocessing requirements.  Furthermore, use of that
  65980.  document would have been inappropriate for an international standard.
  65981.  
  65982.  The specification of optimization has been subject to changes through
  65983.  early drafts.  At one time, -O and -N were Booleans:  optimize and do not
  65984.  optimize (with an unspecified default).  Some historical practice lead
  65985.  this to be changed to:
  65986.  
  65987.     -O 0     No optimization.
  65988.  
  65989.  
  65990.  
  65991.               Copyright (c) 1991 IEEE.  All rights reserved.
  65992.       This is an unapproved IEEE Standards Draft, subject to change.
  65993.  
  65994.  
  65995.  
  65996.  
  65997.  970                   C FORTRAN Development and Runtime Utilities Options
  65998.  
  65999.  
  66000.  
  66001.  
  66002.  
  66003.  
  66004.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  66005.  
  66006.     -O 1     Some level of optimization.
  66007.  
  66008.     -O _n     Other, unspecified levels of optimization.
  66009.  
  66010.  It is not always clear whether ``good code generation'' is the same thing
  66011.  as optimization.  Simple optimizations of local actions do not usually
  66012.  affect the semantics of a program.  The -O 0 option has been included to
  66013.  accommodate the very fussy nature of scientific calculations in a highly
  66014.  optimized environment; compilers make errors.  Some degree of
  66015.  optimization is expected, even if it is not documented here, and the
  66016.  ability to shut it off completely could be important when porting an
  66017.  application.  An implementation may treat -O 0 as ``do less than normal''
  66018.  if it wishes, but this is only meaningful if any of the operations it
  66019.  performs can affect the semantics of a program.  It is highly dependent
  66020.  on the implementation whether doing less than normal makes sense.  It is
  66021.  not the intent of this to ask for sloppy code generation, but rather to
  66022.  assure that any semantically visible optimization is suppressed.
  66023.  
  66024.  The specification of standard library access is consistent with the C
  66025.  compiler specification.  Implementations are not required to have
  66026.  /usr/lib/libf.a, as many historical implementations do, but if not they
  66027.  are required to recognize 'f' as a token.
  66028.  
  66029.  External symbol size limits are in a normative subclause; portable
  66030.  applications need to know these limits.  However, the minimum maximum
  66031.  symbol length should be taken as a constraint on a portable application,
  66032.  not on an implementation, and consequently the action taken for a symbol
  66033.  exceeding the limit is unspecified.  The minimum size for the external
  66034.  symbol table was added for similar reasons.
  66035.  
  66036.  The Consequences of Errors subclause clearly specifies the compiler's
  66037.  behavior when compilation or link-edit error occur.  The behavior of
  66038.  several historical implementations was examined, and the choice was made
  66039.  to be silent on the status of the executable, or a.out, file in the face
  66040.  of compiler or linker errors.  If a linker writes the executable file,
  66041.  then links it on disk with _l_s_e_e_k()s and _w_r_i_t_e()s, the partially-linked
  66042.  executable can be left on disk and its execute bits turned off if the
  66043.  link edit fails.  However, if the linker links the image in memory before
  66044.  writing the file to disk, it need not touch the executable file (if it
  66045.  already exists) because the link edit fails.  Since both approaches are
  66046.  existing practice, a portable application shall rely on the exit status
  66047.  of fort77, rather than on the existence or mode of the executable file.
  66048.  
  66049.  The -g and -s options are not specified as mutually exclusive.
  66050.  Historically these two options have been mutually exclusive, but because
  66051.  both are so loosely specified, it seemed cleaner to leave their
  66052.  interaction unspecified.
  66053.  
  66054.  
  66055.  
  66056.  
  66057.               Copyright (c) 1991 IEEE.  All rights reserved.
  66058.       This is an unapproved IEEE Standards Draft, subject to change.
  66059.  
  66060.  
  66061.  
  66062.  
  66063.  C.2 fort77 - FORTRAN compiler                                         971
  66064.  
  66065.  
  66066.  
  66067.  
  66068.  
  66069.  
  66070.  P1003.2/D11.2
  66071.  
  66072.  The requirement that portable applications specify compiler options
  66073.  separately is to reserve the multicharacter option namespace for vendor-
  66074.  specific compiler options, which are known to exist in many historical
  66075.  implementations.  Implementations are not required to recognize, for
  66076.  example, -gc as if it were -g -c; nor are they forbidden from doing so.
  66077.  The synopsis shows all of the options separately to highlight this
  66078.  requirement on applications.
  66079.  
  66080.  Echoing filenames to standard error is considered a diagnostic message,
  66081.  because it would otherwise difficult to associate an error message with
  66082.  the erring file.  They are describing with ``may'' to allow
  66083.  implementations to use other methods of identifying files and to parallel
  66084.  the description in c89.
  66085.  
  66086.  END_RATIONALE
  66087.  
  66088.  
  66089.  
  66090.  
  66091.  
  66092.  
  66093.  
  66094.  
  66095.  
  66096.  
  66097.  
  66098.  
  66099.  
  66100.  
  66101.  
  66102.  
  66103.  
  66104.  
  66105.  
  66106.  
  66107.  
  66108.  
  66109.  
  66110.  
  66111.  
  66112.  
  66113.  
  66114.  
  66115.  
  66116.  
  66117.  
  66118.  
  66119.  
  66120.  
  66121.  
  66122.  
  66123.               Copyright (c) 1991 IEEE.  All rights reserved.
  66124.       This is an unapproved IEEE Standards Draft, subject to change.
  66125.  
  66126.  
  66127.  
  66128.  
  66129.  972                   C FORTRAN Development and Runtime Utilities Options
  66130.  
  66131.  
  66132.  
  66133.  
  66134.  
  66135.  
  66136.                                                              P1003.2/D11.2
  66137.  
  66138.  
  66139.  
  66140.  
  66141.  
  66142.  
  66143.                                   Annex D
  66144.                                (informative)
  66145.  
  66146.                                Bibliography
  66147.  
  66148.  
  66149.  
  66150.  
  66151.  BEGIN_RATIONALE
  66152.  
  66153.  BEGIN_RATIONALE
  66154.  
  66155.  {B1}  ISO 639: 1988, _C_o_d_e _f_o_r _t_h_e _r_e_p_r_e_s_e_n_t_a_t_i_o_n _o_f _n_a_m_e_s _o_f _l_a_n_g_u_a_g_e_s.1)
  66156.  
  66157.  {B2}  ISO 2022: 1986, _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g--_I_S_O _7-_b_i_t _a_n_d _8-_b_i_t _c_o_d_e_d
  66158.        _c_h_a_r_a_c_t_e_r _s_e_t_s--_C_o_d_e _e_x_t_e_n_s_i_o_n _t_e_c_h_n_i_q_u_e_s.
  66159.  
  66160.  {B3}  ISO 2047: 1975, _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g--_G_r_a_p_h_i_c_a_l _r_e_p_r_e_s_e_n_t_a_t_i_o_n_s
  66161.        _f_o_r _t_h_e _c_o_n_t_r_o_l _c_h_a_r_a_c_t_e_r_s _o_f _t_h_e _7-_b_i_t _c_o_d_e_d _c_h_a_r_a_c_t_e_r _s_e_t.
  66162.  
  66163.  {B4}  ISO 3166: 1988, _C_o_d_e _f_o_r _t_h_e _r_e_p_r_e_s_e_n_t_a_t_i_o_n _o_f _n_a_m_e_s _o_f _c_o_u_n_t_r_i_e_s.
  66164.  
  66165.  {B5}  ISO 6429: 1988, _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g--_C_o_n_t_r_o_l _f_u_n_c_t_i_o_n_s _f_o_r _7-_b_i_t
  66166.        _a_n_d _8-_b_i_t _c_o_d_e_d _c_h_a_r_a_c_t_e_r _s_e_t_s.
  66167.  
  66168.  {B6}  ISO 6937-2: 1983, _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g--_C_o_d_e_d _c_h_a_r_a_c_t_e_r _s_e_t_s _f_o_r
  66169.        _t_e_x_t _c_o_m_m_u_n_i_c_a_t_i_o_n--_P_a_r_t _2:  _L_a_t_i_n _a_l_p_h_a_b_e_t_i_c _a_n_d _n_o_n-_a_l_p_h_a_b_e_t_i_c
  66170.        _g_r_a_p_h_i_c _c_h_a_r_a_c_t_e_r_s.
  66171.  
  66172.  {B7}  ISO 8802-3: 1989, _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g _s_y_s_t_e_m_s--_L_o_c_a_l _a_r_e_a
  66173.        _n_e_t_w_o_r_k_s--_P_a_r_t _3:  _C_a_r_r_i_e_r _s_e_n_s_e _m_u_l_t_i_p_l_e _a_c_c_e_s_s _w_i_t_h _c_o_l_l_i_s_i_o_n
  66174.        _d_e_t_e_c_t_i_o_n (_C_S_M_A/_C_D) _a_c_c_e_s_s _m_e_t_h_o_d _a_n_d _p_h_y_s_i_c_a_l _l_a_y_e_r _s_p_e_c_i_f_i_c_a_t_i_o_n.
  66175.  
  66176.  {B8}  ISO 8806: 1988, _D_a_t_a _e_l_e_m_e_n_t_s _a_n_d _i_n_t_e_r_c_h_a_n_g_e _f_o_r_m_a_t_s--_I_n_f_o_r_m_a_t_i_o_n
  66177.        _i_n_t_e_r_c_h_a_n_g_e --_R_e_p_r_e_s_e_n_t_a_t_i_o_n _o_f _d_a_t_e_s _a_n_d _t_i_m_e_s.
  66178.  
  66179.  {B9}  ISO 8859, _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g--_8-_b_i_t _s_i_n_g_l_e-_b_y_t_e _c_o_d_e_d _g_r_a_p_h_i_c
  66180.        _c_h_a_r_a_c_t_e_r _s_e_t_s.  (Parts 1 to 8 published.)
  66181.  
  66182.  
  66183.  __________
  66184.   1) ISO documents can be obtained from the ISO office, 1, rue de Varembe',
  66185.      Case Postale 56, CH-1211, Gene`ve 20, Switzerland/Suisse.
  66186.  
  66187.  
  66188.  
  66189.                Copyright c 1991 IEEE.  All rights reserved.
  66190.       This is an unapproved IEEE Standards Draft, subject to change.
  66191.  
  66192.  
  66193.  
  66194.  
  66195.  
  66196.  Annex D Bibliography                                                  973
  66197.  
  66198.  
  66199.  
  66200.  
  66201.  
  66202.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  66203.  
  66204.  {B10} ISO/IEC 10367: ...,2) _I_n_f_o_r_m_a_t_i_o_n _p_r_o_c_e_s_s_i_n_g--_R_e_p_e_r_t_o_i_r_e _o_f
  66205.        _s_t_a_n_d_a_r_d_i_z_e_d _c_o_d_e_d _g_r_a_p_h_i_c _c_h_a_r_a_c_t_e_r _s_e_t_s _f_o_r _u_s_e _i_n _8-_b_i_t _c_o_d_e_s.
  66206.  
  66207.  {B11} ISO/IEC 10646: ...,3) _I_n_f_o_r_m_a_t_i_o_n _t_e_c_h_n_o_l_o_g_y--_U_n_i_v_e_r_s_a_l _C_o_d_e_d
  66208.        _C_h_a_r_a_c_t_e_r _S_e_t (_U_C_S).
  66209.  
  66210.  {B12} International Organization for Standardization/Association
  66211.        Franc,aise de Normalisation.  _D_i_c_t_i_o_n_a_r_y _o_f _C_o_m_p_u_t_e_r
  66212.        _S_c_i_e_n_c_e/_D_i_c_t_i_o_n_n_a_i_r_e _d_e _L'_I_n_f_o_r_m_a_t_i_q_u_e.  Geneva/Paris:  ISO/AFNOR,
  66213.        1989.
  66214.  
  66215.  {B13} ANSI X3.43-1986,4) _R_e_p_r_e_s_e_n_t_a_t_i_o_n_s _f_o_r _L_o_c_a_l _T_i_m_e_s _o_f _t_h_e _D_a_y _f_o_r
  66216.        _I_n_f_o_r_m_a_t_i_o_n _I_n_t_e_r_c_h_a_n_g_e.
  66217.  
  66218.  {B14} GB 2312-1980, Chinese Association for Standardization.  _C_o_d_e_d
  66219.        _C_h_i_n_e_s_e _G_r_a_p_h_i_c _C_h_a_r_a_c_t_e_r _S_e_t _f_o_r _I_n_f_o_r_m_a_t_i_o_n _I_n_t_e_r_c_h_a_n_g_e.
  66220.  
  66221.  {B15} JIS X0208-1990, Japanese National Committee on ISO/IEC JTC1/SC2.
  66222.        _J_a_p_a_n_e_s_e _G_r_a_p_h_i_c _C_h_a_r_a_c_t_e_r _S_e_t _f_o_r _I_n_f_o_r_m_a_t_i_o_n _I_n_t_e_r_c_h_a_n_g_e.
  66223.  
  66224.  {B16} JIS X0212-1990, Japanese National Committee on ISO/IEC JTC1/SC2.
  66225.        _S_u_p_p_l_e_m_e_n_t_a_r_y _J_a_p_a_n_e_s_e _G_r_a_p_h_i_c _C_h_a_r_a_c_t_e_r _S_e_t _f_o_r _I_n_f_o_r_m_a_t_i_o_n
  66226.        _I_n_t_e_r_c_h_a_n_g_e.
  66227.  
  66228.  {B17} KS C 5601-1987, Korean Bureau of Standards.  _K_o_r_e_a_n _G_r_a_p_h_i_c
  66229.        _C_h_a_r_a_c_t_e_r _S_e_t _f_o_r _I_n_f_o_r_m_a_t_i_o_n _I_n_t_e_r_c_h_a_n_g_e.
  66230.  
  66231.  {B18} IEEE Std 100-1988, _I_E_E_E _S_t_a_n_d_a_r_d _D_i_c_t_i_o_n_a_r_y _o_f _E_l_e_c_t_r_i_c_a_l _a_n_d
  66232.        _E_l_e_c_t_r_o_n_i_c_s _T_e_r_m_s.
  66233.  
  66234.  {B19} IEEE P1003.3,5) _S_t_a_n_d_a_r_d _f_o_r _I_n_f_o_r_m_a_t_i_o_n _T_e_c_h_n_o_l_o_g_y--_T_e_s_t _M_e_t_h_o_d_s
  66235.        _f_o_r _M_e_a_s_u_r_i_n_g _C_o_n_f_o_r_m_a_n_c_e _t_o _P_O_S_I_X
  66236.  
  66237.  {B20} IEEE P1003.3.2,6) _S_t_a_n_d_a_r_d _f_o_r _I_n_f_o_r_m_a_t_i_o_n _T_e_c_h_n_o_l_o_g_y--_T_e_s_t _M_e_t_h_o_d_s
  66238.        _f_o_r _M_e_a_s_u_r_i_n_g _C_o_n_f_o_r_m_a_n_c_e _t_o _P_O_S_I_X._2
  66239.  
  66240.  {B21} Aho, Alfred V., Kernighan, Brian W., Weinberger, Peter J., _T_h_e _A_W_K
  66241.        _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e, Reading, MA:  Addison-Wesley, 1988.
  66242.  
  66243.  
  66244.  
  66245.  __________
  66246.   2) To be approved and published.
  66247.   3) To be approved and published.
  66248.   4) ANSI documents can be obtained from the Sales Department, American
  66249.      National Standards Institute, 1430 Broadway, New York, NY 10018.
  66250.   5) To be approved and published.
  66251.   6) To be approved and published.
  66252.  
  66253.  
  66254.  
  66255.                Copyright c 1991 IEEE.  All rights reserved.
  66256.       This is an unapproved IEEE Standards Draft, subject to change.
  66257.  
  66258.  
  66259.  
  66260.  
  66261.  
  66262.  974                                                        D Bibliography
  66263.  
  66264.  
  66265.  
  66266.  
  66267.  
  66268.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  66269.  
  66270.  {B22} Aho, Alfred V., Sethi, Ravi, Ullman, Jeffrey D., _C_o_m_p_i_l_e_r_s,
  66271.        _P_r_i_n_c_i_p_l_e_s, _T_e_c_h_n_i_q_u_e_s, _a_n_d _T_o_o_l_s, Reading, MA:  Addison-Wesley,
  66272.        1986.
  66273.  
  66274.  {B23} Aho, Alfred V., Ullman, Jeffrey D., _P_r_i_n_c_i_p_l_e_s _o_f _C_o_m_p_i_l_e_r _D_e_s_i_g_n,
  66275.        Reading, MA:  Addison-Wesley, 1977.
  66276.  
  66277.  {B24} American Telephone and Telegraph Company.  _S_y_s_t_e_m _V _I_n_t_e_r_f_a_c_e
  66278.        _D_e_f_i_n_i_t_i_o_n (_S_V_I_D), _I_s_s_u_e_s _2 _a_n_d _3.  Morristown, NJ:  UNIX Press,
  66279.        1986, 1989.7)
  66280.  
  66281.  {B25} Bolsky, Morris I., Korn, David G., _T_h_e _K_o_r_n_S_h_e_l_l _C_o_m_m_a_n_d _a_n_d
  66282.        _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e, Englewood Cliffs, NJ:  Prentice Hall, 1988.
  66283.  
  66284.  {B26} DeRemer, Frank, and Thomas J. Pennello, ``Efficient Computation of
  66285.        LALR(1) Look-ahead Sets.''  _S_i_g_P_l_a_n _N_o_t_i_c_e_s 15:8, 176-187, August,
  66286.        1979.
  66287.  
  66288.  {B27} Knuth, D. E.  ``On the translation of languages from left to
  66289.        right.''  _I_n_f_o_r_m_a_t_i_o_n _a_n_d _C_o_n_t_r_o_l 8:6, 607-639.
  66290.  
  66291.  {B28} University of California at Berkeley--Computer Science Research
  66292.        Group.  _4._3 _B_e_r_k_e_l_e_y _S_o_f_t_w_a_r_e _D_i_s_t_r_i_b_u_t_i_o_n, _V_i_r_t_u_a_l _V_A_X-_1_1 _V_e_r_s_i_o_n.
  66293.        Berkeley, CA:  The Regents of the University of California, April
  66294.        1986.
  66295.  
  66296.  {B29} /usr/group Standards Committee.  _1_9_8_4 /_u_s_r/_g_r_o_u_p _S_t_a_n_d_a_r_d.  Santa
  66297.        Clara, CA:  UniForum, 1984.
  66298.  
  66299.  {B30} X/Open Company, Ltd.  _X/_O_p_e_n _P_o_r_t_a_b_i_l_i_t_y _G_u_i_d_e, _I_s_s_u_e _2.
  66300.        Amsterdam:  Elsevier Science Publishers, 1987.
  66301.  
  66302.  {B31} X/Open Company, Ltd.  _X/_O_p_e_n _P_o_r_t_a_b_i_l_i_t_y _G_u_i_d_e, _I_s_s_u_e _3.  Englewood
  66303.        Cliffs, NJ:  Prentice-Hall, 1989.
  66304.  
  66305.  END_RATIONALE
  66306.  
  66307.  END_RATIONALE
  66308.  
  66309.  
  66310.  
  66311.  
  66312.  
  66313.  __________
  66314.   7) This is one of several documents that represent an industry
  66315.      specification in an area related to POSIX.2.  The creators of such
  66316.      documents may be able to identify newer versions that may be
  66317.      interesting.
  66318.  
  66319.  
  66320.  
  66321.                Copyright c 1991 IEEE.  All rights reserved.
  66322.       This is an unapproved IEEE Standards Draft, subject to change.
  66323.  
  66324.  
  66325.  
  66326.  
  66327.  
  66328.  Annex D Bibliography                                                  975
  66329.  
  66330.  
  66331.  
  66332.  
  66333.  
  66334.  
  66335.  
  66336.  
  66337.  
  66338.  
  66339.  
  66340.  
  66341.  
  66342.  
  66343.  
  66344.  
  66345.  
  66346.  
  66347.  
  66348.  
  66349.  
  66350.  
  66351.  
  66352.  
  66353.  
  66354.  
  66355.  
  66356.  
  66357.  
  66358.  
  66359.  
  66360.  
  66361.  
  66362.  
  66363.  
  66364.  
  66365.  
  66366.  
  66367.  
  66368.  
  66369.  
  66370.  
  66371.  
  66372.  
  66373.  
  66374.  
  66375.  
  66376.  
  66377.  
  66378.  
  66379.  
  66380.  
  66381.  
  66382.  
  66383.  
  66384.  
  66385.  
  66386.  
  66387.  
  66388.  
  66389.  
  66390.  
  66391.  
  66392.  
  66393.  
  66394.  
  66395.  
  66396.  
  66397.  
  66398.  
  66399.  
  66400.                                                              P1003.2/D11.2
  66401.  
  66402.  
  66403.  
  66404.  
  66405.  
  66406.  
  66407.                                   Annex E
  66408.                                (informative)
  66409.  
  66410.                             Rationale and Notes
  66411.  
  66412.  
  66413.  
  66414.  
  66415.  BEGIN_RATIONALE
  66416.  
  66417.  This annex summarizes the deliberations of the IEEE P1003.2 Working
  66418.  Group, the committee charged by the IEEE Computer Society's Technical
  66419.  Committee on Operating Systems and Operational Environments with devising
  66420.  an interface standard for a shell and related utilities to support and
  66421.  extend POSIX.1.
  66422.  
  66423.  The annex is being published along with the standard to assist in the
  66424.  process of review.  It contains historical information concerning the
  66425.  contents of the standard and why features were included or discarded by
  66426.  the Working Group.  It also contains notes of interest to application
  66427.  programmers on recommended programming practices, emphasizing the
  66428.  consequences of some aspects of the standard that may not be immediately
  66429.  apparent.
  66430.  
  66431.  Just as this standard relies on the knowledge of architecture, history,
  66432.  and definitions from the POSIX.1, so does this annex.  The reader is
  66433.  referred to the Rationale and Notes appendix of POSIX.1 for background
  66434.  material and bibliographic information about UNIX systems in general and
  66435.  POSIX specifically, which will not be duplicated here.
  66436.  
  66437.  BEGIN_RATIONALE
  66438.  
  66439.  
  66440.  E.1  General
  66441.  
  66442.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _t_e_x_t _o_f _t_h_e _R_a_t_i_o_n_a_l_e _f_o_r _t_h_i_s _s_e_c_t_i_o_n _h_a_s _b_e_e_n
  66443.  _t_e_m_p_o_r_a_r_i_l_y _l_o_c_a_t_e_d _i_n _S_e_c_t_i_o_n _1, _a_d_j_a_c_e_n_t _t_o _t_h_e _t_e_x_t _i_t _i_s _e_x_p_l_a_i_n_i_n_g.
  66444.  _T_h_e _t_e_x_t _w_i_l_l _r_e_t_u_r_n _t_o _t_h_i_s _a_n_n_e_x _a_f_t_e_r _t_h_e _c_o_m_p_l_e_t_i_o_n _o_f _b_a_l_l_o_t_i_n_g.
  66445.  
  66446.  
  66447.  
  66448.  
  66449.  
  66450.  
  66451.  
  66452.  
  66453.                Copyright c 1991 IEEE.  All rights reserved.
  66454.       This is an unapproved IEEE Standards Draft, subject to change.
  66455.  
  66456.  
  66457.  
  66458.  
  66459.  
  66460.  E.1 General                                                           977
  66461.  
  66462.  
  66463.  
  66464.  
  66465.  
  66466.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  66467.  
  66468.  E.1.1  Scope
  66469.  
  66470.  
  66471.  E.1.2  Normative References
  66472.  
  66473.  
  66474.  E.1.3  Conformance
  66475.  
  66476.  BEGIN_RATIONALE
  66477.  
  66478.  
  66479.  
  66480.  E.2  Terminology and General Requirements
  66481.  
  66482.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _t_e_x_t _o_f _t_h_e _R_a_t_i_o_n_a_l_e _f_o_r _t_h_i_s _s_e_c_t_i_o_n _h_a_s _b_e_e_n
  66483.  _t_e_m_p_o_r_a_r_i_l_y _l_o_c_a_t_e_d _i_n _S_e_c_t_i_o_n _2, _a_d_j_a_c_e_n_t _t_o _t_h_e _t_e_x_t _i_t _i_s _e_x_p_l_a_i_n_i_n_g.
  66484.  _T_h_e _t_e_x_t _w_i_l_l _r_e_t_u_r_n _t_o _t_h_i_s _a_n_n_e_x _a_f_t_e_r _t_h_e _c_o_m_p_l_e_t_i_o_n _o_f _b_a_l_l_o_t_i_n_g.
  66485.  
  66486.  
  66487.  E.2.1  Conventions
  66488.  
  66489.  
  66490.  E.2.2  Definitions
  66491.  
  66492.  
  66493.  E.2.3  Built-in Utilities
  66494.  
  66495.  
  66496.  E.2.4  Character Set
  66497.  
  66498.  
  66499.  E.2.5  Locale
  66500.  
  66501.  
  66502.  E.2.6  Environment Variables
  66503.  
  66504.  
  66505.  E.2.7  Required Files
  66506.  
  66507.  
  66508.  E.2.8  Regular Expression Notation
  66509.  
  66510.  
  66511.  E.2.9  Dependencies on Other Standards
  66512.  
  66513.  
  66514.  
  66515.  
  66516.  
  66517.  
  66518.  
  66519.                Copyright c 1991 IEEE.  All rights reserved.
  66520.       This is an unapproved IEEE Standards Draft, subject to change.
  66521.  
  66522.  
  66523.  
  66524.  
  66525.  
  66526.  978                                                 E Rationale and Notes
  66527.  
  66528.  
  66529.  
  66530.  
  66531.  
  66532.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  66533.  
  66534.  E.2.10  Utility Conventions
  66535.  
  66536.  
  66537.  E.2.11  Utility Description Defaults
  66538.  
  66539.  
  66540.  E.2.12  File Format Notation
  66541.  
  66542.  
  66543.  E.2.13  Configuration Values
  66544.  
  66545.  BEGIN_RATIONALE
  66546.  
  66547.  
  66548.  
  66549.  E.3  Shell Command Language
  66550.  
  66551.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _t_e_x_t _o_f _t_h_e _R_a_t_i_o_n_a_l_e _f_o_r _t_h_i_s _s_e_c_t_i_o_n _h_a_s _b_e_e_n
  66552.  _t_e_m_p_o_r_a_r_i_l_y _l_o_c_a_t_e_d _i_n _S_e_c_t_i_o_n _3, _a_d_j_a_c_e_n_t _t_o _t_h_e _t_e_x_t _i_t _i_s _e_x_p_l_a_i_n_i_n_g.
  66553.  _T_h_e _t_e_x_t _w_i_l_l _r_e_t_u_r_n _t_o _t_h_i_s _a_n_n_e_x _a_f_t_e_r _t_h_e _c_o_m_p_l_e_t_i_o_n _o_f _b_a_l_l_o_t_i_n_g.
  66554.  
  66555.  
  66556.  E.3.1  Shell Definitions
  66557.  
  66558.  
  66559.  E.3.2  Quoting
  66560.  
  66561.  
  66562.  E.3.3  Token Recognition
  66563.  
  66564.  
  66565.  E.3.4  Reserved Words
  66566.  
  66567.  
  66568.  E.3.5  Parameters and Variables
  66569.  
  66570.  
  66571.  E.3.6  Word Expansions
  66572.  
  66573.  
  66574.  E.3.7  Redirection
  66575.  
  66576.  
  66577.  E.3.8  Exit Status for Commands
  66578.  
  66579.  
  66580.  
  66581.  
  66582.  
  66583.  
  66584.  
  66585.                Copyright c 1991 IEEE.  All rights reserved.
  66586.       This is an unapproved IEEE Standards Draft, subject to change.
  66587.  
  66588.  
  66589.  
  66590.  
  66591.  
  66592.  E.3 Shell Command Language                                            979
  66593.  
  66594.  
  66595.  
  66596.  
  66597.  
  66598.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  66599.  
  66600.  E.3.9  Shell Commands
  66601.  
  66602.  
  66603.  E.3.10  Shell Grammar
  66604.  
  66605.  
  66606.  E.3.11  Signals and Error Handling
  66607.  
  66608.  
  66609.  E.3.12  Shell Execution Environment
  66610.  
  66611.  
  66612.  E.3.13  Pattern Matching Notation
  66613.  
  66614.  
  66615.  E.3.14  Special Built-in Utilities
  66616.  
  66617.  BEGIN_RATIONALE
  66618.  
  66619.  
  66620.  
  66621.  E.4  Execution Environment Utilities
  66622.  
  66623.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _t_e_x_t _o_f _t_h_e _R_a_t_i_o_n_a_l_e _f_o_r _t_h_i_s _s_e_c_t_i_o_n _h_a_s _b_e_e_n
  66624.  _t_e_m_p_o_r_a_r_i_l_y _l_o_c_a_t_e_d _i_n _S_e_c_t_i_o_n _4, _a_d_j_a_c_e_n_t _t_o _t_h_e _t_e_x_t _i_t _i_s _e_x_p_l_a_i_n_i_n_g.
  66625.  _T_h_e _t_e_x_t _w_i_l_l _r_e_t_u_r_n _t_o _t_h_i_s _a_n_n_e_x _a_f_t_e_r _t_h_e _c_o_m_p_l_e_t_i_o_n _o_f _b_a_l_l_o_t_i_n_g.
  66626.  _N_o_t_a_t_i_o_n_s _r_e_g_a_r_d_i_n_g _u_t_i_l_i_t_i_e_s _p_r_o_b_a_b_l_y _i_n_c_l_u_d_e_d _i_n _t_h_e _U_P_E _h_a_v_e _b_e_e_n
  66627.  _u_p_d_a_t_e_d, _w_i_t_h_o_u_t _d_i_f_f _m_a_r_k_s, _b_a_s_e_d _o_n _t_h_e _c_u_r_r_e_n_t _w_o_r_k_i_n_g _d_r_a_f_t _o_f
  66628.  _1_0_0_3._2_a.
  66629.  
  66630.  Many utilities were evaluated by the working group; more utilities were
  66631.  excluded from the standard than included.  The following list contains
  66632.  many common UNIX system utilities that were not included as Execution
  66633.  Environment Utilities or in one of the Software Development Environment
  66634.  groups.  It is logistically difficult for this Rationale to correctly
  66635.  distribute the reasons for not including a utility among the various
  66636.  utility environment sections.  Therefore, this section covers the reasons
  66637.  for all utilities not included in Sections 4 and 6 and Annexes A and C.
  66638.  
  66639.  The working group started its deliberations with a recommended list of
  66640.  utilities provided by the X/Open group of companies.  This list was a
  66641.  subset of the utilities in the _X/_O_p_e_n _P_o_r_t_a_b_i_l_i_t_y _G_u_i_d_e, _I_s_s_u_e _I_I, so it
  66642.  was very closely related to System V.  The list had already been purged
  66643.  of purely administrative utilities, such as those found in System V's
  66644.  Administered System Extension.  Then, the working group applied its scope
  66645.  as a filter and substantially pruned the remaining list as well.
  66646.  
  66647.  The following list of ``rejected'' utilities is limited by its historical
  66648.  roots; since the selected utilities emerged from primarily a System V
  66649.  base, this list does not include sometimes familiar entries from BSD.
  66650.  
  66651.                Copyright c 1991 IEEE.  All rights reserved.
  66652.       This is an unapproved IEEE Standards Draft, subject to change.
  66653.  
  66654.  
  66655.  
  66656.  
  66657.  
  66658.  980                                                 E Rationale and Notes
  66659.  
  66660.  
  66661.  
  66662.  
  66663.  
  66664.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  66665.  
  66666.  The working group received substantial input from representatives of the
  66667.  University of California at Berkeley and from companies that are firmly
  66668.  allied with BSD versions of the UNIX system, enough so that some BSD-
  66669.  derived utilities are included in the standard.  However, this Rationale
  66670.  is now limited to a discussion of only those utilities actively or
  66671.  indirectly evaluated by the working group, rather than the list of all
  66672.  known UNIX utilities from all its variants.  This list will most likely
  66673.  be augmented during the balloting process as balloters request specific
  66674.  rationales for their favorite commands.
  66675.  
  66676.  In the list, the notation [_P_O_S_I_X._2_a] is used to identify utilities that
  66677.  are being evaluated for inclusion in the forthcoming User Portability
  66678.  Extension to this standard.  Similarly, [_P_O_S_I_X._7] is used for those that
  66679.  may be appropriate for the working group evaluating system administration
  66680.  and [_P_O_S_I_X._N_e_t] for networking standards.
  66681.  
  66682.     adb         The intent of the various software development utilities
  66683.                 was to assist in the installation (rather than the actual
  66684.                 development and debugging) of applications.  This utility
  66685.                 is primarily a debugging tool.  Furthermore, many useful
  66686.                 aspects of adb are very hardware-specific.
  66687.  
  66688.     admin       The intent of the various software development utilities
  66689.                 was to assist in the installation (rather than the actual
  66690.                 development and debugging) of applications.  This SCCS
  66691.                 utility is primarily a development tool.
  66692.  
  66693.     as          Assemblers are hardware-specific and are included
  66694.                 implicitly as part of the compilers in the standard.
  66695.  
  66696.     at          The at and cron family of utilities were omitted because
  66697.                 portable applications could not rely on their behavior.
  66698.                 [_P_O_S_I_X._2_a]
  66699.  
  66700.     banner      The only known use of this command is as part of the LP
  66701.                 printer header pages.  It was decided that the format of
  66702.                 the header is implementation defined, so this utility is
  66703.                 superfluous to application portability.
  66704.  
  66705.     batch       The at and cron family of utilities were omitted because
  66706.                 portable applications could not rely on their behavior.
  66707.                 [_P_O_S_I_X._2_a]
  66708.  
  66709.     cal         This calendar printing program is not useful to portable
  66710.                 applications.
  66711.  
  66712.     calendar    This reminder service program is not useful to portable
  66713.                 applications.
  66714.  
  66715.  
  66716.  
  66717.                Copyright c 1991 IEEE.  All rights reserved.
  66718.       This is an unapproved IEEE Standards Draft, subject to change.
  66719.  
  66720.  
  66721.  
  66722.  
  66723.  
  66724.  E.4 Execution Environment Utilities                                   981
  66725.  
  66726.  
  66727.  
  66728.  
  66729.  
  66730.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  66731.  
  66732.     cancel      The LP (line printer spooling) system specified is the
  66733.                 most basic possible and did not need this level of
  66734.                 application control.  [_P_O_S_I_X._7]
  66735.  
  66736.     cflow       The intent of the various software development utilities
  66737.                 was to assist in the installation (rather than the actual
  66738.                 development and debugging) of applications.  This utility
  66739.                 is primarily a debugging tool.
  66740.  
  66741.     chroot      This is primarily of administrative use, requiring super-
  66742.                 user privileges.  [_P_O_S_I_X._7]
  66743.  
  66744.     col         No utilities defined in this standard produce output
  66745.                 requiring such a filter.  The nroff text formatter is
  66746.                 present on many historical systems and will continue to
  66747.                 remain as an extension; col is expected to be shipped by
  66748.                 all the systems that ship nroff.
  66749.  
  66750.     cpio        This has been replaced by pax, for reasons explained in
  66751.                 its own Rationale.
  66752.  
  66753.     cpp         Can be subsumed by c89.
  66754.  
  66755.     crontab     The at and cron family of utilities were omitted because
  66756.                 portable applications could not rely on their behavior.
  66757.                 [_P_O_S_I_X._2_a]
  66758.  
  66759.     csplit      This utility's functionality can sometimes be provided by
  66760.                 the dd or sed utilities (i.e., although these utilities
  66761.                 cannot easily provide all of csplit'_s features in one
  66762.                 package, they can frequently be used for the type of task
  66763.                 that csplit is being used for).  [_P_O_S_I_X._2_a]
  66764.  
  66765.     cu          Terminal oriented-not useful from shell scripts or typical
  66766.                 application programs.  [_P_O_S_I_X._N_e_t]
  66767.  
  66768.     cxref       The intent of the various software development utilities
  66769.                 was to assist in the installation (rather than the actual
  66770.                 development and debugging) of applications.  This utility
  66771.                 is primarily a debugging tool.
  66772.  
  66773.     dc          This utility's functionality can be provided by the bc
  66774.                 utility; bc was selected because it was easier to use and
  66775.                 had superior functionality.  Although the historical
  66776.                 versions of bc are implemented using dc as a base, this
  66777.                 standard prescribes the interface and not the underlying
  66778.                 mechanism used to implement it.
  66779.  
  66780.  
  66781.  
  66782.  
  66783.                Copyright c 1991 IEEE.  All rights reserved.
  66784.       This is an unapproved IEEE Standards Draft, subject to change.
  66785.  
  66786.  
  66787.  
  66788.  
  66789.  
  66790.  982                                                 E Rationale and Notes
  66791.  
  66792.  
  66793.  
  66794.  
  66795.  
  66796.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  66797.  
  66798.     delta       The intent of the various software development utilities
  66799.                 was to assist in the installation (rather than the actual
  66800.                 development and debugging) of applications.  This SCCS
  66801.                 utility is primarily a development tool.
  66802.  
  66803.     df          As the standard does not address the concept or nature of
  66804.                 file systems, this command could not be specified in a
  66805.                 manner useful to portable applications.  [_P_O_S_I_X._2_a]
  66806.  
  66807.     dircmp      Although a useful concept, the traditional output of this
  66808.                 directory comparison program is not suitable for
  66809.                 processing in applications programs.  Also, the diff -r
  66810.                 command gives equivalent functionality.
  66811.  
  66812.     dis         Disassemblers are hardware-specific.
  66813.  
  66814.     du          Because of differences between systems in measuring disk
  66815.                 usage, this utility could not be used reliably by a
  66816.                 portable application.  [_P_O_S_I_X._2_a]
  66817.  
  66818.     egrep       Marked obsolescent and replaced by the new version of
  66819.                 grep.
  66820.  
  66821.     ex          This is typically a link to the vi terminal-oriented
  66822.                 editor-not useful from shell scripts or typical
  66823.                 application programs.  The nonterminal oriented facilities
  66824.                 of ex are provided by ed.  [_P_O_S_I_X._2_a]
  66825.  
  66826.     fgrep       Marked obsolescent and replaced by the new version of
  66827.                 grep.
  66828.  
  66829.     file        Determining the type of file is generally accomplished
  66830.                 with test or find.  The added information available with
  66831.                 file is of little use to a portable application,
  66832.                 particularly since there is considerable variation in its
  66833.                 output contents.  [_P_O_S_I_X._2_a]
  66834.  
  66835.     get         The intent of the various software development utilities
  66836.                 was to assist in the installation (rather than the actual
  66837.                 development and debugging) of applications.  This SCCS
  66838.                 utility is primarily a development tool.
  66839.  
  66840.     ld          Is subsumed by c89.
  66841.  
  66842.     line        The functionality of line can be provided with read.
  66843.  
  66844.     lint        The intent of the various software development utilities
  66845.                 was to assist in the installation (rather than the actual
  66846.                 development and debugging) of applications.  This utility
  66847.  
  66848.  
  66849.                Copyright c 1991 IEEE.  All rights reserved.
  66850.       This is an unapproved IEEE Standards Draft, subject to change.
  66851.  
  66852.  
  66853.  
  66854.  
  66855.  
  66856.  E.4 Execution Environment Utilities                                   983
  66857.  
  66858.  
  66859.  
  66860.  
  66861.  
  66862.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  66863.  
  66864.                 is primarily a debugging tool.
  66865.  
  66866.     login       Terminal oriented-not useful from shell scripts or typical
  66867.                 application programs.
  66868.  
  66869.     lorder      This utility is an aid in creating an implementation-
  66870.                 specific detail of object libraries that the working group
  66871.                 did not feel required standardization.
  66872.  
  66873.     lpstat      The LP system specified is the most basic possible and did
  66874.                 not need this level of application control.  [_P_O_S_I_X._7]
  66875.  
  66876.     m4          The working group did not find that this macro processor
  66877.                 had sufficiently wide usage for standardization.
  66878.  
  66879.     mail        This utility was omitted in favor of mailx, because there
  66880.                 was a considerable functionality overlap between the two.
  66881.                 The mail-sending aspects of mailx are covered in this
  66882.                 standard, the mail-reading in the UPE.  [_P_O_S_I_X._2_a]
  66883.  
  66884.     mesg        Terminal oriented-not useful from shell scripts or typical
  66885.                 application programs.  [_P_O_S_I_X._2_a]
  66886.  
  66887.     mknod       This was omitted in favor of mkfifo, as mknod has too many
  66888.                 implementation-defined functions.  [_P_O_S_I_X._7]
  66889.  
  66890.     newgrp      Terminal oriented-not useful from shell scripts or typical
  66891.                 application programs.  [_P_O_S_I_X._2_a]
  66892.  
  66893.     news        Terminal oriented-not useful from shell scripts or typical
  66894.                 application programs.
  66895.  
  66896.     nice        Due to historical variations in usage, and in the lack of
  66897.                 underlying support from possible POSIX.1 {8} base systems,
  66898.                 this cannot be used by applications to achieve reliable
  66899.                 results.  [_P_O_S_I_X._2_a]
  66900.  
  66901.     nl          The useful functionality of nl can be provided with pr.
  66902.  
  66903.     nm          The intent of the various software development utilities
  66904.                 was to assist in the installation (rather than the actual
  66905.                 development and debugging) of applications.  This utility
  66906.                 is primarily a debugging tool.  [_P_O_S_I_X._2_a]
  66907.  
  66908.     pack        The working group found little interest in a portable data
  66909.                 compression program (and there are others that are
  66910.                 probably more widely used anyway).
  66911.  
  66912.  
  66913.  
  66914.  
  66915.                Copyright c 1991 IEEE.  All rights reserved.
  66916.       This is an unapproved IEEE Standards Draft, subject to change.
  66917.  
  66918.  
  66919.  
  66920.  
  66921.  
  66922.  984                                                 E Rationale and Notes
  66923.  
  66924.  
  66925.  
  66926.  
  66927.  
  66928.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  66929.  
  66930.     passwd      Terminal oriented-not useful from shell scripts or typical
  66931.                 application programs.  (There was also sentiment to avoid
  66932.                 security-related utilities until requirements of 1003.6
  66933.                 are known.)
  66934.  
  66935.     pcat        The working group found little interest in a portable data
  66936.                 compression program (and there are others that are
  66937.                 probably more widely used anyway).
  66938.  
  66939.     pg          Terminal oriented-not useful from shell scripts or typical
  66940.                 application programs.
  66941.  
  66942.     prof        The intent of the various software development utilities
  66943.                 was to assist in the installation (rather than the actual
  66944.                 development and debugging) of applications.  This utility
  66945.                 is primarily a debugging tool.
  66946.  
  66947.     prs         The intent of the various software development utilities
  66948.                 was to assist in the installation (rather than the actual
  66949.                 development and debugging) of applications.  This SCCS
  66950.                 utility is primarily a development tool.
  66951.  
  66952.     ps          This utility has historically been difficult to specify
  66953.                 portably due to the many implementation-defined aspects of
  66954.                 processes.  Furthermore, a portable application can rarely
  66955.                 rely on information about what other processes are doing,
  66956.                 as security mechanisms may prevent it.  A process
  66957.                 requiring one of its children's process IDs (such as for
  66958.                 use with the kill command) will have to record the IDs at
  66959.                 the time of creation.  [_P_O_S_I_X._2_a]
  66960.  
  66961.     red         Restricted editor.  This was not considered by the working
  66962.                 group because it never provided the level of security
  66963.                 restriction required.
  66964.  
  66965.     rmdel       The intent of the various software development utilities
  66966.                 was to assist in the installation (rather than the actual
  66967.                 development and debugging) of applications.  This SCCS
  66968.                 utility is primarily a development tool.
  66969.  
  66970.     rsh         Restricted shell.  This was not considered by the working
  66971.                 group because it does not provide the level of security     1
  66972.                 restriction that is implied by historical documentation.    1
  66973.  
  66974.     sact        The intent of the various software development utilities
  66975.                 was to assist in the installation (rather than the actual
  66976.                 development and debugging) of applications.  This SCCS
  66977.                 utility is primarily a development tool.
  66978.  
  66979.  
  66980.  
  66981.                Copyright c 1991 IEEE.  All rights reserved.
  66982.       This is an unapproved IEEE Standards Draft, subject to change.
  66983.  
  66984.  
  66985.  
  66986.  
  66987.  
  66988.  E.4 Execution Environment Utilities                                   985
  66989.  
  66990.  
  66991.  
  66992.  
  66993.  
  66994.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  66995.  
  66996.     sdb         The intent of the various software development utilities
  66997.                 was to assist in the installation (rather than the actual
  66998.                 development and debugging) of applications.  This utility
  66999.                 is primarily a debugging tool.  Furthermore, some useful
  67000.                 aspects of sdb are very hardware-specific.
  67001.  
  67002.     sdiff       The ``side-by-side diff'' utility from System V was
  67003.                 omitted because it is used infrequently, and even less so
  67004.                 by portable applications.  Despite being in System V, it
  67005.                 is not in the _S_V_I_D or _X_P_G.
  67006.  
  67007.     shar        Utilities with this type of functionality (``shell-based
  67008.                 archivers'') are in wide use, despite not being included
  67009.                 in System V or BSD systems.  However, the working group
  67010.                 felt this sort of program was more widely used by human
  67011.                 users than portable applications.
  67012.  
  67013.     shl         Terminal oriented-not useful from shell scripts or typical
  67014.                 application programs.  The job control aspects of the
  67015.                 Shell Command Language are generally more useful and are
  67016.                 being evaluated for the UPE.
  67017.  
  67018.     size        The intent of the various software development utilities
  67019.                 was to assist in the installation (rather than the actual
  67020.                 development and debugging) of applications.  This utility
  67021.                 is primarily a debugging tool.
  67022.  
  67023.     spell       Not useful from shell scripts or typical application
  67024.                 programs.
  67025.  
  67026.     split       The functionality can sometimes be provided by the dd,
  67027.                 sed, or (for some uses) xargs utilities (i.e., although
  67028.                 these utilities cannot easily provide all of split'_s
  67029.                 features in one package, they can sometimes be used for
  67030.                 the type of task that split is being used for).
  67031.                 [_P_O_S_I_X._2_a]
  67032.  
  67033.     strings     This is normally used by human users during debugging,
  67034.                 rather than by applications.  [_P_O_S_I_X._2_a]
  67035.  
  67036.     su          Not useful from shell scripts or typical application
  67037.                 programs.  (There was also sentiment to avoid security-
  67038.                 related utilities until requirements of POSIX.6 are
  67039.                 known.)
  67040.  
  67041.     sum         This utility was renamed cksum.
  67042.  
  67043.     tabs        Terminal oriented-not useful from shell scripts or typical
  67044.                 application programs.  [_P_O_S_I_X._2_a]
  67045.  
  67046.  
  67047.                Copyright c 1991 IEEE.  All rights reserved.
  67048.       This is an unapproved IEEE Standards Draft, subject to change.
  67049.  
  67050.  
  67051.  
  67052.  
  67053.  
  67054.  986                                                 E Rationale and Notes
  67055.  
  67056.  
  67057.  
  67058.  
  67059.  
  67060.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  67061.  
  67062.     time        Not necessary for portable applications.  It is frequently
  67063.                 used by human users in debugging or for informal
  67064.                 benchmarks.  It is doubtful whether any standardized
  67065.                 definitions of the output could be agreed upon.
  67066.  
  67067.     tsort       This utility is an aid in creating an implementation-
  67068.                 specific detail of object libraries that the working group
  67069.                 did not feel required standardization.
  67070.  
  67071.     unget       The intent of the various software development utilities
  67072.                 was to assist in the installation (rather than the actual
  67073.                 development and debugging) of applications.  This SCCS
  67074.                 utility is primarily a development tool.
  67075.  
  67076.     unpack      The working group found little interest in a portable data
  67077.                 compression program (and there are others that are
  67078.                 probably more widely used anyway).
  67079.  
  67080.     uucp
  67081.  
  67082.     uulog
  67083.     uupick
  67084.  
  67085.     uustat
  67086.     uuto        The UUCP utilities and their protocol description were      1
  67087.                 removed from an early draft because responsibility for      1
  67088.                 them was officially requested by the POSIX group            1
  67089.                 developing networking interfaces.                           1
  67090.  
  67091.     val         The intent of the various software development utilities
  67092.                 was to assist in the installation (rather than the actual
  67093.                 development and debugging) of applications.  This SCCS
  67094.                 utility is primarily a development tool.
  67095.  
  67096.     vi          Terminal oriented-not useful from shell scripts or typical
  67097.                 application programs.  [_P_O_S_I_X._2_a]
  67098.  
  67099.     wall        Terminal oriented-not useful from shell scripts or typical
  67100.                 application programs.  It is generally used by system
  67101.                 administrators, as well.  [_P_O_S_I_X._7]
  67102.  
  67103.     what        The intent of the various software development utilities
  67104.                 was to assist in the installation (rather than the actual
  67105.                 development and debugging) of applications.  This SCCS
  67106.                 utility is primarily a development tool.
  67107.  
  67108.     who         The ability to determine other users on the system was
  67109.                 felt to be at risk in a trusted implementation, so its use
  67110.                 could not be considered by a portable application.
  67111.  
  67112.  
  67113.                Copyright c 1991 IEEE.  All rights reserved.
  67114.       This is an unapproved IEEE Standards Draft, subject to change.
  67115.  
  67116.  
  67117.  
  67118.  
  67119.  
  67120.  E.4 Execution Environment Utilities                                   987
  67121.  
  67122.  
  67123.  
  67124.  
  67125.  
  67126.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  67127.  
  67128.                 [_P_O_S_I_X._2_a]
  67129.  
  67130.     write       Terminal oriented-not useful from shell scripts or typical
  67131.                 application programs.  [_P_O_S_I_X._2_a]
  67132.  
  67133.  
  67134.  _E._4._1  awk - _P_a_t_t_e_r_n _s_c_a_n_n_i_n_g _a_n_d _p_r_o_c_e_s_s_i_n_g _l_a_n_g_u_a_g_e
  67135.  
  67136.  
  67137.  _E._4._2  basename - _R_e_t_u_r_n _n_o_n_d_i_r_e_c_t_o_r_y _p_o_r_t_i_o_n _o_f _p_a_t_h_n_a_m_e
  67138.  
  67139.  
  67140.  _E._4._3  bc - _A_r_b_i_t_r_a_r_y-_p_r_e_c_i_s_i_o_n _a_r_i_t_h_m_e_t_i_c _l_a_n_g_u_a_g_e
  67141.  
  67142.  
  67143.  _E._4._4  cat - _C_o_n_c_a_t_e_n_a_t_e _a_n_d _p_r_i_n_t _f_i_l_e_s
  67144.  
  67145.  
  67146.  _E._4._5  cd - _C_h_a_n_g_e _w_o_r_k_i_n_g _d_i_r_e_c_t_o_r_y
  67147.  
  67148.  
  67149.  _E._4._6  chgrp - _C_h_a_n_g_e _f_i_l_e _g_r_o_u_p _o_w_n_e_r_s_h_i_p
  67150.  
  67151.  
  67152.  _E._4._7  chmod - _C_h_a_n_g_e _f_i_l_e _m_o_d_e_s
  67153.  
  67154.  
  67155.  _E._4._8  chown - _C_h_a_n_g_e _f_i_l_e _o_w_n_e_r_s_h_i_p
  67156.  
  67157.  
  67158.  _E._4._9  cksum - _W_r_i_t_e _f_i_l_e _c_h_e_c_k_s_u_m_s _a_n_d _b_l_o_c_k _c_o_u_n_t_s
  67159.  
  67160.  
  67161.  _E._4._1_0  cmp - _C_o_m_p_a_r_e _t_w_o _f_i_l_e_s
  67162.  
  67163.  
  67164.  _E._4._1_1  comm - _S_e_l_e_c_t _o_r _r_e_j_e_c_t _l_i_n_e_s _c_o_m_m_o_n _t_o _t_w_o _f_i_l_e_s
  67165.  
  67166.  
  67167.  _E._4._1_2  command - _S_e_l_e_c_t _o_r _r_e_j_e_c_t _l_i_n_e_s _c_o_m_m_o_n _t_o _t_w_o _f_i_l_e_s
  67168.  
  67169.  
  67170.  _E._4._1_3  cp - _C_o_p_y _f_i_l_e_s
  67171.  
  67172.  
  67173.  
  67174.  
  67175.  
  67176.  
  67177.  
  67178.  
  67179.                Copyright c 1991 IEEE.  All rights reserved.
  67180.       This is an unapproved IEEE Standards Draft, subject to change.
  67181.  
  67182.  
  67183.  
  67184.  
  67185.  
  67186.  988                                                 E Rationale and Notes
  67187.  
  67188.  
  67189.  
  67190.  
  67191.  
  67192.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  67193.  
  67194.  _E._4._1_4  cut - _C_u_t _o_u_t _s_e_l_e_c_t_e_d _f_i_e_l_d_s _o_f _e_a_c_h _l_i_n_e _o_f _a _f_i_l_e
  67195.  
  67196.  
  67197.  _E._4._1_5  date - _W_r_i_t_e _t_h_e _d_a_t_e _a_n_d _t_i_m_e
  67198.  
  67199.  
  67200.  _E._4._1_6  dd - _C_o_n_v_e_r_t _a_n_d _c_o_p_y _a _f_i_l_e
  67201.  
  67202.  
  67203.  _E._4._1_7  diff - _C_o_m_p_a_r_e _t_w_o _f_i_l_e_s
  67204.  
  67205.  
  67206.  _E._4._1_8  dirname - _R_e_t_u_r_n _d_i_r_e_c_t_o_r_y _p_o_r_t_i_o_n _o_f _p_a_t_h_n_a_m_e
  67207.  
  67208.  
  67209.  _E._4._1_9  echo - _W_r_i_t_e _a_r_g_u_m_e_n_t_s _t_o _s_t_a_n_d_a_r_d _o_u_t_p_u_t
  67210.  
  67211.  
  67212.  _E._4._2_0  ed - _E_d_i_t _t_e_x_t
  67213.  
  67214.  
  67215.  _E._4._2_1  env - _S_e_t _e_n_v_i_r_o_n_m_e_n_t _f_o_r _c_o_m_m_a_n_d _i_n_v_o_c_a_t_i_o_n
  67216.  
  67217.  
  67218.  _E._4._2_2  expr - _E_v_a_l_u_a_t_e _a_r_g_u_m_e_n_t_s _a_s _a_n _e_x_p_r_e_s_s_i_o_n
  67219.  
  67220.  
  67221.  _E._4._2_3  false - _R_e_t_u_r_n _f_a_l_s_e _v_a_l_u_e
  67222.  
  67223.  
  67224.  _E._4._2_4  find - _F_i_n_d _f_i_l_e_s
  67225.  
  67226.  
  67227.  _E._4._2_5  fold - _F_i_l_t_e_r _f_o_r _f_o_l_d_i_n_g _l_i_n_e_s
  67228.  
  67229.  
  67230.  _E._4._2_6  getconf - _G_e_t _c_o_n_f_i_g_u_r_a_t_i_o_n _v_a_l_u_e_s
  67231.  
  67232.  
  67233.  _E._4._2_7  getopts - _P_a_r_s_e _u_t_i_l_i_t_y _o_p_t_i_o_n_s
  67234.  
  67235.  
  67236.  _E._4._2_8  grep - _F_i_l_e _p_a_t_t_e_r_n _s_e_a_r_c_h_e_r
  67237.  
  67238.  
  67239.  
  67240.  
  67241.  
  67242.  
  67243.  
  67244.  
  67245.                Copyright c 1991 IEEE.  All rights reserved.
  67246.       This is an unapproved IEEE Standards Draft, subject to change.
  67247.  
  67248.  
  67249.  
  67250.  
  67251.  
  67252.  E.4 Execution Environment Utilities                                   989
  67253.  
  67254.  
  67255.  
  67256.  
  67257.  
  67258.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  67259.  
  67260.  _E._4._2_9  head - _C_o_p_y _t_h_e _f_i_r_s_t _p_a_r_t _o_f _f_i_l_e_s
  67261.  
  67262.  
  67263.  _E._4._3_0  id - _R_e_t_u_r_n _u_s_e_r _i_d_e_n_t_i_t_y
  67264.  
  67265.  
  67266.  _E._4._3_1  join - _R_e_l_a_t_i_o_n_a_l _d_a_t_a_b_a_s_e _o_p_e_r_a_t_o_r
  67267.  
  67268.  
  67269.  _E._4._3_2  kill - _T_e_r_m_i_n_a_t_e _o_r _s_i_g_n_a_l _p_r_o_c_e_s_s_e_s
  67270.  
  67271.  
  67272.  _E._4._3_3  ln - _L_i_n_k _f_i_l_e_s
  67273.  
  67274.  
  67275.  _E._4._3_4  locale - _G_e_t _l_o_c_a_l_e-_s_p_e_c_i_f_i_c _i_n_f_o_r_m_a_t_i_o_n
  67276.  
  67277.  
  67278.  _E._4._3_5  localedef - _D_e_f_i_n_e _l_o_c_a_l_e _e_n_v_i_r_o_n_m_e_n_t
  67279.  
  67280.  
  67281.  _E._4._3_6  logger - _L_o_g _m_e_s_s_a_g_e_s
  67282.  
  67283.  
  67284.  _E._4._3_7  logname - _R_e_t_u_r_n _u_s_e_r'_s _l_o_g_i_n _n_a_m_e
  67285.  
  67286.  
  67287.  _E._4._3_8  lp - _S_e_n_d _f_i_l_e_s _t_o _a _p_r_i_n_t_e_r
  67288.  
  67289.  
  67290.  _E._4._3_9  ls - _L_i_s_t _d_i_r_e_c_t_o_r_y _c_o_n_t_e_n_t_s
  67291.  
  67292.  
  67293.  _E._4._4_0  mailx - _P_r_o_c_e_s_s _m_e_s_s_a_g_e_s
  67294.  
  67295.  
  67296.  _E._4._4_1  mkdir - _M_a_k_e _d_i_r_e_c_t_o_r_i_e_s
  67297.  
  67298.  
  67299.  _E._4._4_2  mkfifo - _M_a_k_e _F_I_F_O _s_p_e_c_i_a_l _f_i_l_e_s
  67300.  
  67301.  
  67302.  _E._4._4_3  mv - _M_o_v_e _f_i_l_e_s
  67303.  
  67304.  
  67305.  
  67306.  
  67307.  
  67308.  
  67309.  
  67310.  
  67311.                Copyright c 1991 IEEE.  All rights reserved.
  67312.       This is an unapproved IEEE Standards Draft, subject to change.
  67313.  
  67314.  
  67315.  
  67316.  
  67317.  
  67318.  990                                                 E Rationale and Notes
  67319.  
  67320.  
  67321.  
  67322.  
  67323.  
  67324.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  67325.  
  67326.  _E._4._4_4  nohup - _I_n_v_o_k_e _a _u_t_i_l_i_t_y _i_m_m_u_n_e _t_o _h_a_n_g_u_p_s
  67327.  
  67328.  
  67329.  _E._4._4_5  od - _D_u_m_p _f_i_l_e_s _i_n _v_a_r_i_o_u_s _f_o_r_m_a_t_s
  67330.  
  67331.  
  67332.  _E._4._4_6  paste - _M_e_r_g_e _c_o_r_r_e_s_p_o_n_d_i_n_g _o_r _s_u_b_s_e_q_u_e_n_t _l_i_n_e_s _o_f _f_i_l_e_s
  67333.  
  67334.  
  67335.  _E._4._4_7  pathchk - _C_h_e_c_k _p_a_t_h_n_a_m_e_s
  67336.  
  67337.  
  67338.  _E._4._4_8  pax - _P_o_r_t_a_b_l_e _a_r_c_h_i_v_e _i_n_t_e_r_c_h_a_n_g_e
  67339.  
  67340.  
  67341.  _E._4._4_9  pr - _P_r_i_n_t _f_i_l_e_s
  67342.  
  67343.  
  67344.  _E._4._5_0  printf - _W_r_i_t_e _f_o_r_m_a_t_t_e_d _o_u_t_p_u_t
  67345.  
  67346.  
  67347.  _E._4._5_1  pwd - _R_e_t_u_r_n _w_o_r_k_i_n_g _d_i_r_e_c_t_o_r_y _n_a_m_e
  67348.  
  67349.  
  67350.  _E._4._5_2  read - _R_e_a_d _a _l_i_n_e _f_r_o_m _s_t_a_n_d_a_r_d _i_n_p_u_t
  67351.  
  67352.  
  67353.  _E._4._5_3  rm - _R_e_m_o_v_e _d_i_r_e_c_t_o_r_y _e_n_t_r_i_e_s
  67354.  
  67355.  
  67356.  _E._4._5_4  rmdir - _R_e_m_o_v_e _d_i_r_e_c_t_o_r_i_e_s
  67357.  
  67358.  
  67359.  _E._4._5_5  sed - _S_t_r_e_a_m _e_d_i_t_o_r
  67360.  
  67361.  
  67362.  _E._4._5_6  sh - _S_h_e_l_l, _t_h_e _s_t_a_n_d_a_r_d _c_o_m_m_a_n_d _l_a_n_g_u_a_g_e _i_n_t_e_r_p_r_e_t_e_r
  67363.  
  67364.  
  67365.  _E._4._5_7  sleep - _S_u_s_p_e_n_d _e_x_e_c_u_t_i_o_n _f_o_r _a_n _i_n_t_e_r_v_a_l
  67366.  
  67367.  
  67368.  _E._4._5_8  sort - _S_o_r_t, _m_e_r_g_e, _o_r _s_e_q_u_e_n_c_e _c_h_e_c_k _t_e_x_t _f_i_l_e_s
  67369.  
  67370.  
  67371.  
  67372.  
  67373.  
  67374.  
  67375.  
  67376.  
  67377.                Copyright c 1991 IEEE.  All rights reserved.
  67378.       This is an unapproved IEEE Standards Draft, subject to change.
  67379.  
  67380.  
  67381.  
  67382.  
  67383.  
  67384.  E.4 Execution Environment Utilities                                   991
  67385.  
  67386.  
  67387.  
  67388.  
  67389.  
  67390.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  67391.  
  67392.  _E._4._5_9  stty - _S_e_t _t_h_e _o_p_t_i_o_n_s _f_o_r _a _t_e_r_m_i_n_a_l
  67393.  
  67394.  
  67395.  _E._4._6_0  tail - _C_o_p_y _t_h_e _l_a_s_t _p_a_r_t _o_f _a _f_i_l_e
  67396.  
  67397.  
  67398.  _E._4._6_1  tee - _D_u_p_l_i_c_a_t_e _s_t_a_n_d_a_r_d _i_n_p_u_t
  67399.  
  67400.  
  67401.  _E._4._6_2  test - _E_v_a_l_u_a_t_e _e_x_p_r_e_s_s_i_o_n
  67402.  
  67403.  
  67404.  _E._4._6_3  touch - _C_h_a_n_g_e _f_i_l_e _a_c_c_e_s_s _a_n_d _m_o_d_i_f_i_c_a_t_i_o_n _t_i_m_e_s
  67405.  
  67406.  
  67407.  _E._4._6_4  tr - _T_r_a_n_s_l_a_t_e _c_h_a_r_a_c_t_e_r_s
  67408.  
  67409.  
  67410.  _E._4._6_5  true - _R_e_t_u_r_n _t_r_u_e _v_a_l_u_e
  67411.  
  67412.  
  67413.  _E._4._6_6  tty - _R_e_t_u_r_n _u_s_e_r'_s _t_e_r_m_i_n_a_l _n_a_m_e
  67414.  
  67415.  
  67416.  _E._4._6_7  umask - _G_e_t _o_r _s_e_t _t_h_e _f_i_l_e _m_o_d_e _c_r_e_a_t_i_o_n _m_a_s_k
  67417.  
  67418.  
  67419.  _E._4._6_8  uname - _R_e_t_u_r_n _s_y_s_t_e_m _n_a_m_e
  67420.  
  67421.  
  67422.  _E._4._6_9  uniq - _R_e_p_o_r_t _o_r _f_i_l_t_e_r _o_u_t _r_e_p_e_a_t_e_d _l_i_n_e_s _i_n _a _f_i_l_e
  67423.  
  67424.  
  67425.  _E._4._7_0  wait - _A_w_a_i_t _p_r_o_c_e_s_s _c_o_m_p_l_e_t_i_o_n
  67426.  
  67427.  
  67428.  _E._4._7_1  wc - _W_o_r_d, _l_i_n_e, _a_n_d _b_y_t_e _c_o_u_n_t
  67429.  
  67430.  
  67431.  _E._4._7_2  xargs - _C_o_n_s_t_r_u_c_t _a_r_g_u_m_e_n_t _l_i_s_t(_s) _a_n_d _i_n_v_o_k_e _u_t_i_l_i_t_y
  67432.  
  67433.  BEGIN_RATIONALE
  67434.  
  67435.  
  67436.  
  67437.  
  67438.  
  67439.  
  67440.  
  67441.  
  67442.  
  67443.                Copyright c 1991 IEEE.  All rights reserved.
  67444.       This is an unapproved IEEE Standards Draft, subject to change.
  67445.  
  67446.  
  67447.  
  67448.  
  67449.  
  67450.  992                                                 E Rationale and Notes
  67451.  
  67452.  
  67453.  
  67454.  
  67455.  
  67456.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  67457.  
  67458.  E.5  User Portability Utilities Option
  67459.  
  67460.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_i_s _s_e_c_t_i_o_n _i_s _u_n_u_s_e_d _i_n _t_h_i_s _r_e_v_i_s_i_o_n _o_f _t_h_e _s_t_a_n_d_a_r_d.
  67461.  
  67462.  BEGIN_RATIONALE
  67463.  
  67464.  
  67465.  
  67466.  E.6  Software Development Utilities Option
  67467.  
  67468.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _t_e_x_t _o_f _t_h_e _R_a_t_i_o_n_a_l_e _f_o_r _t_h_i_s _s_e_c_t_i_o_n _h_a_s _b_e_e_n
  67469.  _t_e_m_p_o_r_a_r_i_l_y _l_o_c_a_t_e_d _i_n _S_e_c_t_i_o_n _6, _a_d_j_a_c_e_n_t _t_o _t_h_e _t_e_x_t _i_t _i_s _e_x_p_l_a_i_n_i_n_g.
  67470.  _T_h_e _t_e_x_t _w_i_l_l _r_e_t_u_r_n _t_o _t_h_i_s _a_n_n_e_x _a_f_t_e_r _t_h_e _c_o_m_p_l_e_t_i_o_n _o_f _b_a_l_l_o_t_i_n_g.
  67471.  
  67472.  This is the first of the optional utility environments.  The working
  67473.  group decided there were two basic classes of systems to be supported:
  67474.  general application execution and software development.  The first is
  67475.  widely used and is the primary reason for the development of this
  67476.  standard.  The second, however, represents only a (small?) subset of the
  67477.  first; the users are generally only those who are developing or
  67478.  installing C or FORTRAN applications.
  67479.  
  67480.  Therefore, all the development environments are optional, giving users
  67481.  the option of specifying a smaller, (presumably) less expensive system.
  67482.  There are three separate optional environments, so that C-only or
  67483.  FORTRAN-only users do not have to specify unneeded components.  As
  67484.  further languages are supported by this standard, their environments will
  67485.  also be optional.
  67486.  
  67487.  An implementation must provide all three of these utilities to claim
  67488.  conformance to this section.
  67489.  
  67490.  See section E.4 for a discussion of utilities excluded from this group.
  67491.  
  67492.  
  67493.  E.6.1  ar - Create and maintain library archives
  67494.  
  67495.  
  67496.  E.6.2  make - Maintain, update, and regenerate groups of programs
  67497.  
  67498.  
  67499.  E.6.3  strip - Remove unnecessary information from executable files
  67500.  
  67501.  BEGIN_RATIONALE
  67502.  
  67503.  
  67504.  
  67505.  
  67506.  
  67507.  
  67508.  
  67509.                Copyright c 1991 IEEE.  All rights reserved.
  67510.       This is an unapproved IEEE Standards Draft, subject to change.
  67511.  
  67512.  
  67513.  
  67514.  
  67515.  
  67516.  E.6 Software Development Utilities Option                             993
  67517.  
  67518.  
  67519.  
  67520.  
  67521.  
  67522.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  67523.  
  67524.  E.7  Language-Independent System Services
  67525.  
  67526.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _t_e_x_t _o_f _t_h_e _R_a_t_i_o_n_a_l_e _f_o_r _t_h_i_s _s_e_c_t_i_o_n _h_a_s _b_e_e_n
  67527.  _t_e_m_p_o_r_a_r_i_l_y _l_o_c_a_t_e_d _i_n _S_e_c_t_i_o_n _7, _a_d_j_a_c_e_n_t _t_o _t_h_e _t_e_x_t _i_t _i_s _e_x_p_l_a_i_n_i_n_g.
  67528.  _T_h_e _t_e_x_t _w_i_l_l _r_e_t_u_r_n _t_o _t_h_i_s _a_n_n_e_x _a_f_t_e_r _t_h_e _c_o_m_p_l_e_t_i_o_n _o_f _b_a_l_l_o_t_i_n_g.
  67529.  
  67530.  
  67531.  E.7.1  Shell Command Interface
  67532.  
  67533.  
  67534.  E.7.2  Access Environment Variables
  67535.  
  67536.  
  67537.  E.7.3  Regular Expression Matching
  67538.  
  67539.  
  67540.  E.7.4  Pattern Matching
  67541.  
  67542.  
  67543.  E.7.5  Command Option Parsing
  67544.  
  67545.  
  67546.  E.7.6  Generate Pathnames Matching a Pattern
  67547.  
  67548.  
  67549.  E.7.7  Perform Word Expansions
  67550.  
  67551.  
  67552.  E.7.8  Get POSIX Configurable Variables
  67553.  
  67554.  
  67555.  E.7.9  Locale Control
  67556.  
  67557.  BEGIN_RATIONALE
  67558.  
  67559.  
  67560.  
  67561.  E.8  C Language Development Utilities Option
  67562.  
  67563.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _t_e_x_t _o_f _t_h_e _R_a_t_i_o_n_a_l_e _f_o_r _t_h_i_s _s_e_c_t_i_o_n _h_a_s _b_e_e_n
  67564.  _t_e_m_p_o_r_a_r_i_l_y _l_o_c_a_t_e_d _i_n _A_n_n_e_x _A, _a_d_j_a_c_e_n_t _t_o _t_h_e _t_e_x_t _i_t _i_s _e_x_p_l_a_i_n_i_n_g.
  67565.  _T_h_e _t_e_x_t _w_i_l_l _r_e_t_u_r_n _t_o _t_h_i_s _a_n_n_e_x _a_f_t_e_r _t_h_e _c_o_m_p_l_e_t_i_o_n _o_f _b_a_l_l_o_t_i_n_g.
  67566.  
  67567.  This is the second of the optional utility environments.
  67568.  
  67569.  An implementation must provide all three of these utilities to claim
  67570.  conformance to this section.
  67571.  
  67572.  
  67573.  
  67574.  
  67575.                Copyright c 1991 IEEE.  All rights reserved.
  67576.       This is an unapproved IEEE Standards Draft, subject to change.
  67577.  
  67578.  
  67579.  
  67580.  
  67581.  
  67582.  994                                                 E Rationale and Notes
  67583.  
  67584.  
  67585.  
  67586.  
  67587.  
  67588.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  67589.  
  67590.  See section E.4 for a discussion of utilities excluded from this group.
  67591.  
  67592.  
  67593.  E.8.1  c89 - Compile Standard C programs
  67594.  
  67595.  
  67596.  E.8.2  lex - Generate programs for lexical tasks
  67597.  
  67598.  
  67599.  E.8.3  yacc - Yet another compiler compiler
  67600.  
  67601.  BEGIN_RATIONALE
  67602.  
  67603.  
  67604.  
  67605.  E.9  C Language Bindings Option
  67606.  
  67607.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _t_e_x_t _o_f _t_h_e _R_a_t_i_o_n_a_l_e _f_o_r _t_h_i_s _s_e_c_t_i_o_n _h_a_s _b_e_e_n
  67608.  _t_e_m_p_o_r_a_r_i_l_y _l_o_c_a_t_e_d _i_n _A_n_n_e_x _B, _a_d_j_a_c_e_n_t _t_o _t_h_e _t_e_x_t _i_t _i_s _e_x_p_l_a_i_n_i_n_g.
  67609.  _T_h_e _t_e_x_t _w_i_l_l _r_e_t_u_r_n _t_o _t_h_i_s _a_n_n_e_x _a_f_t_e_r _t_h_e _c_o_m_p_l_e_t_i_o_n _o_f _b_a_l_l_o_t_i_n_g.
  67610.  
  67611.  
  67612.  E.9.1  C Language Definitions
  67613.  
  67614.  
  67615.  E.9.2  C Numerical Limits
  67616.  
  67617.  
  67618.  E.9.3  C Binding for Shell Command Interface
  67619.  
  67620.  
  67621.  E.9.4  C Binding for Access Environment Variables
  67622.  
  67623.  
  67624.  E.9.5  C Binding for Regular Expression Matching
  67625.  
  67626.  
  67627.  E.9.6  C Binding for Match Filename or Pathname
  67628.  
  67629.  
  67630.  E.9.7  C Binding for Command Option Parsing
  67631.  
  67632.  
  67633.  E.9.8  C Binding for Generate Pathnames Matching a Pattern
  67634.  
  67635.  
  67636.  
  67637.  
  67638.  
  67639.  
  67640.  
  67641.                Copyright c 1991 IEEE.  All rights reserved.
  67642.       This is an unapproved IEEE Standards Draft, subject to change.
  67643.  
  67644.  
  67645.  
  67646.  
  67647.  
  67648.  E.9 C Language Bindings Option                                        995
  67649.  
  67650.  
  67651.  
  67652.  
  67653.  
  67654.  P1003.2/D11.2
  67655.  
  67656.  E.9.9  C Binding for Perform Word Expansions
  67657.  
  67658.  
  67659.  E.9.10  C Binding for Get POSIX Configurable Variables
  67660.  
  67661.  
  67662.  E.9.11  C Binding for Locale Control
  67663.  
  67664.  BEGIN_RATIONALE
  67665.  
  67666.  
  67667.  
  67668.  E.10  FORTRAN Development and Runtime Utilities Options
  67669.  
  67670.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_e _t_e_x_t _o_f _t_h_e _R_a_t_i_o_n_a_l_e _f_o_r _t_h_i_s _s_e_c_t_i_o_n _h_a_s _b_e_e_n
  67671.  _t_e_m_p_o_r_a_r_i_l_y _l_o_c_a_t_e_d _i_n _A_n_n_e_x _C, _a_d_j_a_c_e_n_t _t_o _t_h_e _t_e_x_t _i_t _i_s _e_x_p_l_a_i_n_i_n_g.
  67672.  _T_h_e _t_e_x_t _w_i_l_l _r_e_t_u_r_n _t_o _t_h_i_s _a_n_n_e_x _a_f_t_e_r _t_h_e _c_o_m_p_l_e_t_i_o_n _o_f _b_a_l_l_o_t_i_n_g.
  67673.  
  67674.  This is the third and fourth of the optional utility environments.
  67675.  
  67676.  See section E.4 for a discussion of utilities excluded from this group.
  67677.  
  67678.  
  67679.  E.10.1  asa - Interpret carriage control characters
  67680.  
  67681.  
  67682.  E.10.2  fort77 - FORTRAN compiler
  67683.  
  67684.  END_RATIONALE
  67685.  
  67686.  
  67687.  
  67688.  
  67689.  
  67690.  
  67691.  
  67692.  
  67693.  
  67694.  
  67695.  
  67696.  
  67697.  
  67698.  
  67699.  
  67700.  
  67701.  
  67702.  
  67703.  
  67704.  
  67705.  
  67706.  
  67707.                Copyright c 1991 IEEE.  All rights reserved.
  67708.       This is an unapproved IEEE Standards Draft, subject to change.
  67709.  
  67710.  
  67711.  
  67712.  
  67713.  
  67714.  996                                                 E Rationale and Notes
  67715.  
  67716.  
  67717.  
  67718.  
  67719.  
  67720.                                                              P1003.2/D11.2
  67721.  
  67722.  
  67723.  
  67724.  
  67725.  
  67726.  
  67727.                                   Annex F
  67728.                                (informative)
  67729.  
  67730.                           Sample National Profile
  67731.  
  67732.  
  67733.  
  67734.  
  67735.  BEGIN_RATIONALE
  67736.  
  67737.  BEGIN_RATIONALE
  67738.  
  67739.  _E_d_i_t_o_r'_s _N_o_t_e:  _A_l_l _u_s_e_s _o_f _t_h_e _t_e_r_m ``_c_h_a_r_a_c_t_e_r _s_e_t'' _t_h_i_s _a_n_n_e_x _h_a_v_e     _1
  67740.  _b_e_e_n _c_h_a_n_g_e_d _t_o ``_c_o_d_e_d _c_h_a_r_a_c_t_e_r _s_e_t'' _w_i_t_h_o_u_t _f_u_r_t_h_e_r _d_i_f_f _m_a_r_k_s.        _1
  67741.  
  67742.  This annex is an example of a country's needs with respect to this
  67743.  standard and how those needs relate to other international standards as
  67744.  well as national standards.  The example provided is included here for
  67745.  informative purposes and is not a formal standard in the country in
  67746.  question.  It is provided by the Danish Standards Association1) and is as
  67747.  accurate as possible with regards to Danish needs.
  67748.  
  67749.  
  67750.  
  67751.  
  67752.  
  67753.  
  67754.  
  67755.  
  67756.  
  67757.  
  67758.  
  67759.  
  67760.  __________
  67761.   1) Further information may be obtained from the Danish Standards
  67762.      Association, Attn: S142u22A8 Baunegaardsvej 73, DK-2900 Hellerup,      2
  67763.      Denmark; FAX: +45 39 77 02 02; Email: u22a8@dkuug.dk                   2
  67764.  
  67765.      The data is also available electronically by anonymous FTP or FTAM at
  67766.      the site dkuug.dk in the directory i18n, where some other example
  67767.      national profiles, locales, and _c_h_a_r_m_a_p_s may also be found.  They are
  67768.      also available by an archive server reached at archive@dkuug.dk; use
  67769.      ``Subject: help'' for further information.
  67770.  
  67771.  
  67772.  
  67773.                Copyright c 1991 IEEE.  All rights reserved.
  67774.       This is an unapproved IEEE Standards Draft, subject to change.
  67775.  
  67776.  
  67777.  
  67778.  
  67779.  
  67780.  Annex F Sample National Profile                                       997
  67781.  
  67782.  
  67783.  
  67784.  
  67785.  
  67786.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  67787.  
  67788.  F.1  (Example) Danish National Profile                                     2
  67789.  
  67790.  This is the definition of the Danish Standards Association POSIX.2         2
  67791.  profile.  The subset of conforming implementations that provide the        2
  67792.  required characteristics below is referred to as conforming to the         2
  67793.  ``Danish Standards Association (DS) Environment Profile'' for this         2
  67794.  standard.                                                                  2
  67795.  
  67796.  This profile specifies the following requirements on implementations:      2
  67797.  
  67798.      (1)  In POSIX.2 section 2.13.1, the limit {COLL_WEIGHTS_MAX} shall be  2
  67799.           provided with a value of 4.  All other limits shall conform to    2
  67800.           at least the minimum values shown in Table 2-16.                  2
  67801.  
  67802.      (2)  The following options shall be supported according to POSIX.2     2
  67803.           section 2.13.2:                                                   2
  67804.  
  67805.              POSIX2_C_BIND        Optional.                                 2
  67806.  
  67807.              POSIX2_C_DEV         Optional.                                 2
  67808.  
  67809.              POSIX2_FORT_DEV      Optional.                                 2
  67810.  
  67811.              POSIX2_FORT_RUN      Optional.                                 2
  67812.  
  67813.              POSIX2_LOCALEDEF     Required; the system shall support the    2
  67814.                                   creation of locales as described in       2
  67815.                                   4.35.                                     2
  67816.  
  67817.              POSIX2_SW_DEV        Optional.                                 2
  67818.  
  67819.  
  67820.  F.1.1  Danish Locale Model
  67821.  
  67822.  _E_d_i_t_o_r'_s _N_o_t_e:  _T_h_i_s _s_u_b_c_l_a_u_s_e _i_s _o_f_f_e_r_e_d _a_s _r_a_t_i_o_n_a_l_e _f_o_r _t_h_e _c_u_r_r_e_n_t
  67823.  _s_t_a_t_e _o_f _t_h_i_s _e_x_a_m_p_l_e _a_n_n_e_x.  _I_t _w_i_l_l _n_o_t _n_e_c_e_s_s_a_r_i_l_y _a_p_p_e_a_r _i_n _t_h_i_s _f_o_r_m
  67824.  _i_n _a_n_y _f_i_n_a_l _v_e_r_s_i_o_n _o_f _t_h_e _a_n_n_e_x.
  67825.  
  67826.  Creating a national locale for Denmark has been a quite elaborate effort.
  67827.  Time and again, we thought we had reached an agreement on the locale, but
  67828.  then some aspect disrupted the entire work, and we more or less had to
  67829.  start all over.
  67830.  
  67831.  We think we have identified the cause of these problems to a general
  67832.  uncertainty regarding the exact purpose of a ``national'' locale.  If we
  67833.  look at the Danish situation (which we know pretty well by now), we have
  67834.  identified several levels of locales, depending on the ``complexity'' of
  67835.  the collating sequence (or more generally sorting different kinds of
  67836.  text):
  67837.  
  67838.  
  67839.                Copyright c 1991 IEEE.  All rights reserved.
  67840.       This is an unapproved IEEE Standards Draft, subject to change.
  67841.  
  67842.  
  67843.  
  67844.  
  67845.  
  67846.  998                                             F Sample National Profile
  67847.  
  67848.  
  67849.  
  67850.  
  67851.  
  67852.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  67853.  
  67854.      (1)  _B_y_t_e/_m_a_c_h_i_n_e _l_e_v_e_l.  Here everything is sorted according to the
  67855.           character's byte value.
  67856.  
  67857.      (2)  _C_h_a_r_a_c_t_e_r/_u_t_i_l_i_t_y _l_e_v_e_l.  Here we want to work almost on the
  67858.           same level as (1), i.e., character by character, but obeying a
  67859.           (simple) collating sequence that ensures that, for example,
  67860.           upper- and lowercase letters are equivalent, or that national
  67861.           characters are sorted correctly.  The characters still do not
  67862.           have any ``implicit'' meaning, and the comparison of two strings
  67863.           is still deterministic; i.e., strings that are different at
  67864.           level 1 are still different at level 2.
  67865.  
  67866.      (3)  _T_e_x_t/_a_p_p_l_i_c_a_t_i_o_n _l_e_v_e_l.  Here we want to be able to search in
  67867.           text looking for specific words or items.  The comparison is
  67868.           still performed on a character-by-character basis, but possibly
  67869.           ignoring some characters that are not important, and determinism
  67870.           is not important either.
  67871.  
  67872.      (4)  _S_e_m_a_n_t_i_c/_d_i_c_t_i_o_n_a_r_y/_l_i_b_r_a_r_y/_p_h_o_n_e-_b_o_o_k _l_e_v_e_l.  Entire words like
  67873.           ``the'' are omitted from comparisons; maybe soundex is required.
  67874.           This probably requires specially developed software.
  67875.  
  67876.  Our problem has been the conflicting requirements from each of these
  67877.  levels, which we optimistically have tried to combine into a single
  67878.  national locale (ignoring level 4, however).  The POSIX Locale is aimed
  67879.  at level 2; i.e., at a rather low level.  Many of our attempts to write a
  67880.  national Danish locale have failed because we have actually tried to
  67881.  write a level 3 locale, and finding that it did not work as an
  67882.  alternative to the default POSIX locale at level 2.
  67883.  
  67884.  The locale we now provide is the final compromise between level 2 and
  67885.  level 3, by taking our latest attempt aimed at level 3, and make the
  67886.  comparison completely deterministic, and thus bring it down to level 2.
  67887.  
  67888.  We also have found that we may need to include some more information in
  67889.  the identification of a specific locale than just the country code, the
  67890.  language code, and the coded character set, since what we have had most
  67891.  problems with was the purpose or scope of a specific locale; i.e., is it
  67892.  just a nationalized version of the POSIX Locale (e.g., extended with
  67893.  <ae>, <o/>, and <aa> at the proper positions), is it aimed at text search
  67894.  (ignoring certain characters), or is it on an even higher level?  Many
  67895.  such alternative locales would certainly be useful for various classes of
  67896.  problems or applications, so our model for the locale name identification
  67897.  string includes a <_v_e_r_s_i_o_n> parameter.
  67898.  
  67899.  We hope by providing these comments to have clarified our intention with
  67900.  the locale definitions to save other countries from doing our mistakes
  67901.  all over.
  67902.  
  67903.  
  67904.  
  67905.                Copyright c 1991 IEEE.  All rights reserved.
  67906.       This is an unapproved IEEE Standards Draft, subject to change.
  67907.  
  67908.  
  67909.  
  67910.  
  67911.  
  67912.  F.1 (Example) Danish National Profile                                 999
  67913.  
  67914.  
  67915.  
  67916.  
  67917.  
  67918.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  67919.  
  67920.  F.2  Locale String Definition Guideline
  67921.  
  67922.  The following guideline is used for specifying the locale identification
  67923.  string:2)
  67924.  
  67925.        "%2.2s_%2.2s.%s,%s", <_l_a_n_g_u_a_g_e>, <_t_e_r_r_i_t_o_r_y>, <_c_o_d_e_d-_c_h_a_r_a_c_t_e_r-
  67926.        _s_e_t>, <_v_e_r_s_i_o_n>
  67927.  
  67928.  where <_l_a_n_g_u_a_g_e> shall be taken from ISO 639 {B1} and <_t_e_r_r_i_t_o_r_y> shall
  67929.  be the two-letter country code of ISO 3166 {B4}, if possible.  The
  67930.  <_l_a_n_g_u_a_g_e> shall be specified with lowercase letters only, and the
  67931.  <_t_e_r_r_i_t_o_r_y> shall be specified in uppercase letters only.  An optional
  67932.  <_c_o_d_e_d-_c_h_a_r_a_c_t_e_r-_s_e_t> specification may follow after a <period> for the
  67933.  name of the coded character set; if just a numeric specification is
  67934.  present, this shall represent the number of the international standard
  67935.  describing the coded character set.  If the <_c_o_d_e_d-_c_h_a_r_a_c_t_e_r-_s_e_t>
  67936.  specification is not present, the encoded character-set-specific locale
  67937.  shall be determined by the CHARSET environment variable, and if this is
  67938.  unset or null, the encoding of ISO 8859-1 {5} shall be assumed.  A
  67939.  parameter specifying a <_v_e_r_s_i_o_n> of the locale may be placed after the
  67940.  optional <_c_o_d_e_d-_c_h_a_r_a_c_t_e_r-_s_e_t> specification, delimited by <comma>.  This
  67941.  may be used to discriminate between different cultural needs; for
  67942.  instance, dictionary order versus a more systems-oriented collating
  67943.  order.
  67944.  
  67945.  
  67946.  
  67947.  F.3  Scope of Danish National Locale
  67948.  
  67949.  This national locale covers the Danish language in Denmark.  In addition,
  67950.  Faroese and Greenlandic LC_TIME and LC_MESSAGES specifications have been
  67951.  defined; the rest of the Danish national locale shall be used for these
  67952.  locales as well.
  67953.  
  67954.  This locale is designed to be coded character-set independent.  It
  67955.  completely specifies the behavior of systems based on ISO/IEC 10646 {B11}
  67956.  (with ISO 6429 {B5} control character encoding) together with many 7-bit
  67957.  and 8-bit encoded character sets, including ISO 8859 character sets and
  67958.  major vendor-specific 8-bit character sets (with ISO 6429 {B5} or
  67959.  ISO/IEC 646 {1} control character encoding when applicable).
  67960.  
  67961.  This locale is portable as long as the character naming in the charmap
  67962.  description file ISO_10646 for ISO/IEC 10646 {B11} is followed.  Examples
  67963.  of such charmap files for ISO/IEC 10646 {B11} and ISO 8859-1 {5} are
  67964.  shown in F.5.1 and F.5.2.
  67965.  
  67966.  
  67967.  
  67968.  
  67969.  
  67970.  
  67971.                Copyright c 1991 IEEE.  All rights reserved.
  67972.       This is an unapproved IEEE Standards Draft, subject to change.
  67973.  
  67974.  
  67975.  
  67976.  
  67977.  
  67978.  1000                                            F Sample National Profile
  67979.  
  67980.  
  67981.  
  67982.  
  67983.  
  67984.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  67985.  
  67986.  The collating sequence is completely deterministic and is aimed for usage
  67987.  in system tools.  Other Danish collation sequences with nondeterministic
  67988.  properties, which may be needed for some application programs, are not
  67989.  covered by this locale.
  67990.  
  67991.  The LC_TYPE category of the locale is quite general and may be useful for
  67992.  other locales; also the LC_COLLATE category, though specifically Danish,
  67993.  may be a good template from which to generate other locales.
  67994.  
  67995.  Following the preceding guidelines for locale names, the national Danish
  67996.  locale string shall be:
  67997.  
  67998.        da_DK
  67999.  
  68000.  
  68001.  F.3.1  da_DK - (Example) Danish National Locale
  68002.  
  68003.  escape_char     /
  68004.  comment_char    %                                                          1
  68005.  % Danish example national locale for the language Danish                   1
  68006.  % Source: Danish Standards Association                                     1
  68007.  % Revision 1.7 1991-05-07                                                  1
  68008.  
  68009.  LC_CTYPE                                                                   1
  68010.  
  68011.  digit   <0>;<1>;<2>;<3>;<4>;<5>;<6>;<7>;<8>;<9>                            1
  68012.  
  68013.  xdigit  <0>;<1>;<2>;<3>;<4>;<5>;<6>;<7>;<8>;<9>;/                          1
  68014.          <A>;<B>;<C>;<D>;<E>;<F>;<a>;<b>;<c>;<d>;<e>;<f>                    1
  68015.  
  68016.  blank   <SP>;<HT>;<NS>                                                     1
  68017.  
  68018.  space   <SP>;<LF>;<VT>;<FF>;<CR>;<HT>;<NS>                                 1
  68019.  
  68020.  upper   <A>;<B>;<C>;<D>;<E>;<F>;<G>;<H>;<I>;<J>;/                          1
  68021.          <K>;<L>;<M>;<N>;<O>;<P>;<Q>;<R>;<S>;<T>;/                          1
  68022.          <U>;<V>;<W>;<X>;<Y>;<Z>;<A!>;<A'>;<A/>>;<A?>;/                     1
  68023.          <A:>;<AA>;<AE>;<C,>;<E!>;<E'>;<E/>>;<E:>;<I!>;<I'>;/               1
  68024.          <I/>>;<I:>;<D->;<N?>;<O!>;<O'>;<O/>>;<O?>;<O:>;<O//>;/             1
  68025.          <U!>;<U'>;<U/>>;<U:>;<Y'>;<TH>;<A->;<C/>>;<C.>;<E->;/              1
  68026.          <E.>;<G/>>;<G(>;<G.>;<G,>;<H/>>;<I?>;<I->;<I.>;<I;>;/              1
  68027.          <J/>>;<K,>;<H//>;<IJ>;<L.>;<L,>;<N,>;<OE>;<O->;<T//>;/             1
  68028.          <NG>;<A;>;<L//>;<L<>;<S'>;<S/>>;<S<>;<S,>;<T<>;<Z'>;/              1
  68029.          <Z<>;<Z.>;<R'>;<R,>;<A(>;<L'>;<C'>;<C<>;<E;>;<E<>;/                1
  68030.  
  68031.  
  68032.  
  68033.  
  68034.  
  68035.  
  68036.  
  68037.                Copyright c 1991 IEEE.  All rights reserved.
  68038.       This is an unapproved IEEE Standards Draft, subject to change.
  68039.  
  68040.  
  68041.  
  68042.  
  68043.  
  68044.  F.3 Scope of Danish National Locale                                  1001
  68045.  
  68046.  
  68047.  
  68048.  
  68049.  
  68050.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  68051.  
  68052.          <D<>;<D//>;<N'>;<N<>;<U?>;<O">;<U->;<U(>;<R<>;<U0>;/               1
  68053.          <U;>;<U">;<W/>>;<Y/>>;<T,>;<Y:>;<A<>;<A_>;<'A>;<A1>;/
  68054.          <A2>;<A3>;<B.>;<B_>;<D_>;<D.>;<D;>;<E(>;<E_>;<E?>;/
  68055.          <F.>;<G<>;<G->;<G//>;<H:>;<H.>;<H,>;<H;>;<I<>;<I(>;/
  68056.          <J(>;<K'>;<K<>;<K_>;<K.>;<K;>;<L_>;<M'>;<M.>;<N.>;/
  68057.          <N_>;<O<>;<O(>;<O_>;<O;>;<O1>;<P'>;<R.>;<R_>;<S.>;/
  68058.          <S;>;<T_>;<T.>;<U<>;<V?>;<W'>;<W.>;<W:>;<X.>;<X:>;/
  68059.          <Y!>;<Y.>;<Z/>>;<Z(>;<Z_>;<Z//>;<EZ>;<G'>;<'B>;<'D>;/
  68060.          <'G>;<'J>;<'Y>;<ED>;<IO>;<D%>;<G%>;<IE>;<DS>;<II>;/
  68061.          <YI>;<J%>;<LJ>;<NJ>;<Ts>;<KJ>;<V%>;<DZ>;<A=>;<B=>;/
  68062.          <V=>;<G=>;<D=>;<E=>;<Z%>;<Z=>;<I=>;<J=>;<K=>;<L=>;/
  68063.          <M=>;<N=>;<O=>;<P=>;<R=>;<S=>;<T=>;<U=>;<F=>;<H=>;/
  68064.          <C=>;<C%>;<S%>;<Sc>;<=">;<Y=>;<%">;<JE>;<JU>;<JA>;/
  68065.          <I3>;<A%>;<E%>;<Y%>;<I%>;<O%>;<U%>;<W%>;<A*>;<B*>;/
  68066.          <G*>;<D*>;<E*>;<Z*>;<Y*>;<H*>;<I*>;<K*>;<L*>;<M*>;/
  68067.          <N*>;<C*>;<O*>;<P*>;<R*>;<S*>;<T*>;<U*>;<F*>;<X*>;/
  68068.          <Q*>;<W*>;<J*>;<V*>
  68069.  
  68070.  lower   <a>;<b>;<c>;<d>;<e>;<f>;<g>;<h>;<i>;<j>;/
  68071.          <k>;<l>;<m>;<n>;<o>;<p>;<q>;<r>;<s>;<t>;/
  68072.          <u>;<v>;<w>;<x>;<y>;<z>;<ss>;<a!>;<a'>;<a/>>;/
  68073.          <a?>;<a:>;<aa>;<ae>;<c,>;<e!>;<e'>;<e/>>;<e:>;<i!>;/
  68074.          <i'>;<i/>>;<i:>;<d->;<n?>;<o!>;<o'>;<o/>>;<o?>;<o:>;/
  68075.          <o//>;<u!>;<u'>;<u/>>;<u:>;<y'>;<th>;<y:>;<a->;<c/>>;/
  68076.          <c.>;<e->;<e.>;<g/>>;<g(>;<g.>;<g,>;<h/>>;<i?>;<i->;/
  68077.          <'n>;<kk>;<i;>;<j/>>;<k,>;<h//>;<i.>;<ij>;<l.>;<l,>;/
  68078.          <n,>;<oe>;<o->;<t//>;<ng>;<a;>;<l//>;<l<>;<s'>;<s/>>;/
  68079.          <s<>;<s,>;<t<>;<z'>;<z<>;<z.>;<r'>;<r,>;<a(>;<l'>;/
  68080.          <c'>;<c<>;<e;>;<e<>;<d<>;<d//>;<n'>;<n<>;<u?>;<o">;/
  68081.          <u->;<u(>;<r<>;<u0>;<u;>;<u">;<w/>>;<y/>>;<t,>;<a<>;/              1
  68082.          <a_>;<'a>;<a1>;<a2>;<a3>;<b.>;<b_>;<d_>;<d.>;<d;>;/
  68083.          <e(>;<e_>;<e?>;<f.>;<g<>;<g->;<g//>;<h:>;<h.>;<h,>;/
  68084.          <h;>;<i<>;<i(>;<j(>;<k'>;<k<>;<k_>;<k.>;<k;>;<l_>;/
  68085.          <m'>;<m.>;<n.>;<n_>;<o<>;<o(>;<o_>;<o;>;<o1>;<p'>;/
  68086.          <r.>;<r_>;<s.>;<s;>;<t_>;<t.>;<u<>;<v?>;<w'>;<w.>;/
  68087.          <w:>;<x.>;<x:>;<y!>;<y.>;<z/>>;<z(>;<z_>;<z//>;<ez>;/
  68088.          <g'>;<'b>;<'d>;<'g>;<'j>;<'y>;<ed>;<nS>;<sB>;<a=>;/
  68089.          <b=>;<v=>;<g=>;<d=>;<e=>;<z%>;<z=>;<i=>;<j=>;<k=>;/
  68090.          <l=>;<m=>;<n=>;<o=>;<p=>;<r=>;<s=>;<t=>;<u=>;<f=>;/
  68091.          <h=>;<c=>;<c%>;<s%>;<sc>;<='>;<y=>;<%'>;<je>;<ju>;/
  68092.          <ja>;<io>;<d%>;<g%>;<ie>;<ds>;<ii>;<yi>;<j%>;<lj>;/
  68093.          <nj>;<ts>;<kj>;<v%>;<dz>;<a%>;<e%>;<y%>;<i%>;<a*>;/
  68094.          <b*>;<g*>;<d*>;<e*>;<z*>;<y*>;<h*>;<i*>;<k*>;<l*>;/
  68095.          <m*>;<n*>;<c*>;<o*>;<p*>;<r*>;<*s>;<s*>;<t*>;<u*>;/
  68096.  
  68097.  
  68098.  
  68099.  
  68100.  
  68101.  
  68102.  
  68103.                Copyright c 1991 IEEE.  All rights reserved.
  68104.       This is an unapproved IEEE Standards Draft, subject to change.
  68105.  
  68106.  
  68107.  
  68108.  
  68109.  
  68110.  1002                                            F Sample National Profile
  68111.  
  68112.  
  68113.  
  68114.  
  68115.  
  68116.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  68117.  
  68118.          <f*>;<x*>;<q*>;<w*>;<j*>;<v*>;<o%>;<u%>;<w%>;<A5>;/
  68119.          <I5>;<U5>;<E5>;<O5>;<tU>;<yA>;<yU>;<yO>;<wA>;<a6>;/
  68120.          <i6>;<u6>;<e6>;<o6>;<TU>;<YA>;<YU>;<YO>;<WA>;<KA>;/
  68121.          <KE>;<ff>;<fi>;<fl>;<ft>;<st>
  68122.  
  68123.  alpha   <A>;<B>;<C>;<D>;<E>;<F>;<G>;<H>;<I>;<J>;/
  68124.          <K>;<L>;<M>;<N>;<O>;<P>;<Q>;<R>;<S>;<T>;/
  68125.          <U>;<V>;<W>;<X>;<Y>;<Z>;<a>;<b>;<c>;<d>;/
  68126.          <e>;<f>;<g>;<h>;<i>;<j>;<k>;<l>;<m>;<n>;/
  68127.          <o>;<p>;<q>;<r>;<s>;<t>;<u>;<v>;<w>;<x>;/
  68128.          <y>;<z>;<-->;<A!>;<A'>;<A/>>;<A?>;<A:>;<AA>;<AE>;/
  68129.          <C,>;<E!>;<E'>;<E/>>;<E:>;<I!>;<I'>;<I/>>;<I:>;<D->;/
  68130.          <N?>;<O!>;<O'>;<O/>>;<O?>;<O:>;<O//>;<U!>;<U'>;<U/>>;/
  68131.          <U:>;<Y'>;<TH>;<ss>;<a!>;<a'>;<a/>>;<a?>;<a:>;<aa>;/
  68132.          <ae>;<c,>;<e!>;<e'>;<e/>>;<e:>;<i!>;<i'>;<i/>>;<i:>;/
  68133.          <d->;<n?>;<o!>;<o'>;<o/>>;<o?>;<o:>;<o//>;<u!>;<u'>;/
  68134.          <u/>>;<u:>;<y'>;<th>;<y:>;<A->;<C/>>;<C.>;<E->;<E.>;/
  68135.          <G/>>;<G(>;<a->;<c/>>;<c.>;<e->;<e.>;<g/>>;<g(>;<G.>;/
  68136.          <G,>;<H/>>;<I?>;<I->;<I.>;<g.>;<g,>;<h/>>;<i?>;<i->;/
  68137.          <I;>;<J/>>;<K,>;<H//>;<IJ>;<L.>;<L,>;<N,>;<OE>;<O->;/
  68138.          <T//>;<NG>;<'n>;<kk>;<i;>;<j/>>;<k,>;<h//>;<i.>;<ij>;/
  68139.          <l.>;<l,>;<n,>;<oe>;<o->;<t//>;<ng>;<A;>;<L//>;<L<>;/
  68140.          <S'>;<S/>>;<S<>;<S,>;<T<>;<Z'>;<Z<>;<Z.>;<a;>;<l//>;/
  68141.          <l<>;<s'>;<s/>>;<s<>;<s,>;<t<>;<z'>;<z<>;<z.>;<R'>;/
  68142.          <R,>;<A(>;<L'>;<C'>;<C<>;<E;>;<E<>;<D<>;<D//>;<N'>;/
  68143.          <N<>;<U?>;<O">;<U->;<U(>;<R<>;<U0>;<U;>;<U">;<W/>>;/               1
  68144.          <Y/>>;<T,>;<Y:>;<r'>;<r,>;<a(>;<l'>;<c'>;<c<>;<e;>;/
  68145.          <e<>;<d<>;<d//>;<n'>;<n<>;<u?>;<o">;<u->;<u(>;<r<>;/
  68146.          <u0>;<u;>;<u">;<w/>>;<y/>>;<t,>;<a<>;<A<>;<a_>;<A_>;/              1
  68147.          <'a>;<'A>;<a1>;<A1>;<a2>;<A2>;<a3>;<A3>;<b.>;<B.>;/
  68148.          <b_>;<B_>;<d_>;<D_>;<d.>;<D.>;<d;>;<D;>;<e(>;<E(>;/
  68149.          <e_>;<E_>;<e?>;<E?>;<f.>;<F.>;<g<>;<G<>;<g->;<G->;/
  68150.          <g//>;<G//>;<h:>;<H:>;<h.>;<H.>;<h,>;<H,>;<h;>;<H;>;/
  68151.          <i<>;<I<>;<i(>;<I(>;<j(>;<J(>;<k'>;<K'>;<k<>;<K<>;/
  68152.          <k_>;<K_>;<k.>;<K.>;<k;>;<K;>;<l_>;<L_>;<m'>;<M'>;/
  68153.          <m.>;<M.>;<n.>;<N.>;<n_>;<N_>;<o<>;<O<>;<o(>;<O(>;/
  68154.          <o_>;<O_>;<o;>;<O;>;<o1>;<O1>;<p'>;<P'>;<r.>;<R.>;/
  68155.          <r_>;<R_>;<s.>;<S.>;<s;>;<S;>;<t_>;<T_>;<t.>;<T.>;/
  68156.          <u<>;<U<>;<v?>;<V?>;<w'>;<W'>;<w.>;<W.>;<w:>;<W:>;/
  68157.          <x.>;<X.>;<x:>;<X:>;<y!>;<Y!>;<y.>;<Y.>;<z/>>;<Z/>>;/
  68158.          <z(>;<Z(>;<z_>;<Z_>;<z//>;<Z//>;<ez>;<EZ>;<g'>;<G'>;/
  68159.          <'b>;<'B>;<'d>;<'D>;<'g>;<'G>;<'j>;<'J>;<'y>;<'Y>;/
  68160.          <ed>;<ED>;<nS>;<IO>;<D%>;<G%>;<IE>;<DS>;<II>;<YI>;/
  68161.          <J%>;<LJ>;<NJ>;<Ts>;<KJ>;<V%>;<DZ>;<A=>;<B=>;<V=>;/
  68162.  
  68163.  
  68164.  
  68165.  
  68166.  
  68167.  
  68168.  
  68169.                Copyright c 1991 IEEE.  All rights reserved.
  68170.       This is an unapproved IEEE Standards Draft, subject to change.
  68171.  
  68172.  
  68173.  
  68174.  
  68175.  
  68176.  F.3 Scope of Danish National Locale                                  1003
  68177.  
  68178.  
  68179.  
  68180.  
  68181.  
  68182.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  68183.  
  68184.          <G=>;<D=>;<E=>;<Z%>;<Z=>;<I=>;<J=>;<K=>;<L=>;<M=>;/
  68185.          <N=>;<O=>;<P=>;<R=>;<S=>;<T=>;<U=>;<F=>;<H=>;<C=>;/
  68186.          <C%>;<S%>;<Sc>;<=">;<Y=>;<%">;<JE>;<JU>;<JA>;<a=>;/
  68187.          <b=>;<v=>;<g=>;<d=>;<e=>;<z%>;<z=>;<i=>;<j=>;<k=>;/
  68188.          <l=>;<m=>;<n=>;<o=>;<p=>;<r=>;<s=>;<t=>;<u=>;<f=>;/
  68189.          <h=>;<c=>;<c%>;<s%>;<sc>;<='>;<y=>;<%'>;<je>;<ju>;/
  68190.          <ja>;<io>;<d%>;<g%>;<ie>;<ds>;<ii>;<yi>;<j%>;<lj>;/
  68191.          <nj>;<ts>;<kj>;<v%>;<dz>;<I3>;<A%>;<E%>;<Y%>;<I%>;/
  68192.          <O%>;<U%>;<W%>;<A*>;<B*>;<G*>;<D*>;<E*>;<Z*>;<Y*>;/
  68193.          <H*>;<I*>;<K*>;<L*>;<M*>;<N*>;<C*>;<O*>;<P*>;<R*>;/
  68194.          <S*>;<T*>;<U*>;<F*>;<X*>;<Q*>;<W*>;<J*>;<V*>;<a%>;/
  68195.          <e%>;<y%>;<i%>;<a*>;<b*>;<g*>;<d*>;<e*>;<z*>;<y*>;/
  68196.          <h*>;<i*>;<k*>;<l*>;<m*>;<n*>;<c*>;<o*>;<p*>;<r*>;/
  68197.          <*s>;<s*>;<t*>;<u*>;<f*>;<x*>;<q*>;<w*>;<j*>;<v*>;/
  68198.          <o%>;<u%>;<w%>;<p+>;<v+>;<gf>;<H'>;<aM>;<aH>;<wH>;/
  68199.          <ah>;<yH>;<a+>;<b+>;<tm>;<t+>;<tk>;<g+>;<hk>;<x+>;/
  68200.          <d+>;<dk>;<r+>;<z+>;<s+>;<sn>;<c+>;<dd>;<tj>;<zH>;/
  68201.          <e+>;<i+>;<f+>;<q+>;<k+>;<l+>;<m+>;<n+>;<h+>;<w+>;/
  68202.          <j+>;<y+>;<A+>;<B+>;<G+>;<D+>;<H+>;<W+>;<Z+>;<X+>;/
  68203.          <Tj>;<J+>;<K%>;<K+>;<L+>;<M%>;<M+>;<N%>;<N+>;<S+>;/
  68204.          <E+>;<P%>;<P+>;<Zj>;<ZJ>;<Q+>;<R+>;<Sh>;<T+>;<b4>;/
  68205.          <p4>;<m4>;<f4>;<d4>;<t4>;<n4>;<l4>;<g4>;<k4>;<h4>;/
  68206.          <j4>;<q4>;<x4>;<zh>;<ch>;<sh>;<r4>;<z4>;<c4>;<s4>;/
  68207.          <a4>;<o4>;<e4>;<eh>;<ai>;<ei>;<au>;<ou>;<an>;<en>;/
  68208.          <aN>;<eN>;<er>;<i4>;<u4>;<iu>;<A5>;<a5>;<I5>;<i5>;/
  68209.          <U5>;<u5>;<E5>;<e5>;<O5>;<o5>;<ka>;<ga>;<ki>;<gi>;/
  68210.          <ku>;<gu>;<ke>;<ge>;<ko>;<go>;<sa>;<za>;<si>;<zi>;/
  68211.          <su>;<zu>;<se>;<ze>;<so>;<zo>;<ta>;<da>;<ti>;<di>;/
  68212.          <tU>;<tu>;<du>;<te>;<de>;<to>;<do>;<na>;<ni>;<nu>;/
  68213.          <ne>;<no>;<ha>;<ba>;<pa>;<hi>;<bi>;<pi>;<hu>;<bu>;/
  68214.          <pu>;<he>;<be>;<pe>;<ho>;<bo>;<po>;<ma>;<mi>;<mu>;/
  68215.          <me>;<mo>;<yA>;<ya>;<yU>;<yu>;<yO>;<yo>;<ra>;<ri>;/
  68216.          <ru>;<re>;<ro>;<wA>;<wa>;<wi>;<we>;<wo>;<n5>;<a6>;/
  68217.          <A6>;<i6>;<I6>;<u6>;<U6>;<e6>;<E6>;<o6>;<O6>;<Ka>;/
  68218.          <Ga>;<Ki>;<Gi>;<Ku>;<Gu>;<Ke>;<Ge>;<Ko>;<Go>;<Sa>;/
  68219.          <Za>;<Si>;<Zi>;<Su>;<Zu>;<Se>;<Ze>;<So>;<Zo>;<Ta>;/
  68220.          <Da>;<Ti>;<Di>;<TU>;<Tu>;<Du>;<Te>;<De>;<To>;<Do>;/
  68221.          <Na>;<Ni>;<Nu>;<Ne>;<No>;<Ha>;<Ba>;<Pa>;<Hi>;<Bi>;/                1
  68222.          <Pi>;<Hu>;<Bu>;<Pu>;<He>;<Be>;<Pe>;<Ho>;<Bo>;<Po>;/                1
  68223.          <Ma>;<Mi>;<Mu>;<Me>;<Mo>;<YA>;<Ya>;<YU>;<Yu>;<YO>;/
  68224.          <Yo>;<Ra>;<Ri>;<Ru>;<Re>;<Ro>;<WA>;<Wa>;<Wi>;<We>;/
  68225.          <Wo>;<N6>;<Vu>;<KA>;<KE>;<ff>;<fi>;<fl>;<ft>;<st>;/
  68226.          <yf>
  68227.  
  68228.  
  68229.  
  68230.  
  68231.  
  68232.  
  68233.  
  68234.  
  68235.                Copyright c 1991 IEEE.  All rights reserved.
  68236.       This is an unapproved IEEE Standards Draft, subject to change.
  68237.  
  68238.  
  68239.  
  68240.  
  68241.  
  68242.  1004                                            F Sample National Profile
  68243.  
  68244.  
  68245.  
  68246.  
  68247.  
  68248.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  68249.  
  68250.  cntrl   <NU>;<SH>;<SX>;<EX>;<ET>;<EQ>;<AK>;<BL>;<BS>;<HT>;/
  68251.          <LF>;<VT>;<FF>;<CR>;<SO>;<SI>;<DL>;<D1>;<D2>;<D3>;/
  68252.          <D4>;<NK>;<SY>;<EB>;<CN>;<EM>;<SB>;<EC>;<FS>;<GS>;/
  68253.          <RS>;<US>;<DT>;<PA>;<HO>;<BH>;<NH>;<IN>;<NL>;<SA>;/
  68254.          <ES>;<HS>;<HJ>;<VS>;<PD>;<PU>;<RI>;<S2>;<S3>;<DC>;/
  68255.          <P1>;<P2>;<TS>;<CC>;<MW>;<SG>;<EG>;<SS>;<GC>;<SC>;/
  68256.          <CI>;<ST>;<OC>;<PM>;<AC>
  68257.  
  68258.  punct   <!>;<">;<Nb>;<DO>;<%>;<&>;<'>;<(>;<)>;<*>;/
  68259.          <+>;<,>;<->;<.>;<//>;<:>;<;>;<<>;<=>;</>>;/
  68260.          <?>;<At>;<<(>;<////>;<)/>>;<'/>>;<_>;<'!>;<(!>;<!!>;/
  68261.          <!)>;<'?>;<!I>;<Ct>;<Pd>;<Cu>;<Ye>;<BB>;<SE>;<':>;/
  68262.          <Co>;<-a>;<<<>;<NO>;<Rg>;<'->;<DG>;<+->;<2S>;<3S>;/
  68263.          <''>;<My>;<PI>;<.M>;<',>;<1S>;<-o>;</>/>>;<14>;<12>;/
  68264.          <34>;<?I>;<*X>;<-:>;<'6>;<"6>;<<->;<-!>;<-/>>;<-v>;/
  68265.          <'9>;<"9>;<'0>;<HB>;<TM>;<Md>;<18>;<38>;<58>;<78>;/
  68266.          <Om>;<'(>;<';>;<'<>;<'">;<'.>;<;S>;<Vs>;<1M>;<1N>;/
  68267.          <3M>;<4M>;<6M>;<1H>;<1T>;<-1>;<-N>;<-2>;<-M>;<-3>;/
  68268.          <'1>;<'2>;<'3>;<9'>;<9">;<.9>;<:9>;<<1>;</>1>;<<//>;/
  68269.          <///>>;<15>;<25>;<35>;<45>;<16>;<13>;<23>;<56>;<*->;/
  68270.          <//->;<//=>;<-X>;<%0>;<co>;<PO>;<Rx>;<AO>;<oC>;<Ml>;/
  68271.          <Fm>;<Tl>;<TR>;<MX>;<Mb>;<Mx>;<XX>;<OK>;<M2>;<!2>;/
  68272.          <=2>;<Ca>;<..>;<.3>;<:3>;<.:>;<:.>;<-+>;<!=>;<=3>;/
  68273.          <?1>;<?2>;<?->;<?=>;<=<>;</>=>;<0(>;<00>;<PP>;<-T>;/
  68274.          <-L>;<-V>;<AN>;<OR>;<.P>;<dP>;<f(>;<In>;<Io>;<RT>;/
  68275.          <*P>;<+Z>;<FA>;<TE>;<GF>;<DE>;<NB>;<(U>;<)U>;<(C>;/
  68276.          <)C>;<(_>;<)_>;<(->;<-)>;<</>>;<UD>;<Ub>;<<=>;<=/>>;/
  68277.          <==>;<//0>;<OL>;<0u>;<0U>;<SU>;<0:>;<OS>;<fS>;<Or>;/
  68278.          <SR>;<uT>;<UT>;<dT>;<Dt>;<PL>;<PR>;<*1>;<*2>;<VV>;/
  68279.          <HH>;<DR>;<LD>;<UR>;<UL>;<VR>;<VL>;<DH>;<UH>;<VH>;/
  68280.          <TB>;<LB>;<FB>;<sB>;<EH>;<vv>;<hh>;<dr>;<dl>;<ur>;/
  68281.          <ul>;<vr>;<vl>;<dh>;<uh>;<vh>;<.S>;<:S>;<?S>;<lB>;/
  68282.          <RB>;<cC>;<cD>;<Dr>;<Dl>;<Ur>;<Ul>;<Vr>;<Vl>;<dH>;/
  68283.          <uH>;<vH>;<Ob>;<Sb>;<Sn>;<Pt>;<NI>;<cH>;<cS>;<dR>;/
  68284.          <dL>;<uR>;<uL>;<vR>;<vL>;<Dh>;<Uh>;<Vh>;<0m>;<0M>;/
  68285.          <Ic>;<SM>;<CG>;<Ci>;<(A>;</>V>;<!<>;<<*>;<!/>>;<*/>>;/
  68286.          <<7>;<7<>;</>7>;<7/>>;<I2>;<0.>;<HI>;<::>;<FD>;<LZ>;/
  68287.          <BD>;<1R>;<2R>;<3R>;<4R>;<5R>;<6R>;<7R>;<8R>;<9R>;/
  68288.          <aR>;<bR>;<cR>;<N0>;<i3>;<;;>;<,,>;<!*>;<?*>;<;'>;/
  68289.          <,'>;<;!>;<,!>;<?;>;<?,>;<!:>;<?:>;<'%>;<,+>;<;+>;/
  68290.          <?+>;<++>;<:+>;<"+>;<=+>;<//+>;<'+>;<1+>;<3+>;<0+>;/
  68291.          <IS>;<,_>;<._>;<+">;<+_>;<*_>;<;_>;<0_>;<<+>;</>+>;/
  68292.          <<'>;</>'>;<<">;</>">;<(">;<)">;<=//>;<=_>;<('>;<)'>;/
  68293.          <KM>;<"5>;<05>;<*5>;<+5>;<-6>;<*6>;<+6>;<Iu>;<Il>;/
  68294.  
  68295.  
  68296.  
  68297.  
  68298.  
  68299.  
  68300.  
  68301.                Copyright c 1991 IEEE.  All rights reserved.
  68302.       This is an unapproved IEEE Standards Draft, subject to change.
  68303.  
  68304.  
  68305.  
  68306.  
  68307.  
  68308.  F.3 Scope of Danish National Locale                                  1005
  68309.  
  68310.  
  68311.  
  68312.  
  68313.  
  68314.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  68315.  
  68316.          <__>;<"!>;<"'>;<"/>>;<"?>;<"->;<"(>;<".>;<":>;<"//>;/              1
  68317.          <"0>;<",>;<"_>;<"">;<"<>;<";>;<"=>;<"1>;<"2>;<Fd>;/
  68318.          <Bd>;<Fl>;<Li>;<//f>;<0s>;<1s>;<2s>;<3s>;<4s>;<5s>;/
  68319.          <6s>;<7s>;<8s>;<9s>;<0S>;<4S>;<5S>;<6S>;<7S>;<8S>;/
  68320.          <9S>;<+S>;<-S>;<1h>;<2h>;<3h>;<4h>;<1j>;<2j>;<3j>;/
  68321.          <4j>;<UA>;<UB>;<yr>;<.6>;<<6>;</>6>;<,6>;<&6>;<(S>;/
  68322.          <)S>
  68323.  
  68324.  tolower (<'A>,<'a>); (<'B>,<'b>); (<'D>,<'d>); (<'G>,<'g>); (<'J>,<'j>);/
  68325.          (<'Y>,<'y>); (<A>,<a>); (<A!>,<a!>); (<A'>,<a'>); (<A(>,<a(>);/    1
  68326.          (<A->,<a->); (<A1>,<a1>); (<A2>,<a2>); (<A3>,<a3>); (<A:>,<a:>);/
  68327.          (<A;>,<a;>); (<A<>,<a<>); (<A/>>,<a/>>); (<A?>,<a?>); (<AA>,<aa>);/
  68328.          (<AE>,<ae>); (<A_>,<a_>); (<B>,<b>); (<B.>,<b.>); (<B_>,<b_>);/
  68329.          (<C>,<c>); (<C'>,<c'>); (<C,>,<c,>); (<C.>,<c.>); (<C<>,<c<>);/
  68330.          (<C/>>,<c/>>); (<D>,<d>); (<D->,<d->); (<D.>,<d.>); (<D//>,<d//>);/
  68331.          (<D;>,<d;>); (<D<>,<d<>); (<D_>,<d_>); (<E>,<e>); (<E!>,<e!>);/
  68332.          (<E'>,<e'>); (<E(>,<e(>); (<E->,<e->); (<E.>,<e.>); (<E:>,<e:>);/
  68333.          (<E;>,<e;>); (<E<>,<e<>); (<E/>>,<e/>>); (<E?>,<e?>); (<ED>,<ed>);/
  68334.          (<EZ>,<ez>); (<E_>,<e_>); (<F>,<f>); (<F.>,<f.>);/
  68335.          (<G>,<ft>); (<G'>,<g'>); (<G(>,<g(>); (<G,>,<g,>);/
  68336.          (<G->,<g->); (<G.>,<g.>); (<G//>,<g//>); (<G<>,<g<>); (<G/>>,<g/>>);/
  68337.          (<H>,<h>); (<H,>,<h,>); (<H.>,<h.>); (<H//>,<h//>); (<H:>,<h:>);/
  68338.          (<H;>,<h;>); (<H/>>,<h/>>); (<I>,<i>); (<I!>,<i!>); (<I'>,<i'>);/
  68339.          (<I(>,<i(>); (<I->,<i->); (<I.>,<i.>); (<I:>,<i:>); (<I;>,<i;>);/
  68340.          (<I<>,<i<>); (<I/>>,<i/>>); (<I?>,<i?>); (<IJ>,<ij>); (<J>,<j>);/
  68341.          (<J(>,<j(>); (<J/>>,<j/>>); (<K>,<k>); (<K'>,<k'>); (<K,>,<k,>);/
  68342.          (<K.>,<k.>); (<K;>,<k;>); (<K<>,<k<>); (<K_>,<k_>);/
  68343.          (<L>,<l>); (<L'>,<l'>); (<L,>,<l,>); (<L.>,<l.>); (<L//>,<l//>);/
  68344.          (<L<>,<l<>); (<L_>,<l_>); (<M>,<m>); (<M'>,<m'>); (<M.>,<m.>);/
  68345.          (<N>,<n>); (<N'>,<n'>); (<N,>,<n,>); (<N.>,<n.>); (<N<>,<n<>);/
  68346.          (<N?>,<n?>); (<NG>,<ng>); (<N_>,<n_>); (<O>,<o>); (<O!>,<o!>);/
  68347.          (<O">,<o">); (<O'>,<o'>); (<O(>,<o(>); (<O->,<o->); (<O//>,<o//>);/
  68348.          (<O1>,<o1>); (<O:>,<o:>); (<O;>,<o;>); (<O<>,<o<>); (<O/>>,<o/>>);/
  68349.          (<O?>,<o?>); (<OE>,<oe>); (<O_>,<o_>); (<P>,<p>); (<P'>,<p'>);/
  68350.          (<Q>,<q>); (<R>,<r>); (<R'>,<r'>); (<R,>,<r,>); (<R.>,<r.>);/
  68351.          (<R<>,<r<>); (<R_>,<r_>); (<S>,<s>); (<S'>,<s'>); (<S,>,<s,>);/
  68352.          (<S.>,<s.>); (<S;>,<s;>); (<S<>,<s<>); (<S/>>,<s/>>); (<T>,<st>);/
  68353.          (<T,>,<t>); (<T.>,<t.>); (<T//>,<t//>); (<T<>,<t<>);/
  68354.          (<TH>,<th>); (<T_>,<t_>); (<U>,<u>); (<U!>,<u!>); (<U">,<u">);/
  68355.          (<U'>,<u'>); (<U(>,<u(>); (<U->,<u->); (<U0>,<u0>); (<U:>,<u:>);/  1
  68356.          (<U;>,<u;>); (<U<>,<u<>); (<U/>>,<u/>>); (<U?>,<u?>); (<V>,<v>);/
  68357.          (<V?>,<v?>); (<W>,<w>); (<W'>,<w'>); (<W.>,<w.>); (<W:>,<w:>);/
  68358.          (<W/>>,<w/>>); (<X>,<x>); (<X.>,<x.>); (<X:>,<x:>); (<Y>,<y>);/
  68359.          (<Y!>,<y!>); (<Y'>,<y'>); (<Y.>,<y.>); (<Y:>,<y:>); (<Y/>>,<y/>>);/
  68360.  
  68361.  
  68362.  
  68363.  
  68364.  
  68365.  
  68366.  
  68367.                Copyright c 1991 IEEE.  All rights reserved.
  68368.       This is an unapproved IEEE Standards Draft, subject to change.
  68369.  
  68370.  
  68371.  
  68372.  
  68373.  
  68374.  1006                                            F Sample National Profile
  68375.  
  68376.  
  68377.  
  68378.  
  68379.  
  68380.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  68381.  
  68382.          (<Z>,<z>); (<Z'>,<z'>); (<Z(>,<z(>); (<Z.>,<z.>); (<Z//>,<z//>);/
  68383.          (<Z<>,<z<>); (<Z/>>,<z/>>); (<Z_>,<z_>); (<%">,<%'>); (<=">,<='>);/
  68384.          (<A=>,<a=>); (<B=>,<b=>); (<C%>,<c%>); (<C=>,<c=>); (<D%>,<d%>);/
  68385.          (<D=>,<d=>); (<DS>,<ds>); (<DZ>,<dz>); (<E=>,<e=>); (<F=>,<f=>);/
  68386.          (<G%>,<g%>); (<G=>,<g=>); (<H=>,<h=>); (<I=>,<i=>); (<IE>,<ie>);/
  68387.          (<II>,<ii>); (<IO>,<io>); (<J%>,<j%>); (<J=>,<j=>); (<JA>,<ja>);/
  68388.          (<JE>,<je>); (<JU>,<ju>); (<K=>,<k=>); (<KJ>,<kj>); (<L=>,<l=>);/
  68389.          (<LJ>,<lj>); (<M=>,<m=>); (<N=>,<n=>); (<NJ>,<nj>); (<O=>,<o=>);/
  68390.          (<P=>,<p=>); (<R=>,<r=>); (<S%>,<s%>); (<S=>,<s=>); (<Sc>,<sc>);/
  68391.          (<T=>,<t=>); (<Ts>,<ts>); (<U=>,<u=>); (<V=>,<v=>); (<Y=>,<y=>);/
  68392.          (<YI>,<yi>); (<Z%>,<z%>); (<Z=>,<z=>); (<A%>,<a%>); (<A*>,<a*>);/
  68393.          (<B*>,<b*>); (<C*>,<c*>); (<D*>,<d*>); (<E%>,<e%>); (<E*>,<e*>);/
  68394.          (<F*>,<f*>); (<G*>,<g*>); (<H*>,<h*>); (<I%>,<i%>); (<I*>,<i*>);/
  68395.          (<J*>,<j*>); (<K*>,<k*>); (<L*>,<l*>); (<M*>,<m*>); (<N*>,<n*>);/
  68396.          (<O%>,<o%>); (<O*>,<o*>); (<P*>,<p*>); (<Q*>,<q*>); (<R*>,<r*>);/
  68397.          (<S*>,<s*>); (<T*>,<t*>); (<U%>,<u%>); (<U*>,<u*>); (<V*>,<v*>);/
  68398.          (<W%>,<w%>); (<W*>,<w*>); (<X*>,<x*>); (<Y%>,<y%>); (<Y*>,<y*>);/
  68399.          (<Z*>,<z*>)
  68400.  
  68401.  toupper (<'a>,<'A>); (<'b>,<'B>); (<'d>,<'D>); (<'g>,<'G>); (<'j>,<'J>);/
  68402.          (<'y>,<'Y>); (<a>,<A>); (<a!>,<A!>); (<a'>,<A'>); (<a(>,<A(>);/    1
  68403.          (<a->,<A->); (<a1>,<A1>); (<a2>,<A2>); (<a3>,<A3>); (<a:>,<A:>);/
  68404.          (<a;>,<A;>); (<a<>,<A<>); (<a/>>,<A/>>); (<a?>,<A?>); (<aa>,<AA>);/
  68405.          (<ae>,<AE>); (<a_>,<A_>); (<b>,<B>); (<b.>,<B.>); (<b_>,<B_>);/
  68406.          (<c>,<C>); (<c'>,<C'>); (<c,>,<C,>); (<c.>,<C.>); (<c<>,<C<>);/
  68407.          (<c/>>,<C/>>); (<d>,<D>); (<d->,<D->); (<d.>,<D.>); (<d//>,<D//>);/
  68408.          (<d;>,<D;>); (<d<>,<D<>); (<d_>,<D_>); (<e>,<E>); (<e!>,<E!>);/
  68409.          (<e'>,<E'>); (<e(>,<E(>); (<e->,<E->); (<e.>,<E.>); (<e:>,<E:>);/
  68410.          (<e;>,<E;>); (<e<>,<E<>); (<e/>>,<E/>>); (<e?>,<E?>); (<ed>,<ED>);/
  68411.          (<ez>,<EZ>); (<e_>,<E_>); (<f>,<F>); (<f.>,<F.>);/
  68412.          (<ft>,<G>); (<g'>,<G'>); (<g(>,<G(>); (<g,>,<G,>);/
  68413.          (<g->,<G->); (<g.>,<G.>); (<g//>,<G//>); (<g<>,<G<>); (<g/>>,<G/>>);/
  68414.          (<h>,<H>); (<h,>,<H,>); (<h.>,<H.>); (<h//>,<H//>); (<h:>,<H:>);/
  68415.          (<h;>,<H;>); (<h/>>,<H/>>); (<i>,<I>); (<i!>,<I!>); (<i'>,<I'>);/
  68416.          (<i(>,<I(>); (<i->,<I->); (<i.>,<I.>); (<i:>,<I:>); (<i;>,<I;>);/
  68417.          (<i<>,<I<>); (<i/>>,<I/>>); (<i?>,<I?>); (<ij>,<IJ>); (<j>,<J>);/
  68418.          (<j(>,<J(>); (<j/>>,<J/>>); (<k>,<K>); (<k'>,<K'>); (<k,>,<K,>);/
  68419.          (<k.>,<K.>); (<k;>,<K;>); (<k<>,<K<>); (<k_>,<K_>);/
  68420.          (<l>,<L>); (<l'>,<L'>); (<l,>,<L,>); (<l.>,<L.>); (<l//>,<L//>);/
  68421.          (<l<>,<L<>); (<l_>,<L_>); (<m>,<M>); (<m'>,<M'>); (<m.>,<M.>);/
  68422.          (<n>,<N>); (<n'>,<N'>); (<n,>,<N,>); (<n.>,<N.>); (<n<>,<N<>);/
  68423.          (<n?>,<N?>); (<ng>,<NG>); (<n_>,<N_>); (<o>,<O>); (<o!>,<O!>);/
  68424.          (<o">,<O">); (<o'>,<O'>); (<o(>,<O(>); (<o->,<O->); (<o//>,<O//>);/
  68425.          (<o1>,<O1>); (<o:>,<O:>); (<o;>,<O;>); (<o<>,<O<>); (<o/>>,<O/>>);/
  68426.  
  68427.  
  68428.  
  68429.  
  68430.  
  68431.  
  68432.  
  68433.                Copyright c 1991 IEEE.  All rights reserved.
  68434.       This is an unapproved IEEE Standards Draft, subject to change.
  68435.  
  68436.  
  68437.  
  68438.  
  68439.  
  68440.  F.3 Scope of Danish National Locale                                  1007
  68441.  
  68442.  
  68443.  
  68444.  
  68445.  
  68446.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  68447.  
  68448.          (<o?>,<O?>); (<oe>,<OE>); (<o_>,<O_>); (<p>,<P>); (<p'>,<P'>);/
  68449.          (<q>,<Q>); (<r>,<R>); (<r'>,<R'>); (<r,>,<R,>); (<r.>,<R.>);/
  68450.          (<r<>,<R<>); (<r_>,<R_>); (<s>,<S>); (<s'>,<S'>); (<s,>,<S,>);/
  68451.          (<s.>,<S.>); (<s;>,<S;>); (<s<>,<S<>); (<s/>>,<S/>>); (<st>,<T>);/
  68452.          (<t>,<T,>); (<t.>,<T.>); (<t//>,<T//>); (<t<>,<T<>);/
  68453.          (<th>,<TH>); (<t_>,<T_>); (<u>,<U>); (<u!>,<U!>); (<u">,<U">);/
  68454.          (<u'>,<U'>); (<u(>,<U(>); (<u->,<U->); (<u0>,<U0>); (<u:>,<U:>);/  1
  68455.          (<u;>,<U;>); (<u<>,<U<>); (<u/>>,<U/>>); (<u?>,<U?>); (<v>,<V>);/
  68456.          (<v?>,<V?>); (<w>,<W>); (<w'>,<W'>); (<w.>,<W.>); (<w:>,<W:>);/
  68457.          (<w/>>,<W/>>); (<x>,<X>); (<x.>,<X.>); (<x:>,<X:>); (<y>,<Y>);/
  68458.          (<y!>,<Y!>); (<y'>,<Y'>); (<y.>,<Y.>); (<y:>,<Y:>); (<y/>>,<Y/>>);/
  68459.          (<z>,<Z>); (<z'>,<Z'>); (<z(>,<Z(>); (<z.>,<Z.>); (<z//>,<Z//>);/
  68460.          (<z<>,<Z<>); (<z/>>,<Z/>>); (<z_>,<Z_>); (<%'>,<%">); (<='>,<=">);/
  68461.          (<a=>,<A=>); (<b=>,<B=>); (<c%>,<C%>); (<c=>,<C=>); (<d%>,<D%>);/
  68462.          (<d=>,<D=>); (<ds>,<DS>); (<dz>,<DZ>); (<e=>,<E=>); (<f=>,<F=>);/
  68463.          (<g%>,<G%>); (<g=>,<G=>); (<h=>,<H=>); (<i=>,<I=>); (<ie>,<IE>);/
  68464.          (<ii>,<II>); (<io>,<IO>); (<j%>,<J%>); (<j=>,<J=>); (<ja>,<JA>);/
  68465.          (<je>,<JE>); (<ju>,<JU>); (<k=>,<K=>); (<kj>,<KJ>); (<l=>,<L=>);/
  68466.          (<lj>,<LJ>); (<m=>,<M=>); (<n=>,<N=>); (<nj>,<NJ>); (<o=>,<O=>);/
  68467.          (<p=>,<P=>); (<r=>,<R=>); (<s%>,<S%>); (<s=>,<S=>); (<sc>,<Sc>);/
  68468.          (<t=>,<T=>); (<ts>,<Ts>); (<u=>,<U=>); (<v=>,<V=>); (<y=>,<Y=>);/
  68469.          (<yi>,<YI>); (<z%>,<Z%>); (<z=>,<Z=>); (<a%>,<A%>); (<a*>,<A*>);/
  68470.          (<b*>,<B*>); (<c*>,<C*>); (<d*>,<D*>); (<e%>,<E%>); (<e*>,<E*>);/
  68471.          (<f*>,<F*>); (<g*>,<G*>); (<h*>,<H*>); (<i%>,<I%>); (<i*>,<I*>);/
  68472.          (<j*>,<J*>); (<k*>,<K*>); (<l*>,<L*>); (<m*>,<M*>); (<n*>,<N*>);/
  68473.          (<o%>,<O%>); (<o*>,<O*>); (<p*>,<P*>); (<q*>,<Q*>); (<r*>,<R*>);/
  68474.          (<s*>,<S*>); (<*s>,<S*>); (<t*>,<T*>); (<u%>,<U%>); (<u*>,<U*>);/  1
  68475.          (<v*>,<V*>); (<w%>,<W%>); (<w*>,<W*>); (<x*>,<X*>); (<y%>,<Y%>);/  1
  68476.          (<y*>,<Y*>); (<z*>,<Z*>)                                           1
  68477.  
  68478.  END LC_CTYPE
  68479.  
  68480.  LC_COLLATE
  68481.  
  68482.  % Ordering algorithm:                                                      1
  68483.  %  1. Spaces and hyphen (but not soft hyphen) before punctuation           1
  68484.  %     characters, punctuation characters before numbers,                   1
  68485.  %     numbers before letters.                                              1
  68486.  %  2. Letters with diacritical marks are members of equivalence classes    1
  68487.  %  3. Upper case letters before corresponding lower case letter.           1
  68488.  %  4. Specials are ignored when comparing letters, but then they are considered1
  68489.  %  5. The alphabets are sorted in the order of appearance in ISO 10646:    1
  68490.  %     Latin, Cyrillic, Greek, Arabic and Hebrew.                           1
  68491.  %  6. In Danish, the letter combination `aa' is equivalent to `<aa>'       1
  68492.  
  68493.  
  68494.  
  68495.  
  68496.  
  68497.  
  68498.  
  68499.                Copyright c 1991 IEEE.  All rights reserved.
  68500.       This is an unapproved IEEE Standards Draft, subject to change.
  68501.  
  68502.  
  68503.  
  68504.  
  68505.  
  68506.  1008                                            F Sample National Profile
  68507.  
  68508.  
  68509.  
  68510.  
  68511.  
  68512.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  68513.  
  68514.  %                                                                          1
  68515.  % The ordering algorithm is in accordance with Danish Standard DS 377      1
  68516.  % and the Danish Orthography Dictionary (Retskrivningsordbogen, 1986).     1
  68517.  % It is also in accordance with Faroese and Greenlandic orthography.       1
  68518.  
  68519.  collating-element <A-A> from <A><A>                                        1
  68520.  collating-element <a-a> from <a><a>                                        1
  68521.  collating-element <A-a> from <A><a>                                        1
  68522.  collating-element <s-s> from <s><s>                                        1
  68523.  collating-element <i-j> from <i><j>                                        1
  68524.  collating-element <I-J> from <I><J>                                        1
  68525.  collating-element <o-e> from <o><e>                                        1
  68526.  collating-element <O-E> from <O><E>                                        1
  68527.  collating-element <t-h> from <t><h>                                        1
  68528.  collating-element <T-H> from <T><H>                                        1
  68529.  collating-element <n-g> from <n><g>                                        1
  68530.  collating-element <N-G> from <N><G>                                        1
  68531.  
  68532.  % collating symbols, <CAPITAL> or <SMALL> letters first                    1
  68533.  % <CAPITAL> letters before <SMALL> letters                                 1
  68534.  
  68535.  collating-symbol <CAPITAL>
  68536.  collating-symbol <BOTH>
  68537.  collating-symbol <SMALL>
  68538.  
  68539.  collating-symbol <NO-ACCENT>
  68540.  collating-symbol <ACUTE>
  68541.  collating-symbol <GRAVE>
  68542.  collating-symbol <CIRCUMFLEX>
  68543.  collating-symbol <TILDE>
  68544.  collating-symbol <MACRON>
  68545.  collating-symbol <BREVE>
  68546.  collating-symbol <DOT>
  68547.  collating-symbol <DIAERESIS>
  68548.  collating-symbol <CEDILLA>
  68549.  collating-symbol <UNDERLINE>
  68550.  collating-symbol <STROKE>
  68551.  collating-symbol <DOUBLE-ACUTE>
  68552.  collating-symbol <OGONEK>
  68553.  collating-symbol <CARON>
  68554.  collating-symbol <CYRILLIC>
  68555.  collating-symbol <GREEK>
  68556.  collating-symbol <ALPHA-1>
  68557.  collating-symbol <ALPHA-2>
  68558.  
  68559.  
  68560.  
  68561.  
  68562.  
  68563.  
  68564.  
  68565.                Copyright c 1991 IEEE.  All rights reserved.
  68566.       This is an unapproved IEEE Standards Draft, subject to change.
  68567.  
  68568.  
  68569.  
  68570.  
  68571.  
  68572.  F.3 Scope of Danish National Locale                                  1009
  68573.  
  68574.  
  68575.  
  68576.  
  68577.  
  68578.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  68579.  
  68580.  collating-symbol <PRECEDED-BY-APOSTROPHE>
  68581.  collating-symbol <SPECIAL>
  68582.  collating-symbol <ACC0>
  68583.  collating-symbol <ACC1>
  68584.  collating-symbol <ACC2>
  68585.  collating-symbol <ACC3>
  68586.  collating-symbol <ACC11>
  68587.  collating-symbol <ACC12>
  68588.  
  68589.  % letter;accent;case;specials                                              1
  68590.  
  68591.  order_start forward;backward;forward;forward
  68592.  
  68593.  <CAPITAL>
  68594.  <BOTH>
  68595.  <SMALL>
  68596.  
  68597.  <NO-ACCENT>
  68598.  <ACUTE>
  68599.  <GRAVE>
  68600.  <CIRCUMFLEX>
  68601.  <TILDE>
  68602.  <MACRON>
  68603.  <BREVE>
  68604.  <DOT>
  68605.  <DIAERESIS>
  68606.  <CEDILLA>
  68607.  <UNDERLINE>
  68608.  <STROKE>
  68609.  <DOUBLE-ACUTE>
  68610.  <OGONEK>
  68611.  <CARON>
  68612.  <CYRILLIC>
  68613.  <GREEK>
  68614.  <ALPHA-1>
  68615.  <ALPHA-2>
  68616.  <PRECEDED-BY-APOSTROPHE>
  68617.  <SPECIAL>
  68618.  <ACC0>
  68619.  <ACC1>
  68620.  <ACC2>
  68621.  <ACC3>
  68622.  <ACC11>
  68623.  <ACC12>
  68624.  
  68625.  
  68626.  
  68627.  
  68628.  
  68629.  
  68630.  
  68631.                Copyright c 1991 IEEE.  All rights reserved.
  68632.       This is an unapproved IEEE Standards Draft, subject to change.
  68633.  
  68634.  
  68635.  
  68636.  
  68637.  
  68638.  1010                                            F Sample National Profile
  68639.  
  68640.  
  68641.  
  68642.  
  68643.  
  68644.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  68645.  
  68646.  <SP>    <SP>
  68647.  <NS>    <SP>
  68648.  <HT>    <SP>
  68649.  <VT>    <SP>
  68650.  <CR>    <SP>
  68651.  <LF>    <SP>
  68652.  <FF>    <SP>
  68653.  <->     <SP>
  68654.  <//>    <SP>
  68655.  <!>     IGNORE;IGNORE;IGNORE
  68656.  <">     IGNORE;IGNORE;IGNORE
  68657.  <Nb>    IGNORE;IGNORE;IGNORE
  68658.  <DO>    IGNORE;IGNORE;IGNORE
  68659.  <%>     IGNORE;IGNORE;IGNORE
  68660.  <&>     IGNORE;IGNORE;IGNORE
  68661.  <'>     IGNORE;IGNORE;IGNORE
  68662.  <(>     IGNORE;IGNORE;IGNORE
  68663.  <)>     IGNORE;IGNORE;IGNORE
  68664.  <*>     IGNORE;IGNORE;IGNORE
  68665.  <+>     IGNORE;IGNORE;IGNORE
  68666.  <,>     IGNORE;IGNORE;IGNORE
  68667.  <.>     IGNORE;IGNORE;IGNORE
  68668.  <:>     IGNORE;IGNORE;IGNORE
  68669.  <;>     IGNORE;IGNORE;IGNORE
  68670.  <<>     IGNORE;IGNORE;IGNORE
  68671.  <=>     IGNORE;IGNORE;IGNORE
  68672.  </>>    IGNORE;IGNORE;IGNORE
  68673.  <?>     IGNORE;IGNORE;IGNORE
  68674.  <At>    IGNORE;IGNORE;IGNORE
  68675.  <<(>    IGNORE;IGNORE;IGNORE
  68676.  <////>  IGNORE;IGNORE;IGNORE
  68677.  <)/>>   IGNORE;IGNORE;IGNORE
  68678.  <'/>>   IGNORE;IGNORE;IGNORE
  68679.  <_>     IGNORE;IGNORE;IGNORE
  68680.  <'!>    IGNORE;IGNORE;IGNORE
  68681.  <(!>    IGNORE;IGNORE;IGNORE
  68682.  <!!>    IGNORE;IGNORE;IGNORE
  68683.  <!)>    IGNORE;IGNORE;IGNORE
  68684.  <'?>    IGNORE;IGNORE;IGNORE
  68685.  <!I>    IGNORE;IGNORE;IGNORE
  68686.  <Ct>    IGNORE;IGNORE;IGNORE
  68687.  <Pd>    IGNORE;IGNORE;IGNORE
  68688.  <Cu>    IGNORE;IGNORE;IGNORE
  68689.  <Ye>    IGNORE;IGNORE;IGNORE
  68690.  
  68691.  
  68692.  
  68693.  
  68694.  
  68695.  
  68696.  
  68697.                Copyright c 1991 IEEE.  All rights reserved.
  68698.       This is an unapproved IEEE Standards Draft, subject to change.
  68699.  
  68700.  
  68701.  
  68702.  
  68703.  
  68704.  F.3 Scope of Danish National Locale                                  1011
  68705.  
  68706.  
  68707.  
  68708.  
  68709.  
  68710.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  68711.  
  68712.  <BB>    IGNORE;IGNORE;IGNORE
  68713.  <SE>    IGNORE;IGNORE;IGNORE
  68714.  <':>    IGNORE;IGNORE;IGNORE
  68715.  <Co>    IGNORE;IGNORE;IGNORE
  68716.  <-a>    IGNORE;IGNORE;IGNORE
  68717.  <<<>    IGNORE;IGNORE;IGNORE
  68718.  <NO>    IGNORE;IGNORE;IGNORE
  68719.  <Rg>    IGNORE;IGNORE;IGNORE
  68720.  <'->    IGNORE;IGNORE;IGNORE
  68721.  <DG>    IGNORE;IGNORE;IGNORE
  68722.  <+->    IGNORE;IGNORE;IGNORE
  68723.  <''>    IGNORE;IGNORE;IGNORE
  68724.  <My>    IGNORE;IGNORE;IGNORE
  68725.  <PI>    IGNORE;IGNORE;IGNORE
  68726.  <.M>    IGNORE;IGNORE;IGNORE
  68727.  <',>    IGNORE;IGNORE;IGNORE
  68728.  <-o>    IGNORE;IGNORE;IGNORE
  68729.  </>/>>  IGNORE;IGNORE;IGNORE
  68730.  <14>    IGNORE;IGNORE;IGNORE
  68731.  <12>    IGNORE;IGNORE;IGNORE
  68732.  <34>    IGNORE;IGNORE;IGNORE
  68733.  <?I>    IGNORE;IGNORE;IGNORE
  68734.  <*X>    IGNORE;IGNORE;IGNORE
  68735.  <-:>    IGNORE;IGNORE;IGNORE
  68736.  <'6>    IGNORE;IGNORE;IGNORE
  68737.  <"6>    IGNORE;IGNORE;IGNORE
  68738.  <-!>    IGNORE;IGNORE;IGNORE
  68739.  <-v>    IGNORE;IGNORE;IGNORE
  68740.  <'9>    IGNORE;IGNORE;IGNORE
  68741.  <"9>    IGNORE;IGNORE;IGNORE
  68742.  <'0>    IGNORE;IGNORE;IGNORE
  68743.  <HB>    IGNORE;IGNORE;IGNORE
  68744.  <TM>    IGNORE;IGNORE;IGNORE
  68745.  <Md>    IGNORE;IGNORE;IGNORE
  68746.  <18>    IGNORE;IGNORE;IGNORE
  68747.  <38>    IGNORE;IGNORE;IGNORE
  68748.  <58>    IGNORE;IGNORE;IGNORE
  68749.  <78>    IGNORE;IGNORE;IGNORE
  68750.  <Om>    IGNORE;IGNORE;IGNORE
  68751.  <'(>    IGNORE;IGNORE;IGNORE
  68752.  <';>    IGNORE;IGNORE;IGNORE
  68753.  <'<>    IGNORE;IGNORE;IGNORE
  68754.  <'">    IGNORE;IGNORE;IGNORE
  68755.  <'.>    IGNORE;IGNORE;IGNORE
  68756.  
  68757.  
  68758.  
  68759.  
  68760.  
  68761.  
  68762.  
  68763.                Copyright c 1991 IEEE.  All rights reserved.
  68764.       This is an unapproved IEEE Standards Draft, subject to change.
  68765.  
  68766.  
  68767.  
  68768.  
  68769.  
  68770.  1012                                            F Sample National Profile
  68771.  
  68772.  
  68773.  
  68774.  
  68775.  
  68776.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  68777.  
  68778.  <;S>    IGNORE;IGNORE;IGNORE
  68779.  <Vs>    IGNORE;IGNORE;IGNORE
  68780.  <1M>    IGNORE;IGNORE;IGNORE
  68781.  <1N>    IGNORE;IGNORE;IGNORE
  68782.  <3M>    IGNORE;IGNORE;IGNORE
  68783.  <4M>    IGNORE;IGNORE;IGNORE
  68784.  <6M>    IGNORE;IGNORE;IGNORE
  68785.  <1H>    IGNORE;IGNORE;IGNORE
  68786.  <1T>    IGNORE;IGNORE;IGNORE
  68787.  <-1>    IGNORE;IGNORE;IGNORE
  68788.  <-N>    IGNORE;IGNORE;IGNORE
  68789.  <-2>    IGNORE;IGNORE;IGNORE
  68790.  <-M>    IGNORE;IGNORE;IGNORE
  68791.  <-3>    IGNORE;IGNORE;IGNORE
  68792.  <'1>    IGNORE;IGNORE;IGNORE
  68793.  <'2>    IGNORE;IGNORE;IGNORE
  68794.  <'3>    IGNORE;IGNORE;IGNORE
  68795.  <9'>    IGNORE;IGNORE;IGNORE
  68796.  <9">    IGNORE;IGNORE;IGNORE
  68797.  <.9>    IGNORE;IGNORE;IGNORE
  68798.  <:9>    IGNORE;IGNORE;IGNORE
  68799.  <<1>    IGNORE;IGNORE;IGNORE
  68800.  </>1>   IGNORE;IGNORE;IGNORE
  68801.  <15>    IGNORE;IGNORE;IGNORE
  68802.  <25>    IGNORE;IGNORE;IGNORE
  68803.  <35>    IGNORE;IGNORE;IGNORE
  68804.  <45>    IGNORE;IGNORE;IGNORE
  68805.  <16>    IGNORE;IGNORE;IGNORE
  68806.  <13>    IGNORE;IGNORE;IGNORE
  68807.  <23>    IGNORE;IGNORE;IGNORE
  68808.  <56>    IGNORE;IGNORE;IGNORE
  68809.  <*->    IGNORE;IGNORE;IGNORE
  68810.  <//->   IGNORE;IGNORE;IGNORE
  68811.  <//=>   IGNORE;IGNORE;IGNORE
  68812.  <-X>    IGNORE;IGNORE;IGNORE
  68813.  <%0>    IGNORE;IGNORE;IGNORE
  68814.  <co>    IGNORE;IGNORE;IGNORE
  68815.  <PO>    IGNORE;IGNORE;IGNORE
  68816.  <Rx>    IGNORE;IGNORE;IGNORE
  68817.  <AO>    IGNORE;IGNORE;IGNORE
  68818.  <oC>    IGNORE;IGNORE;IGNORE
  68819.  <Ml>    IGNORE;IGNORE;IGNORE
  68820.  <Fm>    IGNORE;IGNORE;IGNORE
  68821.  <Tl>    IGNORE;IGNORE;IGNORE
  68822.  
  68823.  
  68824.  
  68825.  
  68826.  
  68827.  
  68828.  
  68829.                Copyright c 1991 IEEE.  All rights reserved.
  68830.       This is an unapproved IEEE Standards Draft, subject to change.
  68831.  
  68832.  
  68833.  
  68834.  
  68835.  
  68836.  F.3 Scope of Danish National Locale                                  1013
  68837.  
  68838.  
  68839.  
  68840.  
  68841.  
  68842.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  68843.  
  68844.  <TR>    IGNORE;IGNORE;IGNORE
  68845.  <MX>    IGNORE;IGNORE;IGNORE
  68846.  <Mb>    IGNORE;IGNORE;IGNORE
  68847.  <Mx>    IGNORE;IGNORE;IGNORE
  68848.  <XX>    IGNORE;IGNORE;IGNORE
  68849.  <OK>    IGNORE;IGNORE;IGNORE
  68850.  <M2>    IGNORE;IGNORE;IGNORE
  68851.  <!2>    IGNORE;IGNORE;IGNORE
  68852.  <=2>    IGNORE;IGNORE;IGNORE
  68853.  <Ca>    IGNORE;IGNORE;IGNORE
  68854.  <..>    IGNORE;IGNORE;IGNORE
  68855.  <.3>    IGNORE;IGNORE;IGNORE
  68856.  <:3>    IGNORE;IGNORE;IGNORE
  68857.  <.:>    IGNORE;IGNORE;IGNORE
  68858.  <:.>    IGNORE;IGNORE;IGNORE
  68859.  <-+>    IGNORE;IGNORE;IGNORE
  68860.  <!=>    IGNORE;IGNORE;IGNORE
  68861.  <=3>    IGNORE;IGNORE;IGNORE
  68862.  <?1>    IGNORE;IGNORE;IGNORE
  68863.  <?2>    IGNORE;IGNORE;IGNORE
  68864.  <?->    IGNORE;IGNORE;IGNORE
  68865.  <?=>    IGNORE;IGNORE;IGNORE
  68866.  <=<>    IGNORE;IGNORE;IGNORE
  68867.  </>=>   IGNORE;IGNORE;IGNORE
  68868.  <0(>    IGNORE;IGNORE;IGNORE
  68869.  <00>    IGNORE;IGNORE;IGNORE
  68870.  <PP>    IGNORE;IGNORE;IGNORE
  68871.  <-T>    IGNORE;IGNORE;IGNORE
  68872.  <-L>    IGNORE;IGNORE;IGNORE
  68873.  <-V>    IGNORE;IGNORE;IGNORE
  68874.  <AN>    IGNORE;IGNORE;IGNORE
  68875.  <OR>    IGNORE;IGNORE;IGNORE
  68876.  <.P>    IGNORE;IGNORE;IGNORE
  68877.  <dP>    IGNORE;IGNORE;IGNORE
  68878.  <f(>    IGNORE;IGNORE;IGNORE
  68879.  <In>    IGNORE;IGNORE;IGNORE
  68880.  <Io>    IGNORE;IGNORE;IGNORE
  68881.  <RT>    IGNORE;IGNORE;IGNORE
  68882.  <*P>    IGNORE;IGNORE;IGNORE
  68883.  <+Z>    IGNORE;IGNORE;IGNORE
  68884.  <FA>    IGNORE;IGNORE;IGNORE
  68885.  <TE>    IGNORE;IGNORE;IGNORE
  68886.  <GF>    IGNORE;IGNORE;IGNORE
  68887.  <DE>    IGNORE;IGNORE;IGNORE
  68888.  
  68889.  
  68890.  
  68891.  
  68892.  
  68893.  
  68894.  
  68895.                Copyright c 1991 IEEE.  All rights reserved.
  68896.       This is an unapproved IEEE Standards Draft, subject to change.
  68897.  
  68898.  
  68899.  
  68900.  
  68901.  
  68902.  1014                                            F Sample National Profile
  68903.  
  68904.  
  68905.  
  68906.  
  68907.  
  68908.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  68909.  
  68910.  <NB>    IGNORE;IGNORE;IGNORE
  68911.  <(U>    IGNORE;IGNORE;IGNORE
  68912.  <)U>    IGNORE;IGNORE;IGNORE
  68913.  <(C>    IGNORE;IGNORE;IGNORE
  68914.  <)C>    IGNORE;IGNORE;IGNORE
  68915.  <(_>    IGNORE;IGNORE;IGNORE
  68916.  <)_>    IGNORE;IGNORE;IGNORE
  68917.  <(->    IGNORE;IGNORE;IGNORE
  68918.  <-)>    IGNORE;IGNORE;IGNORE
  68919.  <</>>   IGNORE;IGNORE;IGNORE
  68920.  <UD>    IGNORE;IGNORE;IGNORE
  68921.  <Ub>    IGNORE;IGNORE;IGNORE
  68922.  <<=>    IGNORE;IGNORE;IGNORE
  68923.  <=/>>   IGNORE;IGNORE;IGNORE
  68924.  <==>    IGNORE;IGNORE;IGNORE
  68925.  <//0>   IGNORE;IGNORE;IGNORE
  68926.  <OL>    IGNORE;IGNORE;IGNORE
  68927.  <0u>    IGNORE;IGNORE;IGNORE
  68928.  <0U>    IGNORE;IGNORE;IGNORE
  68929.  <SU>    IGNORE;IGNORE;IGNORE
  68930.  <0:>    IGNORE;IGNORE;IGNORE
  68931.  <OS>    IGNORE;IGNORE;IGNORE
  68932.  <fS>    IGNORE;IGNORE;IGNORE
  68933.  <Or>    IGNORE;IGNORE;IGNORE
  68934.  <SR>    IGNORE;IGNORE;IGNORE
  68935.  <uT>    IGNORE;IGNORE;IGNORE
  68936.  <UT>    IGNORE;IGNORE;IGNORE
  68937.  <dT>    IGNORE;IGNORE;IGNORE
  68938.  <Dt>    IGNORE;IGNORE;IGNORE
  68939.  <PL>    IGNORE;IGNORE;IGNORE
  68940.  <PR>    IGNORE;IGNORE;IGNORE
  68941.  <*1>    IGNORE;IGNORE;IGNORE
  68942.  <*2>    IGNORE;IGNORE;IGNORE
  68943.  <VV>    IGNORE;IGNORE;IGNORE
  68944.  <HH>    IGNORE;IGNORE;IGNORE
  68945.  <DR>    IGNORE;IGNORE;IGNORE
  68946.  <LD>    IGNORE;IGNORE;IGNORE
  68947.  <UR>    IGNORE;IGNORE;IGNORE
  68948.  <UL>    IGNORE;IGNORE;IGNORE
  68949.  <VR>    IGNORE;IGNORE;IGNORE
  68950.  <VL>    IGNORE;IGNORE;IGNORE
  68951.  <DH>    IGNORE;IGNORE;IGNORE
  68952.  <UH>    IGNORE;IGNORE;IGNORE
  68953.  <VH>    IGNORE;IGNORE;IGNORE
  68954.  
  68955.  
  68956.  
  68957.  
  68958.  
  68959.  
  68960.  
  68961.                Copyright c 1991 IEEE.  All rights reserved.
  68962.       This is an unapproved IEEE Standards Draft, subject to change.
  68963.  
  68964.  
  68965.  
  68966.  
  68967.  
  68968.  F.3 Scope of Danish National Locale                                  1015
  68969.  
  68970.  
  68971.  
  68972.  
  68973.  
  68974.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  68975.  
  68976.  <TB>    IGNORE;IGNORE;IGNORE
  68977.  <LB>    IGNORE;IGNORE;IGNORE
  68978.  <FB>    IGNORE;IGNORE;IGNORE
  68979.  <sB>    IGNORE;IGNORE;IGNORE
  68980.  <EH>    IGNORE;IGNORE;IGNORE
  68981.  <vv>    IGNORE;IGNORE;IGNORE
  68982.  <hh>    IGNORE;IGNORE;IGNORE
  68983.  <dr>    IGNORE;IGNORE;IGNORE
  68984.  <dl>    IGNORE;IGNORE;IGNORE
  68985.  <ur>    IGNORE;IGNORE;IGNORE
  68986.  <ul>    IGNORE;IGNORE;IGNORE
  68987.  <vr>    IGNORE;IGNORE;IGNORE
  68988.  <vl>    IGNORE;IGNORE;IGNORE
  68989.  <dh>    IGNORE;IGNORE;IGNORE
  68990.  <uh>    IGNORE;IGNORE;IGNORE
  68991.  <vh>    IGNORE;IGNORE;IGNORE
  68992.  <.S>    IGNORE;IGNORE;IGNORE
  68993.  <:S>    IGNORE;IGNORE;IGNORE
  68994.  <?S>    IGNORE;IGNORE;IGNORE
  68995.  <lB>    IGNORE;IGNORE;IGNORE
  68996.  <RB>    IGNORE;IGNORE;IGNORE
  68997.  <cC>    IGNORE;IGNORE;IGNORE
  68998.  <cD>    IGNORE;IGNORE;IGNORE
  68999.  <Dr>    IGNORE;IGNORE;IGNORE
  69000.  <Dl>    IGNORE;IGNORE;IGNORE
  69001.  <Ur>    IGNORE;IGNORE;IGNORE
  69002.  <Ul>    IGNORE;IGNORE;IGNORE
  69003.  <Vr>    IGNORE;IGNORE;IGNORE
  69004.  <Vl>    IGNORE;IGNORE;IGNORE
  69005.  <dH>    IGNORE;IGNORE;IGNORE
  69006.  <uH>    IGNORE;IGNORE;IGNORE
  69007.  <vH>    IGNORE;IGNORE;IGNORE
  69008.  <Ob>    IGNORE;IGNORE;IGNORE
  69009.  <Sb>    IGNORE;IGNORE;IGNORE
  69010.  <Sn>    IGNORE;IGNORE;IGNORE
  69011.  <Pt>    IGNORE;IGNORE;IGNORE
  69012.  <NI>    IGNORE;IGNORE;IGNORE
  69013.  <cH>    IGNORE;IGNORE;IGNORE
  69014.  <cS>    IGNORE;IGNORE;IGNORE
  69015.  <dR>    IGNORE;IGNORE;IGNORE
  69016.  <dL>    IGNORE;IGNORE;IGNORE
  69017.  <uR>    IGNORE;IGNORE;IGNORE
  69018.  <uL>    IGNORE;IGNORE;IGNORE
  69019.  <vR>    IGNORE;IGNORE;IGNORE
  69020.  
  69021.  
  69022.  
  69023.  
  69024.  
  69025.  
  69026.  
  69027.                Copyright c 1991 IEEE.  All rights reserved.
  69028.       This is an unapproved IEEE Standards Draft, subject to change.
  69029.  
  69030.  
  69031.  
  69032.  
  69033.  
  69034.  1016                                            F Sample National Profile
  69035.  
  69036.  
  69037.  
  69038.  
  69039.  
  69040.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  69041.  
  69042.  <vL>    IGNORE;IGNORE;IGNORE
  69043.  <Dh>    IGNORE;IGNORE;IGNORE
  69044.  <Uh>    IGNORE;IGNORE;IGNORE
  69045.  <Vh>    IGNORE;IGNORE;IGNORE
  69046.  <0m>    IGNORE;IGNORE;IGNORE
  69047.  <0M>    IGNORE;IGNORE;IGNORE
  69048.  <Ic>    IGNORE;IGNORE;IGNORE
  69049.  <SM>    IGNORE;IGNORE;IGNORE
  69050.  <CG>    IGNORE;IGNORE;IGNORE
  69051.  <Ci>    IGNORE;IGNORE;IGNORE
  69052.  <(A>    IGNORE;IGNORE;IGNORE
  69053.  </>V>   IGNORE;IGNORE;IGNORE
  69054.  <!<>    IGNORE;IGNORE;IGNORE
  69055.  <<*>    IGNORE;IGNORE;IGNORE
  69056.  <!/>>   IGNORE;IGNORE;IGNORE
  69057.  <*/>>   IGNORE;IGNORE;IGNORE
  69058.  <<7>    IGNORE;IGNORE;IGNORE
  69059.  <7<>    IGNORE;IGNORE;IGNORE
  69060.  </>7>   IGNORE;IGNORE;IGNORE
  69061.  <7/>>   IGNORE;IGNORE;IGNORE
  69062.  <I2>    IGNORE;IGNORE;IGNORE
  69063.  <0.>    IGNORE;IGNORE;IGNORE
  69064.  <HI>    IGNORE;IGNORE;IGNORE
  69065.  <::>    IGNORE;IGNORE;IGNORE
  69066.  <FD>    IGNORE;IGNORE;IGNORE
  69067.  <LZ>    IGNORE;IGNORE;IGNORE
  69068.  <BD>    IGNORE;IGNORE;IGNORE
  69069.  <1R>    IGNORE;IGNORE;IGNORE
  69070.  <2R>    IGNORE;IGNORE;IGNORE
  69071.  <3R>    IGNORE;IGNORE;IGNORE
  69072.  <4R>    IGNORE;IGNORE;IGNORE
  69073.  <5R>    IGNORE;IGNORE;IGNORE
  69074.  <6R>    IGNORE;IGNORE;IGNORE
  69075.  <7R>    IGNORE;IGNORE;IGNORE
  69076.  <8R>    IGNORE;IGNORE;IGNORE
  69077.  <9R>    IGNORE;IGNORE;IGNORE
  69078.  <aR>    IGNORE;IGNORE;IGNORE
  69079.  <bR>    IGNORE;IGNORE;IGNORE
  69080.  <cR>    IGNORE;IGNORE;IGNORE
  69081.  <N0>    IGNORE;IGNORE;IGNORE
  69082.  <i3>    IGNORE;IGNORE;IGNORE
  69083.  <;;>    IGNORE;IGNORE;IGNORE
  69084.  <,,>    IGNORE;IGNORE;IGNORE
  69085.  <!*>    IGNORE;IGNORE;IGNORE
  69086.  
  69087.  
  69088.  
  69089.  
  69090.  
  69091.  
  69092.  
  69093.                Copyright c 1991 IEEE.  All rights reserved.
  69094.       This is an unapproved IEEE Standards Draft, subject to change.
  69095.  
  69096.  
  69097.  
  69098.  
  69099.  
  69100.  F.3 Scope of Danish National Locale                                  1017
  69101.  
  69102.  
  69103.  
  69104.  
  69105.  
  69106.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  69107.  
  69108.  <?*>    IGNORE;IGNORE;IGNORE
  69109.  <;'>    IGNORE;IGNORE;IGNORE
  69110.  <,'>    IGNORE;IGNORE;IGNORE
  69111.  <;!>    IGNORE;IGNORE;IGNORE
  69112.  <,!>    IGNORE;IGNORE;IGNORE
  69113.  <?;>    IGNORE;IGNORE;IGNORE
  69114.  <?,>    IGNORE;IGNORE;IGNORE
  69115.  <!:>    IGNORE;IGNORE;IGNORE
  69116.  <?:>    IGNORE;IGNORE;IGNORE
  69117.  <'%>    IGNORE;IGNORE;IGNORE
  69118.  <,+>    IGNORE;IGNORE;IGNORE
  69119.  <;+>    IGNORE;IGNORE;IGNORE
  69120.  <?+>    IGNORE;IGNORE;IGNORE
  69121.  <++>    IGNORE;IGNORE;IGNORE
  69122.  <:+>    IGNORE;IGNORE;IGNORE
  69123.  <"+>    IGNORE;IGNORE;IGNORE
  69124.  <=+>    IGNORE;IGNORE;IGNORE
  69125.  <//+>   IGNORE;IGNORE;IGNORE
  69126.  <'+>    IGNORE;IGNORE;IGNORE
  69127.  <1+>    IGNORE;IGNORE;IGNORE
  69128.  <3+>    IGNORE;IGNORE;IGNORE
  69129.  <0+>    IGNORE;IGNORE;IGNORE
  69130.  <IS>    IGNORE;IGNORE;IGNORE
  69131.  <,_>    IGNORE;IGNORE;IGNORE
  69132.  <._>    IGNORE;IGNORE;IGNORE
  69133.  <+">    IGNORE;IGNORE;IGNORE
  69134.  <+_>    IGNORE;IGNORE;IGNORE
  69135.  <*_>    IGNORE;IGNORE;IGNORE
  69136.  <;_>    IGNORE;IGNORE;IGNORE
  69137.  <0_>    IGNORE;IGNORE;IGNORE
  69138.  <<+>    IGNORE;IGNORE;IGNORE
  69139.  </>+>   IGNORE;IGNORE;IGNORE
  69140.  <<'>    IGNORE;IGNORE;IGNORE
  69141.  </>'>   IGNORE;IGNORE;IGNORE
  69142.  <<">    IGNORE;IGNORE;IGNORE
  69143.  </>">   IGNORE;IGNORE;IGNORE
  69144.  <(">    IGNORE;IGNORE;IGNORE
  69145.  <)">    IGNORE;IGNORE;IGNORE
  69146.  <=//>   IGNORE;IGNORE;IGNORE
  69147.  <=_>    IGNORE;IGNORE;IGNORE
  69148.  <('>    IGNORE;IGNORE;IGNORE
  69149.  <)'>    IGNORE;IGNORE;IGNORE
  69150.  <KM>    IGNORE;IGNORE;IGNORE
  69151.  <"5>    IGNORE;IGNORE;IGNORE
  69152.  
  69153.  
  69154.  
  69155.  
  69156.  
  69157.  
  69158.  
  69159.                Copyright c 1991 IEEE.  All rights reserved.
  69160.       This is an unapproved IEEE Standards Draft, subject to change.
  69161.  
  69162.  
  69163.  
  69164.  
  69165.  
  69166.  1018                                            F Sample National Profile
  69167.  
  69168.  
  69169.  
  69170.  
  69171.  
  69172.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  69173.  
  69174.  <05>    IGNORE;IGNORE;IGNORE
  69175.  <*5>    IGNORE;IGNORE;IGNORE
  69176.  <+5>    IGNORE;IGNORE;IGNORE
  69177.  <-6>    IGNORE;IGNORE;IGNORE
  69178.  <*6>    IGNORE;IGNORE;IGNORE
  69179.  <+6>    IGNORE;IGNORE;IGNORE
  69180.  <Iu>    IGNORE;IGNORE;IGNORE
  69181.  <Il>    IGNORE;IGNORE;IGNORE
  69182.  <NU>    IGNORE;IGNORE;IGNORE
  69183.  <SH>    IGNORE;IGNORE;IGNORE
  69184.  <SX>    IGNORE;IGNORE;IGNORE
  69185.  <EX>    IGNORE;IGNORE;IGNORE
  69186.  <ET>    IGNORE;IGNORE;IGNORE
  69187.  <EQ>    IGNORE;IGNORE;IGNORE
  69188.  <AK>    IGNORE;IGNORE;IGNORE
  69189.  <BL>    IGNORE;IGNORE;IGNORE
  69190.  <BS>    IGNORE;IGNORE;IGNORE
  69191.  <SO>    IGNORE;IGNORE;IGNORE
  69192.  <SI>    IGNORE;IGNORE;IGNORE
  69193.  <DL>    IGNORE;IGNORE;IGNORE
  69194.  <D1>    IGNORE;IGNORE;IGNORE
  69195.  <D2>    IGNORE;IGNORE;IGNORE
  69196.  <D3>    IGNORE;IGNORE;IGNORE
  69197.  <D4>    IGNORE;IGNORE;IGNORE
  69198.  <NK>    IGNORE;IGNORE;IGNORE
  69199.  <SY>    IGNORE;IGNORE;IGNORE
  69200.  <EB>    IGNORE;IGNORE;IGNORE
  69201.  <CN>    IGNORE;IGNORE;IGNORE
  69202.  <EM>    IGNORE;IGNORE;IGNORE
  69203.  <SB>    IGNORE;IGNORE;IGNORE
  69204.  <EC>    IGNORE;IGNORE;IGNORE
  69205.  <FS>    IGNORE;IGNORE;IGNORE
  69206.  <GS>    IGNORE;IGNORE;IGNORE
  69207.  <RS>    IGNORE;IGNORE;IGNORE
  69208.  <US>    IGNORE;IGNORE;IGNORE
  69209.  <DT>    IGNORE;IGNORE;IGNORE
  69210.  <PA>    IGNORE;IGNORE;IGNORE
  69211.  <HO>    IGNORE;IGNORE;IGNORE
  69212.  <BH>    IGNORE;IGNORE;IGNORE
  69213.  <NH>    IGNORE;IGNORE;IGNORE
  69214.  <IN>    IGNORE;IGNORE;IGNORE
  69215.  <NL>    IGNORE;IGNORE;IGNORE
  69216.  <SA>    IGNORE;IGNORE;IGNORE
  69217.  <ES>    IGNORE;IGNORE;IGNORE
  69218.  
  69219.  
  69220.  
  69221.  
  69222.  
  69223.  
  69224.  
  69225.                Copyright c 1991 IEEE.  All rights reserved.
  69226.       This is an unapproved IEEE Standards Draft, subject to change.
  69227.  
  69228.  
  69229.  
  69230.  
  69231.  
  69232.  F.3 Scope of Danish National Locale                                  1019
  69233.  
  69234.  
  69235.  
  69236.  
  69237.  
  69238.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  69239.  
  69240.  <HS>    IGNORE;IGNORE;IGNORE
  69241.  <HJ>    IGNORE;IGNORE;IGNORE
  69242.  <VS>    IGNORE;IGNORE;IGNORE
  69243.  <PD>    IGNORE;IGNORE;IGNORE
  69244.  <PU>    IGNORE;IGNORE;IGNORE
  69245.  <RI>    IGNORE;IGNORE;IGNORE
  69246.  <S2>    IGNORE;IGNORE;IGNORE
  69247.  <S3>    IGNORE;IGNORE;IGNORE
  69248.  <DC>    IGNORE;IGNORE;IGNORE
  69249.  <P1>    IGNORE;IGNORE;IGNORE
  69250.  <P2>    IGNORE;IGNORE;IGNORE
  69251.  <TS>    IGNORE;IGNORE;IGNORE
  69252.  <CC>    IGNORE;IGNORE;IGNORE
  69253.  <MW>    IGNORE;IGNORE;IGNORE
  69254.  <SG>    IGNORE;IGNORE;IGNORE
  69255.  <EG>    IGNORE;IGNORE;IGNORE
  69256.  <SS>    IGNORE;IGNORE;IGNORE
  69257.  <GC>    IGNORE;IGNORE;IGNORE
  69258.  <SC>    IGNORE;IGNORE;IGNORE
  69259.  <CI>    IGNORE;IGNORE;IGNORE
  69260.  <ST>    IGNORE;IGNORE;IGNORE
  69261.  <OC>    IGNORE;IGNORE;IGNORE
  69262.  <PM>    IGNORE;IGNORE;IGNORE
  69263.  <AC>    IGNORE;IGNORE;IGNORE
  69264.  <__>    IGNORE;IGNORE;IGNORE                                               1
  69265.  <"!>    IGNORE;IGNORE;IGNORE
  69266.  <"'>    IGNORE;IGNORE;IGNORE
  69267.  <"/>>   IGNORE;IGNORE;IGNORE
  69268.  <"?>    IGNORE;IGNORE;IGNORE
  69269.  <"->    IGNORE;IGNORE;IGNORE
  69270.  <"(>    IGNORE;IGNORE;IGNORE
  69271.  <".>    IGNORE;IGNORE;IGNORE
  69272.  <":>    IGNORE;IGNORE;IGNORE
  69273.  <"//>   IGNORE;IGNORE;IGNORE
  69274.  <"0>    IGNORE;IGNORE;IGNORE
  69275.  <",>    IGNORE;IGNORE;IGNORE
  69276.  <"_>    IGNORE;IGNORE;IGNORE
  69277.  <"">    IGNORE;IGNORE;IGNORE
  69278.  <"<>    IGNORE;IGNORE;IGNORE
  69279.  <";>    IGNORE;IGNORE;IGNORE
  69280.  <"=>    IGNORE;IGNORE;IGNORE
  69281.  <"1>    IGNORE;IGNORE;IGNORE
  69282.  <"2>    IGNORE;IGNORE;IGNORE
  69283.  <Fd>    IGNORE;IGNORE;IGNORE
  69284.  
  69285.  
  69286.  
  69287.  
  69288.  
  69289.  
  69290.  
  69291.                Copyright c 1991 IEEE.  All rights reserved.
  69292.       This is an unapproved IEEE Standards Draft, subject to change.
  69293.  
  69294.  
  69295.  
  69296.  
  69297.  
  69298.  1020                                            F Sample National Profile
  69299.  
  69300.  
  69301.  
  69302.  
  69303.  
  69304.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  69305.  
  69306.  <Bd>    IGNORE;IGNORE;IGNORE
  69307.  <Fl>    IGNORE;IGNORE;IGNORE
  69308.  <Li>    IGNORE;IGNORE;IGNORE
  69309.  <//f>   IGNORE;IGNORE;IGNORE
  69310.  <0s>    IGNORE;IGNORE;IGNORE
  69311.  <1s>    IGNORE;IGNORE;IGNORE
  69312.  <2s>    IGNORE;IGNORE;IGNORE
  69313.  <3s>    IGNORE;IGNORE;IGNORE
  69314.  <4s>    IGNORE;IGNORE;IGNORE
  69315.  <5s>    IGNORE;IGNORE;IGNORE
  69316.  <6s>    IGNORE;IGNORE;IGNORE
  69317.  <7s>    IGNORE;IGNORE;IGNORE
  69318.  <8s>    IGNORE;IGNORE;IGNORE
  69319.  <9s>    IGNORE;IGNORE;IGNORE
  69320.  <0S>    IGNORE;IGNORE;IGNORE
  69321.  <4S>    IGNORE;IGNORE;IGNORE
  69322.  <5S>    IGNORE;IGNORE;IGNORE
  69323.  <6S>    IGNORE;IGNORE;IGNORE
  69324.  <7S>    IGNORE;IGNORE;IGNORE
  69325.  <8S>    IGNORE;IGNORE;IGNORE
  69326.  <9S>    IGNORE;IGNORE;IGNORE
  69327.  <+S>    IGNORE;IGNORE;IGNORE
  69328.  <-S>    IGNORE;IGNORE;IGNORE
  69329.  <1h>    IGNORE;IGNORE;IGNORE
  69330.  <2h>    IGNORE;IGNORE;IGNORE
  69331.  <3h>    IGNORE;IGNORE;IGNORE
  69332.  <4h>    IGNORE;IGNORE;IGNORE
  69333.  <1j>    IGNORE;IGNORE;IGNORE
  69334.  <2j>    IGNORE;IGNORE;IGNORE
  69335.  <3j>    IGNORE;IGNORE;IGNORE
  69336.  <4j>    IGNORE;IGNORE;IGNORE
  69337.  <UA>    IGNORE;IGNORE;IGNORE
  69338.  <UB>    IGNORE;IGNORE;IGNORE
  69339.  <yr>    IGNORE;IGNORE;IGNORE
  69340.  <.6>    IGNORE;IGNORE;IGNORE
  69341.  <<6>    IGNORE;IGNORE;IGNORE
  69342.  </>6>   IGNORE;IGNORE;IGNORE
  69343.  <,6>    IGNORE;IGNORE;IGNORE
  69344.  <&6>    IGNORE;IGNORE;IGNORE
  69345.  <(S>    IGNORE;IGNORE;IGNORE
  69346.  <)S>    IGNORE;IGNORE;IGNORE
  69347.  <UNDEFINED>     IGNORE;IGNORE;IGNORE
  69348.  <0>
  69349.  <1>     <1>
  69350.  
  69351.  
  69352.  
  69353.  
  69354.  
  69355.  
  69356.  
  69357.                Copyright c 1991 IEEE.  All rights reserved.
  69358.       This is an unapproved IEEE Standards Draft, subject to change.
  69359.  
  69360.  
  69361.  
  69362.  
  69363.  
  69364.  F.3 Scope of Danish National Locale                                  1021
  69365.  
  69366.  
  69367.  
  69368.  
  69369.  
  69370.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  69371.  
  69372.  <1S>    <1>
  69373.  <2>     <2>
  69374.  <2S>    <2>
  69375.  <3>     <3>
  69376.  <3S>    <3>
  69377.  <4>
  69378.  <5>
  69379.  <6>
  69380.  <7>
  69381.  <8>
  69382.  <9>
  69383.  <A>     <A>;<NO-ACCENT>;<CAPITAL>
  69384.  <a>     <A>;<NO-ACCENT>;<SMALL>
  69385.  <A'>    <A>;<ACUTE>;<CAPITAL>
  69386.  <a'>    <A>;<ACUTE>;<SMALL>
  69387.  <A!>    <A>;<GRAVE>;<CAPITAL>
  69388.  <a!>    <A>;<GRAVE>;<SMALL>
  69389.  <A/>>   <A>;<CIRCUMFLEX>;<CAPITAL>
  69390.  <a/>>   <A>;<CIRCUMFLEX>;<SMALL>
  69391.  <A?>    <A>;<TILDE>;<CAPITAL>
  69392.  <a?>    <A>;<TILDE>;<SMALL>
  69393.  <A->    <A>;<MACRON>;<CAPITAL>
  69394.  <a->    <A>;<MACRON>;<SMALL>
  69395.  <A(>    <A>;<BREVE>;<CAPITAL>
  69396.  <a(>    <A>;<BREVE>;<SMALL>
  69397.  <A_>    <A>;<UNDERLINE>;<CAPITAL>
  69398.  <a_>    <A>;<UNDERLINE>;<SMALL>
  69399.  <A;>    <A>;<OGONEK>;<CAPITAL>
  69400.  <a;>    <A>;<OGONEK>;<SMALL>
  69401.  <A<>    <A>;<CARON>;<CAPITAL>
  69402.  <a<>    <A>;<CARON>;<SMALL>
  69403.  <'A>    <A>;<PRECEDED-BY-APOSTROPHE>;<CAPITAL>
  69404.  <'a>    <A>;<PRECEDED-BY-APOSTROPHE>;<SMALL>
  69405.  <A1>    <A>;<ACC1>;<CAPITAL>
  69406.  <a1>    <A>;<ACC1>;<SMALL>
  69407.  <A2>    <A>;<ACC2>;<CAPITAL>
  69408.  <a2>    <A>;<ACC2>;<SMALL>
  69409.  <B>     <B>;<NO-ACCENT>;<CAPITAL>
  69410.  <b>     <B>;<NO-ACCENT>;<SMALL>
  69411.  <B.>    <B>;<DOT>;<CAPITAL>
  69412.  <b.>    <B>;<DOT>;<SMALL>
  69413.  <B_>    <B>;<UNDERLINE>;<CAPITAL>
  69414.  <b_>    <B>;<UNDERLINE>;<SMALL>
  69415.  <'B>    <B>;<PRECEDED-BY-APOSTROPHE>;<CAPITAL>
  69416.  
  69417.  
  69418.  
  69419.  
  69420.  
  69421.  
  69422.  
  69423.                Copyright c 1991 IEEE.  All rights reserved.
  69424.       This is an unapproved IEEE Standards Draft, subject to change.
  69425.  
  69426.  
  69427.  
  69428.  
  69429.  
  69430.  1022                                            F Sample National Profile
  69431.  
  69432.  
  69433.  
  69434.  
  69435.  
  69436.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  69437.  
  69438.  <'b>    <B>;<PRECEDED-BY-APOSTROPHE>;<SMALL>
  69439.  <C>     <C>;<NO-ACCENT>;<CAPITAL>
  69440.  <c>     <C>;<NO-ACCENT>;<SMALL>
  69441.  <C'>    <C>;<ACUTE>;<CAPITAL>
  69442.  <c'>    <C>;<ACUTE>;<SMALL>
  69443.  <C/>>   <C>;<CIRCUMFLEX>;<CAPITAL>
  69444.  <c/>>   <C>;<CIRCUMFLEX>;<SMALL>
  69445.  <C.>    <C>;<DOT>;<CAPITAL>
  69446.  <c.>    <C>;<DOT>;<SMALL>
  69447.  <C,>    <C>;<CEDILLA>;<CAPITAL>
  69448.  <c,>    <C>;<CEDILLA>;<SMALL>
  69449.  <C<>    <C>;<CARON>;<CAPITAL>
  69450.  <c<>    <C>;<CARON>;<SMALL>
  69451.  <D>     <D>;<NO-ACCENT>;<CAPITAL>
  69452.  <d>     <D>;<NO-ACCENT>;<SMALL>
  69453.  <D.>    <D>;<DOT>;<CAPITAL>
  69454.  <d.>    <D>;<DOT>;<SMALL>
  69455.  <D_>    <D>;<UNDERLINE>;<CAPITAL>
  69456.  <d_>    <D>;<UNDERLINE>;<SMALL>
  69457.  <D//>   <D>;<STROKE>;<CAPITAL>
  69458.  <d//>   <D>;<STROKE>;<SMALL>
  69459.  <D;>    <D>;<OGONEK>;<CAPITAL>
  69460.  <d;>    <D>;<OGONEK>;<SMALL>
  69461.  <D<>    <D>;<CARON>;<CAPITAL>
  69462.  <d<>    <D>;<CARON>;<SMALL>
  69463.  <'D>    <D>;<PRECEDED-BY-APOSTROPHE>;<CAPITAL>
  69464.  <'d>    <D>;<PRECEDED-BY-APOSTROPHE>;<SMALL>
  69465.  <D->    <D>;<SPECIAL>;<CAPITAL>
  69466.  <d->    <D>;<SPECIAL>;<SMALL>
  69467.  <E>     <E>;<NO-ACCENT>;<CAPITAL>
  69468.  <e>     <E>;<NO-ACCENT>;<SMALL>
  69469.  <E'>    <E>;<ACUTE>;<CAPITAL>
  69470.  <e'>    <E>;<ACUTE>;<SMALL>
  69471.  <E!>    <E>;<GRAVE>;<CAPITAL>
  69472.  <e!>    <E>;<GRAVE>;<SMALL>
  69473.  <E/>>   <E>;<CIRCUMFLEX>;<CAPITAL>
  69474.  <e/>>   <E>;<CIRCUMFLEX>;<SMALL>
  69475.  <E?>    <E>;<TILDE>;<CAPITAL>
  69476.  <e?>    <E>;<TILDE>;<SMALL>
  69477.  <E->    <E>;<MACRON>;<CAPITAL>
  69478.  <e->    <E>;<MACRON>;<SMALL>
  69479.  <E(>    <E>;<BREVE>;<CAPITAL>
  69480.  <e(>    <E>;<BREVE>;<SMALL>
  69481.  <E.>    <E>;<DOT>;<CAPITAL>
  69482.  
  69483.  
  69484.  
  69485.  
  69486.  
  69487.  
  69488.  
  69489.                Copyright c 1991 IEEE.  All rights reserved.
  69490.       This is an unapproved IEEE Standards Draft, subject to change.
  69491.  
  69492.  
  69493.  
  69494.  
  69495.  
  69496.  F.3 Scope of Danish National Locale                                  1023
  69497.  
  69498.  
  69499.  
  69500.  
  69501.  
  69502.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  69503.  
  69504.  <e.>    <E>;<DOT>;<SMALL>
  69505.  <E:>    <E>;<DIAERESIS>;<CAPITAL>
  69506.  <e:>    <E>;<DIAERESIS>;<SMALL>
  69507.  <E_>    <E>;<UNDERLINE>;<CAPITAL>
  69508.  <e_>    <E>;<UNDERLINE>;<SMALL>
  69509.  <E;>    <E>;<OGONEK>;<CAPITAL>
  69510.  <e;>    <E>;<OGONEK>;<SMALL>
  69511.  <E<>    <E>;<CARON>;<CAPITAL>
  69512.  <e<>    <E>;<CARON>;<SMALL>
  69513.  <F>     <F>;<NO-ACCENT>;<CAPITAL>
  69514.  <f>     <F>;<NO-ACCENT>;<SMALL>
  69515.  <F.>    <F>;<DOT>;<CAPITAL>
  69516.  <f.>    <F>;<DOT>;<SMALL>
  69517.  <ff>    <FF+>;<SPECIAL>;<SMALL>
  69518.  <fi>    <FI+>;<SPECIAL>;<SMALL>
  69519.  <fl>    <FL+>;<SPECIAL>;<SMALL>
  69520.  <ft>    <FT+>;<SPECIAL>;<SMALL>
  69521.  <G>     <G>;<NO-ACCENT>;<CAPITAL>
  69522.  <g>     <G>;<NO-ACCENT>;<SMALL>
  69523.  <G'>    <G>;<ACUTE>;<CAPITAL>
  69524.  <g'>    <G>;<ACUTE>;<SMALL>
  69525.  <G/>>   <G>;<CIRCUMFLEX>;<CAPITAL>
  69526.  <g/>>   <G>;<CIRCUMFLEX>;<SMALL>
  69527.  <G->    <G>;<MACRON>;<CAPITAL>
  69528.  <g->    <G>;<MACRON>;<SMALL>
  69529.  <G(>    <G>;<BREVE>;<CAPITAL>
  69530.  <g(>    <G>;<BREVE>;<SMALL>
  69531.  <G.>    <G>;<DOT>;<CAPITAL>
  69532.  <g.>    <G>;<DOT>;<SMALL>
  69533.  <G,>    <G>;<CEDILLA>;<CAPITAL>
  69534.  <g,>    <G>;<CEDILLA>;<SMALL>
  69535.  <G//>   <G>;<STROKE>;<CAPITAL>
  69536.  <g//>   <G>;<STROKE>;<SMALL>
  69537.  <G<>    <G>;<CARON>;<CAPITAL>
  69538.  <g<>    <G>;<CARON>;<SMALL>
  69539.  <'G>    <G>;<PRECEDED-BY-APOSTROPHE>;<CAPITAL>
  69540.  <'g>    <G>;<PRECEDED-BY-APOSTROPHE>;<SMALL>
  69541.  <H>     <H>;<NO-ACCENT>;<CAPITAL>
  69542.  <h>     <H>;<NO-ACCENT>;<SMALL>
  69543.  <H/>>   <H>;<CIRCUMFLEX>;<CAPITAL>
  69544.  <h/>>   <H>;<CIRCUMFLEX>;<SMALL>
  69545.  <H.>    <H>;<DOT>;<CAPITAL>
  69546.  <h.>    <H>;<DOT>;<SMALL>
  69547.  <H:>    <H>;<DIAERESIS>;<CAPITAL>
  69548.  
  69549.  
  69550.  
  69551.  
  69552.  
  69553.  
  69554.  
  69555.                Copyright c 1991 IEEE.  All rights reserved.
  69556.       This is an unapproved IEEE Standards Draft, subject to change.
  69557.  
  69558.  
  69559.  
  69560.  
  69561.  
  69562.  1024                                            F Sample National Profile
  69563.  
  69564.  
  69565.  
  69566.  
  69567.  
  69568.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  69569.  
  69570.  <h:>    <H>;<DIAERESIS>;<SMALL>
  69571.  <H,>    <H>;<CEDILLA>;<CAPITAL>
  69572.  <h,>    <H>;<CEDILLA>;<SMALL>
  69573.  <H//>   <H>;<STROKE>;<CAPITAL>
  69574.  <h//>   <H>;<STROKE>;<SMALL>
  69575.  <H;>    <H>;<OGONEK>;<CAPITAL>
  69576.  <h;>    <H>;<OGONEK>;<SMALL>
  69577.  <I>     <I>;<NO-ACCENT>;<CAPITAL>
  69578.  <i>     <I>;<NO-ACCENT>;<SMALL>
  69579.  <I'>    <I>;<ACUTE>;<CAPITAL>
  69580.  <i'>    <I>;<ACUTE>;<SMALL>
  69581.  <I!>    <I>;<GRAVE>;<CAPITAL>
  69582.  <i!>    <I>;<GRAVE>;<SMALL>
  69583.  <I/>>   <I>;<CIRCUMFLEX>;<CAPITAL>
  69584.  <i/>>   <I>;<CIRCUMFLEX>;<SMALL>
  69585.  <I?>    <I>;<TILDE>;<CAPITAL>
  69586.  <i?>    <I>;<TILDE>;<SMALL>
  69587.  <I->    <I>;<MACRON>;<CAPITAL>
  69588.  <i->    <I>;<MACRON>;<SMALL>
  69589.  <I(>    <I>;<BREVE>;<CAPITAL>
  69590.  <i(>    <I>;<BREVE>;<SMALL>
  69591.  <I.>    <I>;<DOT>;<CAPITAL>
  69592.  <i.>    <I>;<DOT>;<SMALL>
  69593.  <I:>    <I>;<DIAERESIS>;<CAPITAL>
  69594.  <i:>    <I>;<DIAERESIS>;<SMALL>
  69595.  <I;>    <I>;<OGONEK>;<CAPITAL>
  69596.  <i;>    <I>;<OGONEK>;<SMALL>
  69597.  <I<>    <I>;<CARON>;<CAPITAL>
  69598.  <i<>    <I>;<CARON>;<SMALL>
  69599.  <I-J>   <I><J>;<I-J><I-J>;<CAPITAL><CAPITAL>
  69600.  <i-j>   <I><J>;<I-J><I-J>;<SMALL><SMALL>
  69601.  <IJ>    <I><J>;<IJ><IJ>;<CAPITAL><CAPITAL>
  69602.  <ij>    <I><J>;<IJ><IJ>;<SMALL><SMALL>
  69603.  <J>     <J>;<NO-ACCENT>;<CAPITAL>
  69604.  <j>     <J>;<NO-ACCENT>;<SMALL>
  69605.  <J/>>   <J>;<CIRCUMFLEX>;<CAPITAL>
  69606.  <j/>>   <J>;<CIRCUMFLEX>;<SMALL>
  69607.  <J(>    <J>;<BREVE>;<CAPITAL>
  69608.  <j(>    <J>;<BREVE>;<SMALL>
  69609.  <'J>    <J>;<PRECEDED-BY-APOSTROPHE>;<CAPITAL>
  69610.  <'j>    <J>;<PRECEDED-BY-APOSTROPHE>;<SMALL>
  69611.  <K>     <K>;<NO-ACCENT>;<CAPITAL>
  69612.  <k>     <K>;<NO-ACCENT>;<SMALL>
  69613.  <K'>    <K>;<ACUTE>;<CAPITAL>
  69614.  
  69615.  
  69616.  
  69617.  
  69618.  
  69619.  
  69620.  
  69621.                Copyright c 1991 IEEE.  All rights reserved.
  69622.       This is an unapproved IEEE Standards Draft, subject to change.
  69623.  
  69624.  
  69625.  
  69626.  
  69627.  
  69628.  F.3 Scope of Danish National Locale                                  1025
  69629.  
  69630.  
  69631.  
  69632.  
  69633.  
  69634.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  69635.  
  69636.  <k'>    <K>;<ACUTE>;<SMALL>
  69637.  <K.>    <K>;<DOT>;<CAPITAL>
  69638.  <k.>    <K>;<DOT>;<SMALL>
  69639.  <K,>    <K>;<CEDILLA>;<CAPITAL>
  69640.  <k,>    <K>;<CEDILLA>;<SMALL>
  69641.  <K_>    <K>;<UNDERLINE>;<CAPITAL>
  69642.  <k_>    <K>;<UNDERLINE>;<SMALL>
  69643.  <K;>    <K>;<OGONEK>;<CAPITAL>
  69644.  <k;>    <K>;<OGONEK>;<SMALL>
  69645.  <K<>    <K>;<CARON>;<CAPITAL>
  69646.  <k<>    <K>;<CARON>;<SMALL>
  69647.  <L>     <L>;<NO-ACCENT>;<CAPITAL>
  69648.  <l>     <L>;<NO-ACCENT>;<SMALL>
  69649.  <L'>    <L>;<ACUTE>;<CAPITAL>
  69650.  <l'>    <L>;<ACUTE>;<SMALL>
  69651.  <L.>    <L>;<DOT>;<CAPITAL>
  69652.  <l.>    <L>;<DOT>;<SMALL>
  69653.  <L,>    <L>;<CEDILLA>;<CAPITAL>
  69654.  <l,>    <L>;<CEDILLA>;<SMALL>
  69655.  <L_>    <L>;<UNDERLINE>;<CAPITAL>
  69656.  <l_>    <L>;<UNDERLINE>;<SMALL>
  69657.  <L//>   <L>;<STROKE>;<CAPITAL>
  69658.  <l//>   <L>;<STROKE>;<SMALL>
  69659.  <L<>    <L>;<CARON>;<CAPITAL>
  69660.  <l<>    <L>;<CARON>;<SMALL>
  69661.  <M>     <M>;<NO-ACCENT>;<CAPITAL>
  69662.  <m>     <M>;<NO-ACCENT>;<SMALL>
  69663.  <M'>    <M>;<ACUTE>;<CAPITAL>
  69664.  <m'>    <M>;<ACUTE>;<SMALL>
  69665.  <M.>    <M>;<DOT>;<CAPITAL>
  69666.  <m.>    <M>;<DOT>;<SMALL>
  69667.  <N>     <N>;<NO-ACCENT>;<CAPITAL>
  69668.  <n>     <N>;<NO-ACCENT>;<SMALL>
  69669.  <N'>    <N>;<ACUTE>;<CAPITAL>
  69670.  <n'>    <N>;<ACUTE>;<SMALL>
  69671.  <N?>    <N>;<TILDE>;<CAPITAL>
  69672.  <n?>    <N>;<TILDE>;<SMALL>
  69673.  <N.>    <N>;<DOT>;<CAPITAL>
  69674.  <n.>    <N>;<DOT>;<SMALL>
  69675.  <N,>    <N>;<CEDILLA>;<CAPITAL>
  69676.  <n,>    <N>;<CEDILLA>;<SMALL>
  69677.  <N_>    <N>;<UNDERLINE>;<CAPITAL>
  69678.  <n_>    <N>;<UNDERLINE>;<SMALL>
  69679.  <N<>    <N>;<CARON>;<CAPITAL>
  69680.  
  69681.  
  69682.  
  69683.  
  69684.  
  69685.  
  69686.  
  69687.                Copyright c 1991 IEEE.  All rights reserved.
  69688.       This is an unapproved IEEE Standards Draft, subject to change.
  69689.  
  69690.  
  69691.  
  69692.  
  69693.  
  69694.  1026                                            F Sample National Profile
  69695.  
  69696.  
  69697.  
  69698.  
  69699.  
  69700.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  69701.  
  69702.  <n<>    <N>;<CARON>;<SMALL>
  69703.  <'n>    <N>;<PRECEDED-BY-APOSTROPHE>;<SMALL>
  69704.  <N-G>   <N><G>;<N-G><N-G>;<CAPITAL><CAPITAL>
  69705.  <n-g>   <N><G>;<N-G><N-G>;<SMALL><SMALL>
  69706.  <NG>    <N><G>;<NG><NG>;<CAPITAL><CAPITAL>
  69707.  <ng>    <N><G>;<NG><NG>;<SMALL><SMALL>
  69708.  <O>     <O>;<NO-ACCENT>;<CAPITAL>
  69709.  <o>     <O>;<NO-ACCENT>;<SMALL>
  69710.  <O'>    <O>;<ACUTE>;<CAPITAL>
  69711.  <o'>    <O>;<ACUTE>;<SMALL>
  69712.  <O!>    <O>;<GRAVE>;<CAPITAL>
  69713.  <o!>    <O>;<GRAVE>;<SMALL>
  69714.  <O/>>   <O>;<CIRCUMFLEX>;<CAPITAL>
  69715.  <o/>>   <O>;<CIRCUMFLEX>;<SMALL>
  69716.  <O?>    <O>;<TILDE>;<CAPITAL>
  69717.  <o?>    <O>;<TILDE>;<SMALL>
  69718.  <O->    <O>;<MACRON>;<CAPITAL>
  69719.  <o->    <O>;<MACRON>;<SMALL>
  69720.  <O(>    <O>;<BREVE>;<CAPITAL>
  69721.  <o(>    <O>;<BREVE>;<SMALL>
  69722.  <O_>    <O>;<UNDERLINE>;<CAPITAL>
  69723.  <o_>    <O>;<UNDERLINE>;<SMALL>
  69724.  <O;>    <O>;<OGONEK>;<CAPITAL>
  69725.  <o;>    <O>;<OGONEK>;<SMALL>
  69726.  <O<>    <O>;<CARON>;<CAPITAL>
  69727.  <o<>    <O>;<CARON>;<SMALL>
  69728.  <O1>    <O>;<ACC1>;<CAPITAL>
  69729.  <o1>    <O>;<ACC1>;<SMALL>
  69730.  <O-E>   <O><E>;<O-E><O-E>;<CAPITAL><CAPITAL>
  69731.  <o-e>   <O><E>;<O-E><O-E>;<SMALL><SMALL>
  69732.  <OE>    <O><E>;<OE><OE>;<CAPITAL><CAPITAL>
  69733.  <oe>    <O><E>;<OE><OE>;<SMALL><SMALL>
  69734.  <P>     <P>;<NO-ACCENT>;<CAPITAL>
  69735.  <p>     <P>;<NO-ACCENT>;<SMALL>
  69736.  <P'>    <P>;<ACUTE>;<CAPITAL>
  69737.  <p'>    <P>;<ACUTE>;<SMALL>
  69738.  <Q>     <Q>;<NO-ACCENT>;<CAPITAL>
  69739.  <q>     <Q>;<NO-ACCENT>;<SMALL>
  69740.  <kk>    <Q>;<SPECIAL>;<SMALL>
  69741.  <R>     <R>;<NO-ACCENT>;<CAPITAL>
  69742.  <r>     <R>;<NO-ACCENT>;<SMALL>
  69743.  <R'>    <R>;<ACUTE>;<CAPITAL>
  69744.  <r'>    <R>;<ACUTE>;<SMALL>
  69745.  <R.>    <R>;<DOT>;<CAPITAL>
  69746.  
  69747.  
  69748.  
  69749.  
  69750.  
  69751.  
  69752.  
  69753.                Copyright c 1991 IEEE.  All rights reserved.
  69754.       This is an unapproved IEEE Standards Draft, subject to change.
  69755.  
  69756.  
  69757.  
  69758.  
  69759.  
  69760.  F.3 Scope of Danish National Locale                                  1027
  69761.  
  69762.  
  69763.  
  69764.  
  69765.  
  69766.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  69767.  
  69768.  <r.>    <R>;<DOT>;<SMALL>
  69769.  <R,>    <R>;<CEDILLA>;<CAPITAL>
  69770.  <r,>    <R>;<CEDILLA>;<SMALL>
  69771.  <R_>    <R>;<UNDERLINE>;<CAPITAL>
  69772.  <r_>    <R>;<UNDERLINE>;<SMALL>
  69773.  <R<>    <R>;<CARON>;<CAPITAL>
  69774.  <r<>    <R>;<CARON>;<SMALL>
  69775.  <S>     <S>;<NO-ACCENT>;<CAPITAL>
  69776.  <s>     <S>;<NO-ACCENT>;<SMALL>
  69777.  <S'>    <S>;<ACUTE>;<CAPITAL>
  69778.  <s'>    <S>;<ACUTE>;<SMALL>
  69779.  <S/>>   <S>;<CIRCUMFLEX>;<CAPITAL>
  69780.  <s/>>   <S>;<CIRCUMFLEX>;<SMALL>
  69781.  <S.>    <S>;<DOT>;<CAPITAL>
  69782.  <s.>    <S>;<DOT>;<SMALL>
  69783.  <S,>    <S>;<CEDILLA>;<CAPITAL>
  69784.  <s,>    <S>;<CEDILLA>;<SMALL>
  69785.  <S;>    <S>;<OGONEK>;<CAPITAL>
  69786.  <s;>    <S>;<OGONEK>;<SMALL>
  69787.  <S<>    <S>;<CARON>;<CAPITAL>
  69788.  <s<>    <S>;<CARON>;<SMALL>
  69789.  <ss>    <S><S>;<ss><ss>;<SMALL><SMALL>                                     1
  69790.  <s-s>   <S><S>;<s-s><s-s>;<SMALL><SMALL>                                   1
  69791.  <st>    <ST+>;<SPECIAL>;<SMALL>
  69792.  <T>     <T>;<NO-ACCENT>;<CAPITAL>
  69793.  <t>     <T>;<NO-ACCENT>;<SMALL>
  69794.  <T.>    <T>;<DOT>;<CAPITAL>
  69795.  <t.>    <T>;<DOT>;<SMALL>
  69796.  <T,>    <T>;<CEDILLA>;<CAPITAL>
  69797.  <t,>    <T>;<CEDILLA>;<SMALL>
  69798.  <T_>    <T>;<UNDERLINE>;<CAPITAL>
  69799.  <t_>    <T>;<UNDERLINE>;<SMALL>
  69800.  <T//>   <T>;<STROKE>;<CAPITAL>
  69801.  <t//>   <T>;<STROKE>;<SMALL>
  69802.  <T<>    <T>;<CARON>;<CAPITAL>
  69803.  <t<>    <T>;<CARON>;<SMALL>
  69804.  <T-H>   <T><H>;<T-H><T-H>;<CAPITAL><CAPITAL>
  69805.  <t-h>   <T><H>;<T-H><T-H>;<SMALL><SMALL>
  69806.  <TH>    <T><H>;<TH><TH>;<CAPITAL><CAPITAL>
  69807.  <th>    <T><H>;<TH><TH>;<SMALL><SMALL>
  69808.  <U>     <U>;<NO-ACCENT>;<CAPITAL>
  69809.  <u>     <U>;<NO-ACCENT>;<SMALL>
  69810.  <U'>    <U>;<ACUTE>;<CAPITAL>
  69811.  <u'>    <U>;<ACUTE>;<SMALL>
  69812.  
  69813.  
  69814.  
  69815.  
  69816.  
  69817.  
  69818.  
  69819.                Copyright c 1991 IEEE.  All rights reserved.
  69820.       This is an unapproved IEEE Standards Draft, subject to change.
  69821.  
  69822.  
  69823.  
  69824.  
  69825.  
  69826.  1028                                            F Sample National Profile
  69827.  
  69828.  
  69829.  
  69830.  
  69831.  
  69832.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  69833.  
  69834.  <U!>    <U>;<GRAVE>;<CAPITAL>
  69835.  <u!>    <U>;<GRAVE>;<SMALL>
  69836.  <U/>>   <U>;<CIRCUMFLEX>;<CAPITAL>
  69837.  <u/>>   <U>;<CIRCUMFLEX>;<SMALL>
  69838.  <U?>    <U>;<TILDE>;<CAPITAL>
  69839.  <u?>    <U>;<TILDE>;<SMALL>
  69840.  <U->    <U>;<MACRON>;<CAPITAL>
  69841.  <u->    <U>;<MACRON>;<SMALL>
  69842.  <U(>    <U>;<BREVE>;<CAPITAL>
  69843.  <u(>    <U>;<BREVE>;<SMALL>
  69844.  <U;>    <U>;<OGONEK>;<CAPITAL>                                             1
  69845.  <u;>    <U>;<OGONEK>;<SMALL>
  69846.  <U<>    <U>;<CARON>;<CAPITAL>
  69847.  <u<>    <U>;<CARON>;<SMALL>
  69848.  <U0>    <U>;<RING>;<CAPITAL>                                               1
  69849.  <u0>    <U>;<RING>;<SMALL>                                                 1
  69850.  <V>     <V>;<NO-ACCENT>;<CAPITAL>
  69851.  <v>     <V>;<NO-ACCENT>;<SMALL>
  69852.  <V?>    <V>;<TILDE>;<CAPITAL>
  69853.  <v?>    <V>;<TILDE>;<SMALL>
  69854.  <W>     <W>;<NO-ACCENT>;<CAPITAL>
  69855.  <w>     <W>;<NO-ACCENT>;<SMALL>
  69856.  <W'>    <W>;<ACUTE>;<CAPITAL>
  69857.  <w'>    <W>;<ACUTE>;<SMALL>
  69858.  <W/>>   <W>;<CIRCUMFLEX>;<CAPITAL>
  69859.  <w/>>   <W>;<CIRCUMFLEX>;<SMALL>
  69860.  <W.>    <W>;<DOT>;<CAPITAL>
  69861.  <w.>    <W>;<DOT>;<SMALL>
  69862.  <W:>    <W>;<DIAERESIS>;<CAPITAL>
  69863.  <w:>    <W>;<DIAERESIS>;<SMALL>
  69864.  <X>     <X>;<NO-ACCENT>;<CAPITAL>
  69865.  <x>     <X>;<NO-ACCENT>;<SMALL>
  69866.  <X.>    <X>;<DOT>;<CAPITAL>
  69867.  <x.>    <X>;<DOT>;<SMALL>
  69868.  <X:>    <X>;<DIAERESIS>;<CAPITAL>
  69869.  <x:>    <X>;<DIAERESIS>;<SMALL>
  69870.  <Y>     <Y>;<NO-ACCENT>;<CAPITAL>
  69871.  <y>     <Y>;<NO-ACCENT>;<SMALL>
  69872.  <Y'>    <Y>;<ACUTE>;<CAPITAL>
  69873.  <y'>    <Y>;<ACUTE>;<SMALL>
  69874.  <Y!>    <Y>;<GRAVE>;<CAPITAL>
  69875.  <y!>    <Y>;<GRAVE>;<SMALL>
  69876.  <Y/>>   <Y>;<CIRCUMFLEX>;<CAPITAL>
  69877.  <y/>>   <Y>;<CIRCUMFLEX>;<SMALL>
  69878.  
  69879.  
  69880.  
  69881.  
  69882.  
  69883.  
  69884.  
  69885.                Copyright c 1991 IEEE.  All rights reserved.
  69886.       This is an unapproved IEEE Standards Draft, subject to change.
  69887.  
  69888.  
  69889.  
  69890.  
  69891.  
  69892.  F.3 Scope of Danish National Locale                                  1029
  69893.  
  69894.  
  69895.  
  69896.  
  69897.  
  69898.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  69899.  
  69900.  <Y.>    <Y>;<DOT>;<CAPITAL>
  69901.  <y.>    <Y>;<DOT>;<SMALL>
  69902.  <'Y>    <Y>;<PRECEDED-BY-APOSTROPHE>;<CAPITAL>
  69903.  <'y>    <Y>;<PRECEDED-BY-APOSTROPHE>;<SMALL>
  69904.  % <U:> and <U"> are treated as <Y> in Danish                               1
  69905.  <U:>    <Y>;<ACC11>;<CAPITAL>
  69906.  <u:>    <Y>;<ACC11>;<SMALL>
  69907.  <U">    <Y>;<ACC12>;<CAPITAL>
  69908.  <u">    <Y>;<ACC12>;<SMALL>
  69909.  <Z>     <Z>;<NO-ACCENT>;<CAPITAL>
  69910.  <z>     <Z>;<NO-ACCENT>;<SMALL>
  69911.  <Z'>    <Z>;<ACUTE>;<CAPITAL>
  69912.  <z'>    <Z>;<ACUTE>;<SMALL>
  69913.  <Z/>>   <Z>;<CIRCUMFLEX>;<CAPITAL>
  69914.  <z/>>   <Z>;<CIRCUMFLEX>;<SMALL>
  69915.  <Z(>    <Z>;<BREVE>;<CAPITAL>
  69916.  <z(>    <Z>;<BREVE>;<SMALL>
  69917.  <Z.>    <Z>;<DOT>;<CAPITAL>
  69918.  <z.>    <Z>;<DOT>;<SMALL>
  69919.  <Z_>    <Z>;<UNDERLINE>;<CAPITAL>
  69920.  <z_>    <Z>;<UNDERLINE>;<SMALL>
  69921.  <Z//>   <Z>;<STROKE>;<CAPITAL>
  69922.  <z//>   <Z>;<STROKE>;<SMALL>
  69923.  <Z<>    <Z>;<CARON>;<CAPITAL>
  69924.  <z<>    <Z>;<CARON>;<SMALL>
  69925.  % <AE> is treated as a separate letter in Danish                           1
  69926.  <AE>    <AE>;<NO-ACCENT>;<CAPITAL>
  69927.  <ae>    <AE>;<NO-ACCENT>;<SMALL>
  69928.  <A:>    <AE>;<DIAERESIS>;<CAPITAL>
  69929.  <a:>    <AE>;<DIAERESIS>;<SMALL>
  69930.  <A3>    <AE>;<ACC3>;<CAPITAL>
  69931.  <a3>    <AE>;<ACC3>;<SMALL>
  69932.  % <O//> is treated as a separate letter in Danish                          1
  69933.  <O//>   <O//>;<NO-ACCENT>;<CAPITAL>
  69934.  <o//>   <O//>;<NO-ACCENT>;<SMALL>
  69935.  <O:>    <O//>;<DIAERESIS>;<CAPITAL>
  69936.  <o:>    <O//>;<DIAERESIS>;<SMALL>
  69937.  <O">    <O//>;<DOUBLE-ACUTE>;<CAPITAL>
  69938.  <o">    <O//>;<DOUBLE-ACUTE>;<SMALL>
  69939.  % <AA> is treated as a separate letter in Danish                           1
  69940.  <AA>    <AA>;<NO-ACCENT>;<CAPITAL>
  69941.  <aa>    <AA>;<NO-ACCENT>;<SMALL>
  69942.  <A-A>   <AA>;<ACC1>;<CAPITAL>
  69943.  <A-a>   <AA>;<ACC1>;<BOTH>
  69944.  
  69945.  
  69946.  
  69947.  
  69948.  
  69949.  
  69950.  
  69951.                Copyright c 1991 IEEE.  All rights reserved.
  69952.       This is an unapproved IEEE Standards Draft, subject to change.
  69953.  
  69954.  
  69955.  
  69956.  
  69957.  
  69958.  1030                                            F Sample National Profile
  69959.  
  69960.  
  69961.  
  69962.  
  69963.  
  69964.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  69965.  
  69966.  <a-a>   <AA>;<ACC1>;<SMALL>
  69967.  
  69968.  <A=>    <A=>;<CYRILLIC>;<CAPITAL>
  69969.  <a=>    <A=>;<CYRILLIC>;<SMALL>
  69970.  <B=>    <B=>;<CYRILLIC>;<CAPITAL>
  69971.  <b=>    <B=>;<CYRILLIC>;<SMALL>
  69972.  <V=>    <V=>;<CYRILLIC>;<CAPITAL>
  69973.  <v=>    <V=>;<CYRILLIC>;<SMALL>
  69974.  <G=>    <G=>;<CYRILLIC>;<CAPITAL>
  69975.  <g=>    <G=>;<CYRILLIC>;<SMALL>
  69976.  <G%>    <G=>;<ALPHA-1>;<CAPITAL>
  69977.  <g%>    <G=>;<ALPHA-1>;<SMALL>
  69978.  <D=>    <D=>;<CYRILLIC>;<CAPITAL>
  69979.  <d=>    <D=>;<CYRILLIC>;<SMALL>
  69980.  <D%>    <D%>;<ALPHA-1>;<CAPITAL>
  69981.  <d%>    <D%>;<ALPHA-1>;<SMALL>
  69982.  <E=>    <E=>;<CYRILLIC>;<CAPITAL>
  69983.  <e=>    <E=>;<CYRILLIC>;<SMALL>
  69984.  <IO>    <E=>;<SPECIAL>;<CAPITAL>
  69985.  <io>    <E=>;<SPECIAL>;<SMALL>
  69986.  <IE>    <IE>;<SPECIAL>;<CAPITAL>
  69987.  <ie>    <IE>;<SPECIAL>;<SMALL>
  69988.  <Z%>    <Z%>;<ALPHA-1>;<CAPITAL>
  69989.  <z%>    <Z%>;<ALPHA-1>;<SMALL>
  69990.  <Z=>    <Z=>;<CYRILLIC>;<CAPITAL>
  69991.  <z=>    <Z=>;<CYRILLIC>;<SMALL>
  69992.  <DS>    <DS>;<SPECIAL>;<CAPITAL>                                           1
  69993.  <ds>    <DS>;<SPECIAL>;<SMALL>                                             1
  69994.  <I=>    <I=>;<CYRILLIC>;<CAPITAL>
  69995.  <i=>    <I=>;<CYRILLIC>;<SMALL>
  69996.  <II>    <II>;<SPECIAL>;<CAPITAL>
  69997.  <ii>    <II>;<SPECIAL>;<SMALL>
  69998.  <YI>    <II>;<ALPHA-1>;<CAPITAL>
  69999.  <yi>    <II>;<ALPHA-1>;<SMALL>
  70000.  <J%>    <J%>;<ALPHA-1>;<CAPITAL>
  70001.  <j%>    <J%>;<ALPHA-1>;<SMALL>
  70002.  <J=>    <J=>;<CYRILLIC>;<CAPITAL>
  70003.  <j=>    <J=>;<CYRILLIC>;<SMALL>
  70004.  <K=>    <K=>;<CYRILLIC>;<CAPITAL>
  70005.  <k=>    <K=>;<CYRILLIC>;<SMALL>
  70006.  <KJ>    <K=>;<SPECIAL>;<CAPITAL>
  70007.  <kj>    <K=>;<SPECIAL>;<SMALL>
  70008.  <L=>    <L=>;<CYRILLIC>;<CAPITAL>
  70009.  <l=>    <L=>;<CYRILLIC>;<SMALL>
  70010.  
  70011.  
  70012.  
  70013.  
  70014.  
  70015.  
  70016.  
  70017.                Copyright c 1991 IEEE.  All rights reserved.
  70018.       This is an unapproved IEEE Standards Draft, subject to change.
  70019.  
  70020.  
  70021.  
  70022.  
  70023.  
  70024.  F.3 Scope of Danish National Locale                                  1031
  70025.  
  70026.  
  70027.  
  70028.  
  70029.  
  70030.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  70031.  
  70032.  <LJ>    <LJ>;<SPECIAL>;<CAPITAL>
  70033.  <lj>    <LJ>;<SPECIAL>;<SMALL>
  70034.  <M=>    <M=>;<CYRILLIC>;<CAPITAL>
  70035.  <m=>    <M=>;<CYRILLIC>;<SMALL>
  70036.  <N=>    <N=>;<CYRILLIC>;<CAPITAL>
  70037.  <n=>    <N=>;<CYRILLIC>;<SMALL>
  70038.  <NJ>    <NJ>;<SPECIAL>;<CAPITAL>
  70039.  <nj>    <NJ>;<SPECIAL>;<SMALL>
  70040.  <O=>    <O=>;<CYRILLIC>;<CAPITAL>
  70041.  <o=>    <O=>;<CYRILLIC>;<SMALL>
  70042.  <P=>    <P=>;<CYRILLIC>;<CAPITAL>
  70043.  <p=>    <P=>;<CYRILLIC>;<SMALL>
  70044.  <R=>    <R=>;<CYRILLIC>;<CAPITAL>
  70045.  <r=>    <R=>;<CYRILLIC>;<SMALL>
  70046.  <S=>    <S=>;<CYRILLIC>;<CAPITAL>
  70047.  <s=>    <S=>;<CYRILLIC>;<SMALL>
  70048.  <T=>    <T=>;<CYRILLIC>;<CAPITAL>
  70049.  <t=>    <T=>;<CYRILLIC>;<SMALL>
  70050.  <Ts>    <Ts>;<SPECIAL>;<CAPITAL>
  70051.  <ts>    <Ts>;<SPECIAL>;<SMALL>
  70052.  <U=>    <U=>;<CYRILLIC>;<CAPITAL>
  70053.  <u=>    <U=>;<CYRILLIC>;<SMALL>
  70054.  <V%>    <V%>;<ALPHA-1>;<CAPITAL>
  70055.  <v%>    <V%>;<ALPHA-1>;<SMALL>
  70056.  <F=>    <F=>;<CYRILLIC>;<CAPITAL>
  70057.  <f=>    <F=>;<CYRILLIC>;<SMALL>
  70058.  <H=>    <H=>;<CYRILLIC>;<CAPITAL>
  70059.  <h=>    <H=>;<CYRILLIC>;<SMALL>
  70060.  <C=>    <C=>;<CYRILLIC>;<CAPITAL>
  70061.  <c=>    <C=>;<CYRILLIC>;<SMALL>
  70062.  <C%>    <C%>;<ALPHA-1>;<CAPITAL>
  70063.  <c%>    <C%>;<ALPHA-1>;<SMALL>
  70064.  <DZ>    <DZ>;<SPECIAL>;<CAPITAL>
  70065.  <dz>    <DZ>;<SPECIAL>;<SMALL>
  70066.  <S%>    <S%>;<ALPHA-1>;<CAPITAL>
  70067.  <s%>    <S%>;<ALPHA-1>;<SMALL>
  70068.  <Sc>    <Sc>;<SPECIAL>;<CAPITAL>
  70069.  <sc>    <Sc>;<SPECIAL>;<SMALL>
  70070.  <='>    <='>;<ACUTE>;<SMALL>
  70071.  <=">    <='>;<DOUBLE-ACUTE>;<CAPITAL>
  70072.  <Y=>    <Y=>;<CYRILLIC>;<CAPITAL>
  70073.  <y=>    <Y=>;<CYRILLIC>;<SMALL>
  70074.  <%'>    <%'>;<ACUTE>;<SMALL>
  70075.  <%">    <%'>;<DOUBLE-ACUTE>;<CAPITAL>
  70076.  
  70077.  
  70078.  
  70079.  
  70080.  
  70081.  
  70082.  
  70083.                Copyright c 1991 IEEE.  All rights reserved.
  70084.       This is an unapproved IEEE Standards Draft, subject to change.
  70085.  
  70086.  
  70087.  
  70088.  
  70089.  
  70090.  1032                                            F Sample National Profile
  70091.  
  70092.  
  70093.  
  70094.  
  70095.  
  70096.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  70097.  
  70098.  <JE>    <JE>;<SPECIAL>;<CAPITAL>
  70099.  <je>    <JE>;<SPECIAL>;<SMALL>
  70100.  <JU>    <JU>;<SPECIAL>;<CAPITAL>
  70101.  <ju>    <JU>;<SPECIAL>;<SMALL>
  70102.  <JA>    <JA>;<SPECIAL>;<CAPITAL>
  70103.  <ja>    <JA>;<SPECIAL>;<SMALL>
  70104.  <A*>    <A*>;<GREEK>;<CAPITAL>                                             1
  70105.  <a*>    <A*>;<GREEK>;<SMALL>
  70106.  <A%>    <A*>;<ALPHA-1>;<CAPITAL>
  70107.  <a%>    <A*>;<ALPHA-1>;<SMALL>
  70108.  <B*>    <B*>;<GREEK>;<CAPITAL>
  70109.  <b*>    <B*>;<GREEK>;<SMALL>
  70110.  <G*>    <G*>;<GREEK>;<CAPITAL>
  70111.  <g*>    <G*>;<GREEK>;<SMALL>
  70112.  <D*>    <D*>;<GREEK>;<CAPITAL>
  70113.  <d*>    <D*>;<GREEK>;<SMALL>
  70114.  <E*>    <E*>;<GREEK>;<CAPITAL>
  70115.  <e*>    <E*>;<GREEK>;<SMALL>
  70116.  <E%>    <E*>;<ALPHA-1>;<CAPITAL>
  70117.  <e%>    <E*>;<ALPHA-1>;<SMALL>
  70118.  <Z*>    <Z*>;<GREEK>;<CAPITAL>
  70119.  <z*>    <Z*>;<GREEK>;<SMALL>
  70120.  <Y*>    <Y*>;<GREEK>;<CAPITAL>
  70121.  <y*>    <Y*>;<GREEK>;<SMALL>
  70122.  <Y%>    <Y*>;<ALPHA-1>;<CAPITAL>
  70123.  <y%>    <Y*>;<ALPHA-1>;<SMALL>
  70124.  <H*>    <H*>;<GREEK>;<CAPITAL>
  70125.  <h*>    <H*>;<GREEK>;<SMALL>
  70126.  <I*>    <I*>;<GREEK>;<CAPITAL>                                             1
  70127.  <J*>    <I*>;<GREEK>;<CAPITAL>                                             1
  70128.  <i*>    <I*>;<GREEK>;<SMALL>                                               1
  70129.  <j*>    <I*>;<GREEK>;<SMALL>                                               1
  70130.  <I%>    <I*>;<ALPHA-1>;<CAPITAL>                                           1
  70131.  <i%>    <I*>;<ALPHA-1>;<SMALL>                                             1
  70132.  <K*>    <K*>;<GREEK>;<CAPITAL>                                             1
  70133.  <k*>    <K*>;<GREEK>;<SMALL>                                               1
  70134.  <L*>    <L*>;<GREEK>;<CAPITAL>                                             1
  70135.  <l*>    <L*>;<GREEK>;<SMALL>                                               1
  70136.  <M*>    <M*>;<GREEK>;<CAPITAL>                                             1
  70137.  <m*>    <M*>;<GREEK>;<SMALL>                                               1
  70138.  <N*>    <N*>;<GREEK>;<CAPITAL>                                             1
  70139.  <n*>    <N*>;<GREEK>;<SMALL>                                               1
  70140.  <C*>    <C*>;<GREEK>;<CAPITAL>                                             1
  70141.  <c*>    <C*>;<GREEK>;<SMALL>                                               1
  70142.  
  70143.  
  70144.  
  70145.  
  70146.  
  70147.  
  70148.  
  70149.                Copyright c 1991 IEEE.  All rights reserved.
  70150.       This is an unapproved IEEE Standards Draft, subject to change.
  70151.  
  70152.  
  70153.  
  70154.  
  70155.  
  70156.  F.3 Scope of Danish National Locale                                  1033
  70157.  
  70158.  
  70159.  
  70160.  
  70161.  
  70162.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  70163.  
  70164.  <O*>    <O*>;<GREEK>;<CAPITAL>
  70165.  <o*>    <O*>;<GREEK>;<SMALL>
  70166.  <O%>    <O*>;<ALPHA-1>;<CAPITAL>
  70167.  <o%>    <O*>;<ALPHA-1>;<SMALL>
  70168.  <P*>    <P*>;<GREEK>;<CAPITAL>
  70169.  <p*>    <P*>;<GREEK>;<SMALL>
  70170.  <R*>    <R*>;<GREEK>;<CAPITAL>
  70171.  <r*>    <R*>;<GREEK>;<SMALL>
  70172.  <S*>    <S*>;<GREEK>;<CAPITAL>
  70173.  <s*>    <S*>;<GREEK>;<SMALL>
  70174.  <*s>    <S*>;<SPECIAL>;<SMALL>
  70175.  <T*>    <T*>;<GREEK>;<CAPITAL>
  70176.  <t*>    <T*>;<GREEK>;<SMALL>
  70177.  <U*>    <U*>;<GREEK>;<CAPITAL>
  70178.  <V*>    <U*>;<GREEK>;<CAPITAL>
  70179.  <u*>    <U*>;<GREEK>;<SMALL>
  70180.  <v*>    <U*>;<GREEK>;<SMALL>
  70181.  <U%>    <U*>;<ALPHA-1>;<CAPITAL>
  70182.  <u%>    <U*>;<ALPHA-1>;<SMALL>
  70183.  <F*>    <F*>;<GREEK>;<CAPITAL>
  70184.  <f*>    <F*>;<GREEK>;<SMALL>
  70185.  <X*>    <X*>;<GREEK>;<CAPITAL>
  70186.  <x*>    <X*>;<GREEK>;<SMALL>
  70187.  <Q*>    <Q*>;<GREEK>;<CAPITAL>
  70188.  <q*>    <Q*>;<GREEK>;<SMALL>
  70189.  <W*>    <W*>;<GREEK>;<CAPITAL>
  70190.  <w*>    <W*>;<GREEK>;<SMALL>
  70191.  <W%>    <W*>;<ALPHA-1>;<CAPITAL>
  70192.  <w%>    <W*>;<ALPHA-1>;<SMALL>
  70193.  <p+>
  70194.  <v+>
  70195.  <gf>
  70196.  <H'>
  70197.  <aM>
  70198.  <aH>
  70199.  <wH>
  70200.  <ah>
  70201.  <yH>
  70202.  <a+>
  70203.  <b+>
  70204.  <tm>
  70205.  <t+>
  70206.  <tk>
  70207.  <g+>
  70208.  
  70209.  
  70210.  
  70211.  
  70212.  
  70213.  
  70214.  
  70215.                Copyright c 1991 IEEE.  All rights reserved.
  70216.       This is an unapproved IEEE Standards Draft, subject to change.
  70217.  
  70218.  
  70219.  
  70220.  
  70221.  
  70222.  1034                                            F Sample National Profile
  70223.  
  70224.  
  70225.  
  70226.  
  70227.  
  70228.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  70229.  
  70230.  <hk>
  70231.  <x+>
  70232.  <d+>
  70233.  <dk>
  70234.  <r+>
  70235.  <z+>
  70236.  <s+>
  70237.  <sn>
  70238.  <c+>
  70239.  <dd>
  70240.  <tj>
  70241.  <zH>
  70242.  <e+>
  70243.  <i+>
  70244.  <f+>
  70245.  <q+>
  70246.  <k+>
  70247.  <l+>
  70248.  <m+>
  70249.  <n+>
  70250.  <h+>
  70251.  <w+>
  70252.  <j+>
  70253.  <y+>
  70254.  <yf>
  70255.  <A+>
  70256.  <B+>
  70257.  <G+>
  70258.  <D+>
  70259.  <H+>
  70260.  <W+>
  70261.  <Z+>
  70262.  <X+>
  70263.  <Tj>
  70264.  <J+>
  70265.  <K%>
  70266.  <K+>
  70267.  <L+>
  70268.  <M%>
  70269.  <M+>
  70270.  <N%>
  70271.  <N+>
  70272.  <S+>
  70273.  <E+>
  70274.  
  70275.  
  70276.  
  70277.  
  70278.  
  70279.  
  70280.  
  70281.                Copyright c 1991 IEEE.  All rights reserved.
  70282.       This is an unapproved IEEE Standards Draft, subject to change.
  70283.  
  70284.  
  70285.  
  70286.  
  70287.  
  70288.  F.3 Scope of Danish National Locale                                  1035
  70289.  
  70290.  
  70291.  
  70292.  
  70293.  
  70294.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  70295.  
  70296.  <P%>
  70297.  <P+>
  70298.  <Zj>
  70299.  <ZJ>
  70300.  <Q+>
  70301.  <R+>
  70302.  <Sh>
  70303.  <T+>
  70304.  <b4>
  70305.  <p4>
  70306.  <m4>
  70307.  <f4>
  70308.  <d4>
  70309.  <t4>
  70310.  <n4>
  70311.  <l4>
  70312.  <g4>
  70313.  <k4>
  70314.  <h4>
  70315.  <j4>
  70316.  <q4>
  70317.  <x4>
  70318.  <zh>
  70319.  <ch>
  70320.  <sh>
  70321.  <r4>
  70322.  <z4>
  70323.  <c4>
  70324.  <s4>
  70325.  <a4>
  70326.  <o4>
  70327.  <e4>
  70328.  <eh>
  70329.  <ai>
  70330.  <ei>
  70331.  <au>
  70332.  <ou>
  70333.  <an>
  70334.  <en>
  70335.  <aN>
  70336.  <eN>
  70337.  <er>
  70338.  <i4>
  70339.  <u4>
  70340.  
  70341.  
  70342.  
  70343.  
  70344.  
  70345.  
  70346.  
  70347.                Copyright c 1991 IEEE.  All rights reserved.
  70348.       This is an unapproved IEEE Standards Draft, subject to change.
  70349.  
  70350.  
  70351.  
  70352.  
  70353.  
  70354.  1036                                            F Sample National Profile
  70355.  
  70356.  
  70357.  
  70358.  
  70359.  
  70360.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  70361.  
  70362.  <iu>
  70363.  <A5>
  70364.  <a5>
  70365.  <I5>
  70366.  <i5>
  70367.  <U5>
  70368.  <u5>
  70369.  <E5>
  70370.  <e5>
  70371.  <O5>
  70372.  <o5>
  70373.  <ka>
  70374.  <ga>
  70375.  <ki>
  70376.  <gi>
  70377.  <ku>
  70378.  <gu>
  70379.  <ke>
  70380.  <ge>
  70381.  <ko>
  70382.  <go>
  70383.  <sa>
  70384.  <za>
  70385.  <si>
  70386.  <zi>
  70387.  <su>
  70388.  <zu>
  70389.  <se>
  70390.  <ze>
  70391.  <so>
  70392.  <zo>
  70393.  <ta>
  70394.  <da>
  70395.  <ti>
  70396.  <di>
  70397.  <tU>
  70398.  <tu>
  70399.  <du>
  70400.  <te>
  70401.  <de>
  70402.  <to>
  70403.  <do>
  70404.  <na>
  70405.  <ni>
  70406.  
  70407.  
  70408.  
  70409.  
  70410.  
  70411.  
  70412.  
  70413.                Copyright c 1991 IEEE.  All rights reserved.
  70414.       This is an unapproved IEEE Standards Draft, subject to change.
  70415.  
  70416.  
  70417.  
  70418.  
  70419.  
  70420.  F.3 Scope of Danish National Locale                                  1037
  70421.  
  70422.  
  70423.  
  70424.  
  70425.  
  70426.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  70427.  
  70428.  <nu>
  70429.  <ne>
  70430.  <no>
  70431.  <ha>
  70432.  <ba>
  70433.  <pa>
  70434.  <hi>
  70435.  <bi>
  70436.  <pi>
  70437.  <hu>
  70438.  <bu>
  70439.  <pu>
  70440.  <he>
  70441.  <be>
  70442.  <pe>
  70443.  <ho>
  70444.  <bo>
  70445.  <po>
  70446.  <ma>
  70447.  <mi>
  70448.  <mu>
  70449.  <me>
  70450.  <mo>
  70451.  <yA>
  70452.  <ya>
  70453.  <yU>
  70454.  <yu>
  70455.  <yO>
  70456.  <yo>
  70457.  <ra>
  70458.  <ri>
  70459.  <ru>
  70460.  <re>
  70461.  <ro>
  70462.  <wA>
  70463.  <wa>
  70464.  <wi>
  70465.  <we>
  70466.  <wo>
  70467.  <n5>
  70468.  <a6>
  70469.  <A6>
  70470.  <i6>
  70471.  <I6>
  70472.  
  70473.  
  70474.  
  70475.  
  70476.  
  70477.  
  70478.  
  70479.                Copyright c 1991 IEEE.  All rights reserved.
  70480.       This is an unapproved IEEE Standards Draft, subject to change.
  70481.  
  70482.  
  70483.  
  70484.  
  70485.  
  70486.  1038                                            F Sample National Profile
  70487.  
  70488.  
  70489.  
  70490.  
  70491.  
  70492.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  70493.  
  70494.  <u6>
  70495.  <U6>
  70496.  <e6>
  70497.  <E6>
  70498.  <o6>
  70499.  <O6>
  70500.  <Ka>
  70501.  <Ga>
  70502.  <Ki>
  70503.  <Gi>
  70504.  <Ku>
  70505.  <Gu>
  70506.  <Ke>
  70507.  <Ge>
  70508.  <Ko>
  70509.  <Go>
  70510.  <Sa>
  70511.  <Za>
  70512.  <Si>
  70513.  <Zi>
  70514.  <Su>
  70515.  <Zu>
  70516.  <Se>
  70517.  <Ze>
  70518.  <So>
  70519.  <Zo>
  70520.  <Ta>
  70521.  <Da>
  70522.  <Ti>
  70523.  <Di>
  70524.  <TU>
  70525.  <Tu>
  70526.  <Du>
  70527.  <Te>
  70528.  <De>
  70529.  <To>
  70530.  <Do>
  70531.  <Na>
  70532.  <Ni>
  70533.  <Nu>
  70534.  <Ne>
  70535.  <No>
  70536.  <Ha>
  70537.  <Ba>
  70538.  
  70539.  
  70540.  
  70541.  
  70542.  
  70543.  
  70544.  
  70545.                Copyright c 1991 IEEE.  All rights reserved.
  70546.       This is an unapproved IEEE Standards Draft, subject to change.
  70547.  
  70548.  
  70549.  
  70550.  
  70551.  
  70552.  F.3 Scope of Danish National Locale                                  1039
  70553.  
  70554.  
  70555.  
  70556.  
  70557.  
  70558.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  70559.  
  70560.  <Pa>
  70561.  <Hi>
  70562.  <Bi>                                                                       1
  70563.  <Pi>                                                                       1
  70564.  <Hu>
  70565.  <Bu>
  70566.  <Pu>
  70567.  <He>
  70568.  <Be>
  70569.  <Pe>
  70570.  <Ho>
  70571.  <Bo>
  70572.  <Po>
  70573.  <Ma>
  70574.  <Mi>
  70575.  <Mu>
  70576.  <Me>
  70577.  <Mo>
  70578.  <YA>
  70579.  <Ya>
  70580.  <YU>
  70581.  <Yu>
  70582.  <YO>
  70583.  <Yo>
  70584.  <Ra>
  70585.  <Ri>
  70586.  <Ru>
  70587.  <Re>
  70588.  <Ro>
  70589.  <WA>
  70590.  <Wa>
  70591.  <Wi>
  70592.  <We>
  70593.  <Wo>
  70594.  <N6>
  70595.  <Vu>
  70596.  <KA>
  70597.  <KE>
  70598.  
  70599.  order_end
  70600.  
  70601.  END LC_COLLATE
  70602.  
  70603.  LC_MONETARY
  70604.  
  70605.  
  70606.  
  70607.  
  70608.  
  70609.  
  70610.  
  70611.                Copyright c 1991 IEEE.  All rights reserved.
  70612.       This is an unapproved IEEE Standards Draft, subject to change.
  70613.  
  70614.  
  70615.  
  70616.  
  70617.  
  70618.  1040                                            F Sample National Profile
  70619.  
  70620.  
  70621.  
  70622.  
  70623.  
  70624.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  70625.  
  70626.  % int_curr_symbol according to ISO 4217                                    1
  70627.  int_curr_symbol         "DKK "                                             1
  70628.  currency_symbol         "kr."                                              1
  70629.  mon_decimal_point       <,>
  70630.  mon_thousands_sep       <.>
  70631.  mon_grouping            3;0
  70632.  positive_sign           ""
  70633.  negative_sign           <->
  70634.  int_frac_digits         2
  70635.  frac_digits             2
  70636.  p_cs_precedes           1
  70637.  p_sep_by_space          1
  70638.  n_cs_precedes           1
  70639.  n_sep_by_space          1
  70640.  p_sign_posn             4
  70641.  n_sign_posn             4
  70642.  
  70643.  END LC_MONETARY
  70644.  
  70645.  LC_NUMERIC
  70646.  
  70647.  decimal_point           <,>
  70648.  thousands_sep           <.>
  70649.  grouping                3;0
  70650.  
  70651.  END LC_NUMERIC
  70652.  
  70653.  LC_TIME
  70654.  
  70655.  abday       "s<o//>n";"man";"tir";"ons";"tor";"fre";"l<o//>r"              1
  70656.  day         "s<o//>ndag";"mandag";"tirsdag";"onsdag";/                     1
  70657.              "torsdag";"fredag";"l<o//>rdag"                                1
  70658.  abmon       "jan";"feb";"mar";"apr";"maj";"jun";/                          1
  70659.              "jul";"aug";"sep";"okt";"nov";"dec"                            1
  70660.  mon         "januar";"februar";"marts";"april";"maj";"juni";/              1
  70661.              "juli";"august";"september";"oktober";"november";"december"    1
  70662.  d_t_fmt     "%a %d %b %Y %T %Z"                                            1
  70663.  d_fmt       "%d %b %Y"                                                     1
  70664.  t_fmt       "%T"                                                           1
  70665.  
  70666.  % The AM/PM notation is not used in Denmark and thus not allowed.          1
  70667.  am_pm       "";""
  70668.  t_fmt_ampm  ""
  70669.  
  70670.  
  70671.  
  70672.  
  70673.  
  70674.  
  70675.  
  70676.  
  70677.                Copyright c 1991 IEEE.  All rights reserved.
  70678.       This is an unapproved IEEE Standards Draft, subject to change.
  70679.  
  70680.  
  70681.  
  70682.  
  70683.  
  70684.  F.3 Scope of Danish National Locale                                  1041
  70685.  
  70686.  
  70687.  
  70688.  
  70689.  
  70690.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  70691.  
  70692.  END LC_TIME
  70693.  
  70694.  LC_MESSAGES
  70695.  
  70696.  % Must be careful to avoid interpreting "nej" (no) as "ja" (yes).          1
  70697.  
  70698.  % yesexpr     "^[[:blank:]]*[JjYy][[:alpha:]]*"                            1
  70699.  % noexpr      "^[[:blank:]]*[Nn][[:alpha:]]*"                              1
  70700.  
  70701.  yesexpr     "<'//><<(><<(>:blank:<)//><)//>*<<(>JjYy<)//>/                 1
  70702.  <<(><<(>:alpha:<)//><)//>*"                                                1
  70703.  noexpr      "<'//><<(><<(>:blank:<)//><)//>*<<(>Nn<)//>/                   1
  70704.  <<(><<(>:alpha:<)//><)//>*"                                                1
  70705.  
  70706.  END LC_MESSAGES
  70707.  
  70708.  
  70709.  F.3.2  fo_DK - (Example) Faroese LC_TIME and LC_MESSAGES
  70710.  
  70711.  escape_char  /                                                             1
  70712.  comment_char %                                                             1
  70713.  % Danish example national locale for the Faroese language                  1
  70714.  % Source: Danish Standards Association                                     1
  70715.  % Revision: 1.7 1991-04-26                                                 1
  70716.  %                                                                          1
  70717.  % Only LC_TIME and LC_MESSAGES are specified here, else use the da_DK locale1
  70718.  
  70719.  LC_CTYPE
  70720.  copy da_DK                                                                 1
  70721.  END LC_CTYPE
  70722.  
  70723.  LC_COLLATE                                                                 1
  70724.  copy da_DK                                                                 1
  70725.  END LC_COLLATE
  70726.  
  70727.  LC_MONETARY                                                                1
  70728.  copy da_DK                                                                 1
  70729.  END LC_MONETARY
  70730.  
  70731.  LC_NUMERIC                                                                 1
  70732.  copy da_DK                                                                 1
  70733.  END LC_NUMERIC
  70734.  
  70735.  LC_TIME                                                                    1
  70736.  
  70737.  
  70738.  
  70739.  
  70740.  
  70741.  
  70742.  
  70743.                Copyright c 1991 IEEE.  All rights reserved.
  70744.       This is an unapproved IEEE Standards Draft, subject to change.
  70745.  
  70746.  
  70747.  
  70748.  
  70749.  
  70750.  1042                                            F Sample National Profile
  70751.  
  70752.  
  70753.  
  70754.  
  70755.  
  70756.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  70757.  
  70758.  abday       "sun";"m<a'>n";"t<y'>s";"mik";"h<o'>s";"fr<i'>";"ley"          1
  70759.  day         "sunnudagur";"m<a'>nadagur";"t<y'>sdagur";/                    1
  70760.              "mikudagur";"h<o'>sdagur";"fr<i'>ggjadagur";"leygardagur"      1
  70761.  abmon       "jan";"feb";"mar";"apr";"mai";"jun";/                          1
  70762.              "jul";"aug";"sep";"okt";"nov";"des"                            1
  70763.  mon         "januar";"februar";"mars";"apr<i'>l";"mai";"juni";/            1
  70764.              "juli";"august";"september";"oktober";"november";"desember"    1
  70765.  d_t_fmt     "%a %d %b %Y %T %Z"                                            1
  70766.  d_fmt       "%d %b %Y"                                                     1
  70767.  t_fmt       "%T"                                                           1
  70768.  am_pm       "";""
  70769.  t_fmt_ampm  ""
  70770.  
  70771.  END LC_TIME
  70772.  
  70773.  LC_MESSAGES
  70774.  
  70775.  % Must be careful to avoid interpreting "nej"/"nei" (no) as "ja" (yes).    1
  70776.  
  70777.  % yesexpr     "^[[:blank:]]*[JjYy][[:alpha:]]*"                            1
  70778.  % noexpr      "^[[:blank:]]*[Nn][[:alpha:]]*"                              1
  70779.  
  70780.  yesexpr     "<'/>><<(><<(>:blank:<)/>><)/>>*<<(>JjYy<)/>>/                 1
  70781.  <<(><<(>:alpha:<)/>><)/>>*"                                                1
  70782.  noexpr      "<'/>><<(><<(>:blank:<)/>><)/>>*<<(>Nn<)/>>/                   1
  70783.  <<(><<(>:alpha:<)/>><)/>>*"                                                1
  70784.  
  70785.  END LC_MESSAGES
  70786.  
  70787.  
  70788.  F.3.3  kl_DK - (Example) Greenlandic LC_TIME and LC_MESSAGES
  70789.  
  70790.  escape_char /                                                              1
  70791.  comment_char %                                                             1
  70792.  % Danish example national locale for the Greenlandic language              1
  70793.  % Source: Danish Standards Association                                     1
  70794.  % Revision: 1.7 1991-04-26                                                 1
  70795.  %                                                                          1
  70796.  % Only LC_TIME and LC_MESSAGES are specified here, else use the da_DK locale1
  70797.  
  70798.  LC_CTYPE
  70799.  copy da_DK                                                                 1
  70800.  END LC_CTYPE
  70801.  
  70802.  
  70803.  
  70804.  
  70805.  
  70806.  
  70807.  
  70808.  
  70809.                Copyright c 1991 IEEE.  All rights reserved.
  70810.       This is an unapproved IEEE Standards Draft, subject to change.
  70811.  
  70812.  
  70813.  
  70814.  
  70815.  
  70816.  F.3 Scope of Danish National Locale                                  1043
  70817.  
  70818.  
  70819.  
  70820.  
  70821.  
  70822.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  70823.  
  70824.  LC_COLLATE                                                                 1
  70825.  copy da_DK                                                                 1
  70826.  END LC_COLLATE
  70827.  
  70828.  LC_MONETARY                                                                1
  70829.  copy da_DK                                                                 1
  70830.  END LC_MONETARY
  70831.  
  70832.  LC_NUMERIC                                                                 1
  70833.  copy da_DK                                                                 1
  70834.  END LC_NUMERIC
  70835.  
  70836.  LC_TIME                                                                    1
  70837.  
  70838.  abday       "sab";"ata";"mar";"pin";"sis";"tal";"arf"                      1
  70839.  day         "sabaat";"ataasinngorneq";"marlunngorneq";"pingasunngorneq";/  1
  70840.              "sisamanngorneq";"tallimanngorneq";"arfininngorneq"            1
  70841.  abmon       "jan";"feb";"mar";"apr";"maj";"jun";/                          1
  70842.              "jul";"aug";"sep";"okt";"nov";"dec"                            1
  70843.  mon         "januari";"februari";"martsi";"aprili";"maji";"juni";/         1
  70844.              "juli";"augustusi";"septemberi";"oktoberi";"novemberi";"decemberi"1
  70845.  d_t_fmt     "%a %d %b %Y %T %Z"                                            1
  70846.  d_fmt       "%d %b %Y"                                                     1
  70847.  t_fmt       "%T"                                                           1
  70848.  am_pm       "";""
  70849.  t_fmt_ampm  ""
  70850.  
  70851.  END LC_TIME
  70852.  
  70853.  LC_MESSAGES
  70854.  
  70855.  % Must be careful to avoid interpreting "namik"/"nej" (no) as "aap"/"ja" (yes).1
  70856.  
  70857.  % yesexpr     "^[[:blank:]]*[JjYyAa][[:alpha:]]*"                          1
  70858.  % noexpr      "^[[:blank:]]*[Nn][[:alpha:]]*"                              1
  70859.  
  70860.  yesexpr     "<'/>><<(><<(>:blank:<)/>><)/>>*<<(>JjYyAa<)/>>/               1
  70861.  <<(><<(>:alpha:<)/>><)/>>*"                                                1
  70862.  noexpr      "<'/>><<(><<(>:blank:<)/>><)/>>*<<(>Nn<)/>>/                   1
  70863.  <<(><<(>:alpha:<)/>><)/>>*"                                                1
  70864.  
  70865.  END LC_MESSAGES
  70866.  
  70867.  
  70868.  
  70869.  
  70870.  
  70871.  
  70872.  
  70873.  
  70874.  
  70875.                Copyright c 1991 IEEE.  All rights reserved.
  70876.       This is an unapproved IEEE Standards Draft, subject to change.
  70877.  
  70878.  
  70879.  
  70880.  
  70881.  
  70882.  1044                                            F Sample National Profile
  70883.  
  70884.  
  70885.  
  70886.  
  70887.  
  70888.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  70889.  
  70890.  F.4  Character Mnemonics Guidelines
  70891.  
  70892.  This clause presents guidelines for character mnemonics in a minimal
  70893.  coded character set.  These guidelines are used within this sample annex
  70894.  and are recommended for other national profiles.
  70895.  
  70896.  
  70897.  F.4.1  Aim of Character Mnemonics
  70898.  
  70899.  The aim of the mnemonics is to be able to represent all characters in all
  70900.  standard coded character sets in any standard coded character set.
  70901.  
  70902.  The usage of the character mnemonics is primarily intended within
  70903.  computer operating systems, programming languages, and applications and
  70904.  this work with character mnemonics is the current state of work that has
  70905.  been presented to the ISO working group responsible for these computer
  70906.  related issues, namely the ISO/IEC JTC 1/SC22 special working group on
  70907.  coded character set usage.
  70908.  
  70909.  
  70910.  F.4.2  Covered Coded Character Sets
  70911.  
  70912.  All characters in the standard coded character sets will be given a
  70913.  mnemonic to be represented in the minimal character set.  The minimal
  70914.  coded character set is defined as the basic character set of ISO 646 {1},
  70915.  where 12 positions are left undefined.  The standard coded character sets
  70916.  are taken as the sum of all ISO-defined or ISO-registered coded character
  70917.  sets.
  70918.  
  70919.  The most significant ISO coded character set is the ISO 10646 {B11} coded
  70920.  character set, whose aim is to code in 32 bits all characters in the
  70921.  world.  These guidelines can be seen as assigning mnemonic attributes to
  70922.  most characters in ISO 10646 {B11}, currently at the DIS stage.
  70923.  
  70924.  Other ISO coded character sets covered include all parts of ISO 8859 {B9}
  70925.  ISO 6937-2 {B6}, and all ISO 646 {1} conforming coded character sets in
  70926.  the ISO character set registry managed by ECMA according to ISO 4873 {4}.
  70927.  Some non-ISO coded character sets are also covered for convenience.
  70928.  
  70929.  
  70930.  
  70931.  
  70932.  
  70933.  
  70934.  
  70935.  
  70936.  
  70937.  
  70938.  
  70939.  
  70940.  
  70941.                Copyright c 1991 IEEE.  All rights reserved.
  70942.       This is an unapproved IEEE Standards Draft, subject to change.
  70943.  
  70944.  
  70945.  
  70946.  
  70947.  
  70948.  F.4 Character Mnemonics Guidelines                                   1045
  70949.  
  70950.  
  70951.  
  70952.  
  70953.  
  70954.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  70955.  
  70956.  F.4.3  Character Mnemonics Classes
  70957.  
  70958.  The character mnemonics are classified into two groups:
  70959.  
  70960.      (1)  A group with two-character mnemonics--Primarily intended for
  70961.           alphabetic scripts like Latin, Greek, Cyrillian, Hebrew, and
  70962.           Arabic, and special characters.
  70963.  
  70964.      (2)  A group with variable-length mnemonics--Primarily intended for
  70965.           nonalphabetic scripts like Japanese and Chinese.  These
  70966.           mnemonics will have a unique lead-in and lead-out symbol.
  70967.  
  70968.  All mnemonics are given a long descriptive name, written in the reference
  70969.  coded character set and taken from ISO 10646 {B11}, if possible.
  70970.  
  70971.  
  70972.  F.4.4  Two-Character Mnemonics
  70973.  
  70974.  The two-character mnemonics include various accented Latin letters,
  70975.  Greek, Cyrillic, Hebrew, Arabic, Hiragana, Katakana, and Bopomofo.  Some
  70976.  special characters also are included.  Almost all ISO or ISO-registered
  70977.  7- and 8-bit coded character sets are covered with these two-character
  70978.  mnemonics.
  70979.  
  70980.  The two characters are chosen so the graphical appearence in the
  70981.  reference set resembles as much as possible (within the possibilities
  70982.  available) the graphical appearance of the character.  The basic coded
  70983.  character set of ISO 646 {1} is used as the reference set, as described
  70984.  previously.
  70985.  
  70986.  The characters in the reference coded character set are chosen to
  70987.  represent themselves.  They may be considered as two-character mnemonics
  70988.  where the second character is a space.
  70989.  
  70990.  Control character mnemonics are chosen according to ISO 2047 {B3} and
  70991.  ISO 6429 {B5}.
  70992.  
  70993.  Letters, including Greek, Cyrillic, Arabic, and Hebrew, are represented
  70994.  with the base letter as the first letter, and the second letter
  70995.  represents an accent or relation to a non-Latin script.  Non-Latin
  70996.  letters are transliterated to Latin letters, following transliteration
  70997.  standards as closely as possible.
  70998.  
  70999.  
  71000.  
  71001.  
  71002.  
  71003.  
  71004.  
  71005.  
  71006.  
  71007.                Copyright c 1991 IEEE.  All rights reserved.
  71008.       This is an unapproved IEEE Standards Draft, subject to change.
  71009.  
  71010.  
  71011.  
  71012.  
  71013.  
  71014.  1046                                            F Sample National Profile
  71015.  
  71016.  
  71017.  
  71018.  
  71019.  
  71020.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  71021.  
  71022.  After a letter, the second character signifies the following:
  71023.  
  71024.         exclamation-mark    !     grave
  71025.         apostrophe          '     acute accent
  71026.         greater-than-sign   >     circumflex accent
  71027.         question-mark       ?     tilde
  71028.         hyphen-minus        -     macron
  71029.         left-parenthesis    (     breve
  71030.         full-stop           .     dot above/ring above
  71031.         colon               :     diaeresis
  71032.         comma               ,     cedilla
  71033.         underline           _     underline
  71034.         solidus             /     stroke
  71035.         quotation-mark      "     double acute accent
  71036.         semicolon           ;     ogonek
  71037.         less-than-sign      <     caron
  71038.         equals              =     Cyrillian
  71039.         asterisk            *     Greek
  71040.         percent-sign        %     Greek/Cyrillian special
  71041.         plus                +     smalls: Arabic, capitals: Hebrew
  71042.         four                4     Bopomofo
  71043.         five                5     Hiragana
  71044.         six                 6     Katakana
  71045.  
  71046.  Special characters are encoded with some mnemonic value.  These are not
  71047.  systematic throughout, but most mnemonics start with a special character
  71048.  of the reference set.  Special characters with some sort of reference to
  71049.  the reference coded character set normally have this character as the
  71050.  first character in the mnemonic.
  71051.  
  71052.  
  71053.  F.4.5  Variable-Length Character Mnemonics
  71054.  
  71055.  The variable-length character mnemonics are meant primarily for the
  71056.  ideographic characters in larger Asian coded character sets.  To have the
  71057.  mnemonics as short as possible, which both saves storage and is easier to
  71058.  type, a short name is preferred.  Considering the Chinese standard GB
  71059.  2312 {B14} and the Japanese standards JIS X0208 {B15} and JIS X0212
  71060.  {B16}, they are all given by row and column numbers between 1 and 99.  So
  71061.  two positions for row and column and a coded character set identifier of
  71062.  one character would be almost as short as possible.  The following coded
  71063.  character set identifiers are defined:
  71064.  
  71065.                              GB 2312 {B14}
  71066.  
  71067.  
  71068.  
  71069.  
  71070.  
  71071.  
  71072.  
  71073.                Copyright c 1991 IEEE.  All rights reserved.
  71074.       This is an unapproved IEEE Standards Draft, subject to change.
  71075.  
  71076.  
  71077.  
  71078.  
  71079.  
  71080.  F.4 Character Mnemonics Guidelines                                   1047
  71081.  
  71082.  
  71083.  
  71084.  
  71085.  
  71086.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  71087.  
  71088.                          c
  71089.  
  71090.  
  71091.  
  71092.  
  71093.  
  71094.  
  71095.  
  71096.  
  71097.  
  71098.  
  71099.  
  71100.  
  71101.  
  71102.  
  71103.  
  71104.  
  71105.  
  71106.  
  71107.  
  71108.  
  71109.  
  71110.  
  71111.  
  71112.  
  71113.  
  71114.  
  71115.  
  71116.  
  71117.  
  71118.  
  71119.  
  71120.  
  71121.  
  71122.  
  71123.  
  71124.  
  71125.  
  71126.  
  71127.  
  71128.  
  71129.  
  71130.  
  71131.  
  71132.  
  71133.  
  71134.  
  71135.  
  71136.  
  71137.  
  71138.  
  71139.                Copyright c 1991 IEEE.  All rights reserved.
  71140.       This is an unapproved IEEE Standards Draft, subject to change.
  71141.  
  71142.  
  71143.  
  71144.  
  71145.  
  71146.  1048                                            F Sample National Profile
  71147.  
  71148.  
  71149.  
  71150.  
  71151.  
  71152.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  71153.  
  71154.                          j   JIS X0208 {B15}
  71155.                          J   JIS X0212 {B16}
  71156.                          k   KS C 5601 {B17}
  71157.  
  71158.  The first idea was to have a name in Latin describing the pronunciation,
  71159.  but that is not possible according to Asian sources.
  71160.  
  71161.  The variable-length character mnemonics can also be used for some Latin
  71162.  letters with more than one accent or other special characters that are
  71163.  used less frequently.
  71164.  
  71165.  
  71166.  
  71167.  F.5  (Example) Danish Charmap Files
  71168.  
  71169.  The (example) Danish locale is coded character-set independent, as it is
  71170.  defined in terms of symbolic character names.  Symbolic character names
  71171.  are defined for about 1300 characters, covering many coded character
  71172.  sets.  It is not necessary to have all these characters present in the
  71173.  actual encoding character set because absent characters simply can be
  71174.  ignored.  But specifying the locale with symbolic character names ensures
  71175.  a uniform collating sequence of the present characters, regardless of the
  71176.  encoded character set.  The more complicated locale should not imply less
  71177.  efficient code at running time, although generating the locale tables
  71178.  could take a longer time.
  71179.  
  71180.  Danish Standards provides several charmap files, of which the ISO_10646
  71181.  is the prime charmap, as it defines all the character names.  It is
  71182.  expected, however, that the ISO_8859-1 charmap would be of more current
  71183.  interest.  The charmaps are quite general, and might be used for other
  71184.  countries' locales without change.
  71185.  
  71186.  See the guidelines for character mnemonics in F.4 for guidance in reading  1
  71187.  these charmap files.
  71188.  
  71189.  
  71190.  F.5.1  ISO_10646 Charmap
  71191.  
  71192.  # ISO/IEC DIS 10646: 1990 charmap based on ISO/IEC JTC1/SC2/WG2 N666
  71193.  # Only a part of the 10646 encoding is tabled here
  71194.  
  71195.  <escape_char> /
  71196.  <mb_cur_max> 4
  71197.  CHARMAP
  71198.  <NUL>                   /d000/d128/d128/d128    NULL (NUL)                 1
  71199.  
  71200.  
  71201.  
  71202.  
  71203.  
  71204.  
  71205.                Copyright c 1991 IEEE.  All rights reserved.
  71206.       This is an unapproved IEEE Standards Draft, subject to change.
  71207.  
  71208.  
  71209.  
  71210.  
  71211.  
  71212.  F.5 (Example) Danish Charmap Files                                   1049
  71213.  
  71214.  
  71215.  
  71216.  
  71217.  
  71218.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  71219.  
  71220.  <SOH>                   /d001/d128/d128/d128    START OF HEADING (SOH)     1
  71221.  <STX>                   /d002/d128/d128/d128    START OF TEXT (STX)        1
  71222.  <ETX>                   /d003/d128/d128/d128    END OF TEXT (ETX)          1
  71223.  <EOT>                   /d004/d128/d128/d128    END OF TRANSMISSION (EOT)  1
  71224.  <ENQ>                   /d005/d128/d128/d128    ENQUIRY (ENQ)              1
  71225.  <ACK>                   /d006/d128/d128/d128    ACKNOWLEDGE (ACK)          1
  71226.  <alert>                 /d007/d128/d128/d128    BELL (BEL)                 1
  71227.  <BEL>                   /d007/d128/d128/d128    BELL (BEL)                 1
  71228.  <backspace>             /d008/d128/d128/d128    BACKSPACE (BS)             1
  71229.  <tab>                   /d009/d128/d128/d128    CHARACTER TABULATION (HT)    1
  71230.  <newline>               /d010/d128/d128/d128    LINE FEED (LF)             1
  71231.  <vertical-tab>          /d011/d128/d128/d128    LINE TABULATION (VT)       1
  71232.  <form-feed>             /d012/d128/d128/d128    FORM FEED (FF)             1
  71233.  <carriage-return>       /d013/d128/d128/d128    CARRIAGE RETURN (CR)       1
  71234.  <DLE>                   /d016/d128/d128/d128    DATALINK ESCAPE (DLE)      1
  71235.  <DC1>                   /d017/d128/d128/d128    DEVICE CONTROL ONE (DC1)   1
  71236.  <DC2>                   /d018/d128/d128/d128    DEVICE CONTROL TWO (DC2)   1
  71237.  <DC3>                   /d019/d128/d128/d128    DEVICE CONTROL THREE (DC3) 1
  71238.  <DC4>                   /d020/d128/d128/d128    DEVICE CONTROL FOUR (DC4)  1
  71239.  <NAK>                   /d021/d128/d128/d128    NEGATIVE ACKNOWLEDGE (NAK) 1
  71240.  <SYN>                   /d022/d128/d128/d128    SYNCHRONOUS IDLE (SYN)     1
  71241.  <ETB>                   /d023/d128/d128/d128    END OF TRANSMISSION BLOCK (ETB)1
  71242.  <CAN>                   /d024/d128/d128/d128    CANCEL (CAN)               1
  71243.  <SUB>                   /d026/d128/d128/d128    SUBSTITUTE (SUB)           1
  71244.  <ESC>                   /d027/d128/d128/d128    ESCAPE (ESC)               1
  71245.  <IS4>                   /d028/d128/d128/d128    FILE SEPARATOR (IS4)       1
  71246.  <IS3>                   /d029/d128/d128/d128    GROUP SEPARATOR (IS3)      1
  71247.  <intro>                 /d029/d128/d128/d128    GROUP SEPARATOR (IS3)      1
  71248.  <IS2>                   /d030/d128/d128/d128    RECORD SEPARATOR (IS2)     1
  71249.  <IS1>                   /d031/d128/d128/d128    UNIT SEPARATOR (IS1)       1
  71250.  <DEL>                   /d127/d128/d128/d128    DELETE (DEL)               1
  71251.  <space>                 /d032/d032/d032/d032    SPACE
  71252.  <exclamation-mark>      /d032/d032/d032/d033    EXCLAMATION MARK
  71253.  <quotation-mark>        /d032/d032/d032/d034    QUOTATION MARK
  71254.  <number-sign>           /d032/d032/d032/d035    NUMBER SIGN
  71255.  <dollar-sign>           /d032/d032/d032/d036    DOLLAR SIGN
  71256.  <percent-sign>          /d032/d032/d032/d037    PERCENT SIGN
  71257.  <ampersand>             /d032/d032/d032/d038    AMPERSAND
  71258.  <apostrophe>            /d032/d032/d032/d039    APOSTROPHE
  71259.  <left-parenthesis>      /d032/d032/d032/d040    LEFT PARENTHESIS
  71260.  <right-parenthesis>     /d032/d032/d032/d041    RIGHT PARENTHESIS
  71261.  <asterisk>              /d032/d032/d032/d042    ASTERISK
  71262.  <plus-sign>             /d032/d032/d032/d043    PLUS SIGN
  71263.  <comma>                 /d032/d032/d032/d044    COMMA
  71264.  
  71265.  
  71266.  
  71267.  
  71268.  
  71269.  
  71270.  
  71271.                Copyright c 1991 IEEE.  All rights reserved.
  71272.       This is an unapproved IEEE Standards Draft, subject to change.
  71273.  
  71274.  
  71275.  
  71276.  
  71277.  
  71278.  1050                                            F Sample National Profile
  71279.  
  71280.  
  71281.  
  71282.  
  71283.  
  71284.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  71285.  
  71286.  <hyphen>                /d032/d032/d032/d045    HYPHEN-MINUS
  71287.  <hyphen-minus>          /d032/d032/d032/d045    HYPHEN-MINUS
  71288.  <period>                /d032/d032/d032/d046    FULL STOP
  71289.  <full-stop>             /d032/d032/d032/d046    FULL STOP
  71290.  <slash>                 /d032/d032/d032/d047    SOLIDUS
  71291.  <solidus>               /d032/d032/d032/d047    SOLIDUS
  71292.  <zero>                  /d032/d032/d032/d048    DIGIT ZERO
  71293.  <one>                   /d032/d032/d032/d049    DIGIT ONE
  71294.  <two>                   /d032/d032/d032/d050    DIGIT TWO
  71295.  <three>                 /d032/d032/d032/d051    DIGIT THREE
  71296.  <four>                  /d032/d032/d032/d052    DIGIT FOUR
  71297.  <five>                  /d032/d032/d032/d053    DIGIT FIVE
  71298.  <six>                   /d032/d032/d032/d054    DIGIT SIX
  71299.  <seven>                 /d032/d032/d032/d055    DIGIT SEVEN
  71300.  <eight>                 /d032/d032/d032/d056    DIGIT EIGHT
  71301.  <nine>                  /d032/d032/d032/d057    DIGIT NINE
  71302.  <colon>                 /d032/d032/d032/d058    COLON
  71303.  <semicolon>             /d032/d032/d032/d059    SEMICOLON
  71304.  <less-than-sign>        /d032/d032/d032/d060    LESS-THAN SIGN
  71305.  <equals-sign>           /d032/d032/d032/d061    EQUALS SIGN
  71306.  <greater-than-sign>     /d032/d032/d032/d062    GREATER-THAN SIGN
  71307.  <question-mark>         /d032/d032/d032/d063    QUESTION MARK
  71308.  <commercial-at>         /d032/d032/d032/d064    COMMERCIAL AT
  71309.  <left-square-bracket>   /d032/d032/d032/d091    LEFT SQUARE BRACKET
  71310.  <reverse-solidus>       /d032/d032/d032/d092    REVERSE SOLIDUS
  71311.  <backslash>             /d032/d032/d032/d092    REVERSE SOLIDUS
  71312.  <right-square-bracket>  /d032/d032/d032/d093    RIGHT SQUARE BRACKET
  71313.  <circumflex-accent>     /d032/d032/d032/d094    CIRCUMFLEX ACCENT
  71314.  <low-line>              /d032/d032/d032/d095    LOW LINE
  71315.  <underscore>            /d032/d032/d032/d095    LOW LINE
  71316.  <grave-accent>          /d032/d032/d032/d096    GRAVE ACCENT
  71317.  <left-curly-bracket>    /d032/d032/d032/d123    LEFT CURLY BRACKET
  71318.  <vertical-line>         /d032/d032/d032/d124    VERTICAL LINE
  71319.  <right-curly-bracket>   /d032/d032/d032/d125    RIGHT CURLY BRACKET
  71320.  <tilde>                 /d032/d032/d032/d126    TILDE
  71321.  <SP>    /d032/d032/d032/d032    SPACE
  71322.  <!>     /d032/d032/d032/d033    EXCLAMATION MARK
  71323.  <">     /d032/d032/d032/d034    QUOTATION MARK
  71324.  <Nb>    /d032/d032/d032/d035    NUMBER SIGN
  71325.  <DO>    /d032/d032/d032/d036    DOLLAR SIGN
  71326.  <%>     /d032/d032/d032/d037    PERCENT SIGN
  71327.  <&>     /d032/d032/d032/d038    AMPERSAND
  71328.  <'>     /d032/d032/d032/d039    APOSTROPHE
  71329.  <(>     /d032/d032/d032/d040    LEFT PARENTHESIS
  71330.  
  71331.  
  71332.  
  71333.  
  71334.  
  71335.  
  71336.  
  71337.                Copyright c 1991 IEEE.  All rights reserved.
  71338.       This is an unapproved IEEE Standards Draft, subject to change.
  71339.  
  71340.  
  71341.  
  71342.  
  71343.  
  71344.  F.5 (Example) Danish Charmap Files                                   1051
  71345.  
  71346.  
  71347.  
  71348.  
  71349.  
  71350.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  71351.  
  71352.  <)>     /d032/d032/d032/d041    RIGHT PARENTHESIS
  71353.  <*>     /d032/d032/d032/d042    ASTERISK
  71354.  <+>     /d032/d032/d032/d043    PLUS SIGN
  71355.  <,>     /d032/d032/d032/d044    COMMA
  71356.  <->     /d032/d032/d032/d045    HYPHEN-MINUS
  71357.  <.>     /d032/d032/d032/d046    FULL STOP
  71358.  <//>    /d032/d032/d032/d047    SOLIDUS
  71359.  <0>     /d032/d032/d032/d048    DIGIT ZERO
  71360.  <1>     /d032/d032/d032/d049    DIGIT ONE
  71361.  <2>     /d032/d032/d032/d050    DIGIT TWO
  71362.  <3>     /d032/d032/d032/d051    DIGIT THREE
  71363.  <4>     /d032/d032/d032/d052    DIGIT FOUR
  71364.  <5>     /d032/d032/d032/d053    DIGIT FIVE
  71365.  <6>     /d032/d032/d032/d054    DIGIT SIX
  71366.  <7>     /d032/d032/d032/d055    DIGIT SEVEN
  71367.  <8>     /d032/d032/d032/d056    DIGIT EIGHT
  71368.  <9>     /d032/d032/d032/d057    DIGIT NINE
  71369.  <:>     /d032/d032/d032/d058    COLON
  71370.  <;>     /d032/d032/d032/d059    SEMICOLON
  71371.  <<>     /d032/d032/d032/d060    LESS-THAN SIGN
  71372.  <=>     /d032/d032/d032/d061    EQUALS SIGN
  71373.  </>>    /d032/d032/d032/d062    GREATER-THAN SIGN
  71374.  <?>     /d032/d032/d032/d063    QUESTION MARK
  71375.  <At>    /d032/d032/d032/d064    COMMERCIAL AT
  71376.  <A>     /d032/d032/d032/d065    LATIN CAPITAL LETTER A
  71377.  <B>     /d032/d032/d032/d066    LATIN CAPITAL LETTER B
  71378.  <C>     /d032/d032/d032/d067    LATIN CAPITAL LETTER C
  71379.  <D>     /d032/d032/d032/d068    LATIN CAPITAL LETTER D
  71380.  <E>     /d032/d032/d032/d069    LATIN CAPITAL LETTER E
  71381.  <F>     /d032/d032/d032/d070    LATIN CAPITAL LETTER F
  71382.  <G>     /d032/d032/d032/d071    LATIN CAPITAL LETTER G
  71383.  <H>     /d032/d032/d032/d072    LATIN CAPITAL LETTER H
  71384.  <I>     /d032/d032/d032/d073    LATIN CAPITAL LETTER I
  71385.  <J>     /d032/d032/d032/d074    LATIN CAPITAL LETTER J
  71386.  <K>     /d032/d032/d032/d075    LATIN CAPITAL LETTER K
  71387.  <L>     /d032/d032/d032/d076    LATIN CAPITAL LETTER L
  71388.  <M>     /d032/d032/d032/d077    LATIN CAPITAL LETTER M
  71389.  <N>     /d032/d032/d032/d078    LATIN CAPITAL LETTER N
  71390.  <O>     /d032/d032/d032/d079    LATIN CAPITAL LETTER O
  71391.  <P>     /d032/d032/d032/d080    LATIN CAPITAL LETTER P
  71392.  <Q>     /d032/d032/d032/d081    LATIN CAPITAL LETTER Q
  71393.  <R>     /d032/d032/d032/d082    LATIN CAPITAL LETTER R
  71394.  <S>     /d032/d032/d032/d083    LATIN CAPITAL LETTER S
  71395.  <T>     /d032/d032/d032/d084    LATIN CAPITAL LETTER T
  71396.  
  71397.  
  71398.  
  71399.  
  71400.  
  71401.  
  71402.  
  71403.                Copyright c 1991 IEEE.  All rights reserved.
  71404.       This is an unapproved IEEE Standards Draft, subject to change.
  71405.  
  71406.  
  71407.  
  71408.  
  71409.  
  71410.  1052                                            F Sample National Profile
  71411.  
  71412.  
  71413.  
  71414.  
  71415.  
  71416.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  71417.  
  71418.  <U>     /d032/d032/d032/d085    LATIN CAPITAL LETTER U
  71419.  <V>     /d032/d032/d032/d086    LATIN CAPITAL LETTER V
  71420.  <W>     /d032/d032/d032/d087    LATIN CAPITAL LETTER W
  71421.  <X>     /d032/d032/d032/d088    LATIN CAPITAL LETTER X
  71422.  <Y>     /d032/d032/d032/d089    LATIN CAPITAL LETTER Y
  71423.  <Z>     /d032/d032/d032/d090    LATIN CAPITAL LETTER Z
  71424.  <<(>    /d032/d032/d032/d091    LEFT SQUARE BRACKET
  71425.  <////>  /d032/d032/d032/d092    REVERSE SOLIDUS
  71426.  <)/>>   /d032/d032/d032/d093    RIGHT SQUARE BRACKET
  71427.  <'/>>   /d032/d032/d032/d094    CIRCUMFLEX ACCENT
  71428.  <_>     /d032/d032/d032/d095    LOW LINE
  71429.  <'!>    /d032/d032/d032/d096    GRAVE ACCENT
  71430.  <a>     /d032/d032/d032/d097    LATIN SMALL LETTER A
  71431.  <b>     /d032/d032/d032/d098    LATIN SMALL LETTER B
  71432.  <c>     /d032/d032/d032/d099    LATIN SMALL LETTER C
  71433.  <d>     /d032/d032/d032/d100    LATIN SMALL LETTER D
  71434.  <e>     /d032/d032/d032/d101    LATIN SMALL LETTER E
  71435.  <f>     /d032/d032/d032/d102    LATIN SMALL LETTER F
  71436.  <g>     /d032/d032/d032/d103    LATIN SMALL LETTER G
  71437.  <h>     /d032/d032/d032/d104    LATIN SMALL LETTER H
  71438.  <i>     /d032/d032/d032/d105    LATIN SMALL LETTER I
  71439.  <j>     /d032/d032/d032/d106    LATIN SMALL LETTER J
  71440.  <k>     /d032/d032/d032/d107    LATIN SMALL LETTER K
  71441.  <l>     /d032/d032/d032/d108    LATIN SMALL LETTER L
  71442.  <m>     /d032/d032/d032/d109    LATIN SMALL LETTER M
  71443.  <n>     /d032/d032/d032/d110    LATIN SMALL LETTER N
  71444.  <o>     /d032/d032/d032/d111    LATIN SMALL LETTER O
  71445.  <p>     /d032/d032/d032/d112    LATIN SMALL LETTER P
  71446.  <q>     /d032/d032/d032/d113    LATIN SMALL LETTER Q
  71447.  <r>     /d032/d032/d032/d114    LATIN SMALL LETTER R
  71448.  <s>     /d032/d032/d032/d115    LATIN SMALL LETTER S
  71449.  <t>     /d032/d032/d032/d116    LATIN SMALL LETTER T
  71450.  <u>     /d032/d032/d032/d117    LATIN SMALL LETTER U
  71451.  <v>     /d032/d032/d032/d118    LATIN SMALL LETTER V
  71452.  <w>     /d032/d032/d032/d119    LATIN SMALL LETTER W
  71453.  <x>     /d032/d032/d032/d120    LATIN SMALL LETTER X
  71454.  <y>     /d032/d032/d032/d121    LATIN SMALL LETTER Y
  71455.  <z>     /d032/d032/d032/d122    LATIN SMALL LETTER Z
  71456.  <(!>    /d032/d032/d032/d123    LEFT CURLY BRACKET
  71457.  <!!>    /d032/d032/d032/d124    VERTICAL LINE
  71458.  <!)>    /d032/d032/d032/d125    RIGHT CURLY BRACKET
  71459.  <'?>    /d032/d032/d032/d126    TILDE
  71460.  <NS>    /d032/d032/d032/d160    NO-BREAK SPACE
  71461.  <!I>    /d032/d032/d032/d161    INVERTED EXCLAMATION MARK
  71462.  
  71463.  
  71464.  
  71465.  
  71466.  
  71467.  
  71468.  
  71469.                Copyright c 1991 IEEE.  All rights reserved.
  71470.       This is an unapproved IEEE Standards Draft, subject to change.
  71471.  
  71472.  
  71473.  
  71474.  
  71475.  
  71476.  F.5 (Example) Danish Charmap Files                                   1053
  71477.  
  71478.  
  71479.  
  71480.  
  71481.  
  71482.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  71483.  
  71484.  <Ct>    /d032/d032/d032/d162    CENT SIGN
  71485.  <Pd>    /d032/d032/d032/d163    POUND SIGN
  71486.  <Cu>    /d032/d032/d032/d164    CURRENCY SIGN
  71487.  <Ye>    /d032/d032/d032/d165    YEN SIGN
  71488.  <BB>    /d032/d032/d032/d166    BROKEN BAR
  71489.  <SE>    /d032/d032/d032/d167    SECTION SIGN
  71490.  <':>    /d032/d032/d032/d168    DIAERESIS
  71491.  <Co>    /d032/d032/d032/d169    COPYRIGHT SIGN
  71492.  <-a>    /d032/d032/d032/d170    FEMININE ORDINAL INDICATOR
  71493.  <<<>    /d032/d032/d032/d171    LEFT POINTING DOUBLE ANGLE QUOTATION MARK
  71494.  <NO>    /d032/d032/d032/d172    NOT SIGN
  71495.  <-->    /d032/d032/d032/d173    SOFT HYPHEN
  71496.  <Rg>    /d032/d032/d032/d174    REGISTERED SIGN
  71497.  <'->    /d032/d032/d032/d175    MACRON
  71498.  <DG>    /d032/d032/d032/d176    DEGREE SIGN
  71499.  <+->    /d032/d032/d032/d177    PLUS-MINUS SIGN
  71500.  <2S>    /d032/d032/d032/d178    SUPERSCRIPT TWO
  71501.  <3S>    /d032/d032/d032/d179    SUPERSCRIPT THREE
  71502.  <''>    /d032/d032/d032/d180    ACUTE ACCENT
  71503.  <My>    /d032/d032/d032/d181    MICRO SIGN
  71504.  <PI>    /d032/d032/d032/d182    PILCROW SIGN
  71505.  <.M>    /d032/d032/d032/d183    MIDDLE DOT
  71506.  <',>    /d032/d032/d032/d184    CEDILLA
  71507.  <1S>    /d032/d032/d032/d185    SUPERSCRIPT ONE
  71508.  <-o>    /d032/d032/d032/d186    MASCULINE ORDINAL INDICATOR
  71509.  </>>>>  /d032/d032/d032/d187    RIGHT POINTING DOUBLE ANGLE QUOTATION MARK 1
  71510.  <14>    /d032/d032/d032/d188    VULGAR FRACTION ONE QUARTER
  71511.  <12>    /d032/d032/d032/d189    VULGAR FRACTION ONE HALF
  71512.  <34>    /d032/d032/d032/d190    VULGAR FRACTION THREE QUARTERS
  71513.  <?I>    /d032/d032/d032/d191    INVERTED QUESTION MARK
  71514.  <A!>    /d032/d032/d032/d192    LATIN CAPITAL LETTER A WITH GRAVE
  71515.  <A'>    /d032/d032/d032/d193    LATIN CAPITAL LETTER A WITH ACUTE
  71516.  <A/>>   /d032/d032/d032/d194    LATIN CAPITAL LETTER A WITH CIRCUMFLEX
  71517.  <A?>    /d032/d032/d032/d195    LATIN CAPITAL LETTER A WITH TILDE
  71518.  <A:>    /d032/d032/d032/d196    LATIN CAPITAL LETTER A WITH DIAERESIS
  71519.  <AA>    /d032/d032/d032/d197    LATIN CAPITAL LETTER A WITH RING ABOVE
  71520.  <AE>    /d032/d032/d032/d198    LATIN CAPITAL LETTER AE
  71521.  <C,>    /d032/d032/d032/d199    LATIN CAPITAL LETTER C WITH CEDILLA
  71522.  <E!>    /d032/d032/d032/d200    LATIN CAPITAL LETTER E WITH GRAVE
  71523.  <E'>    /d032/d032/d032/d201    LATIN CAPITAL LETTER E WITH ACUTE
  71524.  <E/>>   /d032/d032/d032/d202    LATIN CAPITAL LETTER E WITH CIRCUMFLEX
  71525.  <E:>    /d032/d032/d032/d203    LATIN CAPITAL LETTER E WITH DIAERESIS
  71526.  <I!>    /d032/d032/d032/d204    LATIN CAPITAL LETTER I WITH GRAVE
  71527.  <I'>    /d032/d032/d032/d205    LATIN CAPITAL LETTER I WITH ACUTE
  71528.  
  71529.  
  71530.  
  71531.  
  71532.  
  71533.  
  71534.  
  71535.                Copyright c 1991 IEEE.  All rights reserved.
  71536.       This is an unapproved IEEE Standards Draft, subject to change.
  71537.  
  71538.  
  71539.  
  71540.  
  71541.  
  71542.  1054                                            F Sample National Profile
  71543.  
  71544.  
  71545.  
  71546.  
  71547.  
  71548.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  71549.  
  71550.  <I/>>   /d032/d032/d032/d206    LATIN CAPITAL LETTER I WITH CIRCUMFLEX
  71551.  <I:>    /d032/d032/d032/d207    LATIN CAPITAL LETTER I WITH DIAERESIS
  71552.  <D->    /d032/d032/d032/d208    LATIN CAPITAL LETTER ETH (Icelandic)
  71553.  <N?>    /d032/d032/d032/d209    LATIN CAPITAL LETTER N WITH TILDE
  71554.  <O!>    /d032/d032/d032/d210    LATIN CAPITAL LETTER O WITH GRAVE
  71555.  <O'>    /d032/d032/d032/d211    LATIN CAPITAL LETTER O WITH ACUTE
  71556.  <O/>>   /d032/d032/d032/d212    LATIN CAPITAL LETTER O WITH CIRCUMFLEX
  71557.  <O?>    /d032/d032/d032/d213    LATIN CAPITAL LETTER O WITH TILDE
  71558.  <O:>    /d032/d032/d032/d214    LATIN CAPITAL LETTER O WITH DIAERESIS
  71559.  <*X>    /d032/d032/d032/d215    MULTIPLICATION SIGN
  71560.  <O//>   /d032/d032/d032/d216    LATIN CAPITAL LETTER O WITH STROKE
  71561.  <U!>    /d032/d032/d032/d217    LATIN CAPITAL LETTER U WITH GRAVE
  71562.  <U'>    /d032/d032/d032/d218    LATIN CAPITAL LETTER U WITH ACUTE
  71563.  <U/>>   /d032/d032/d032/d219    LATIN CAPITAL LETTER U WITH CIRCUMFLEX
  71564.  <U:>    /d032/d032/d032/d220    LATIN CAPITAL LETTER U WITH DIAERESIS
  71565.  <Y'>    /d032/d032/d032/d221    LATIN CAPITAL LETTER Y WITH ACUTE
  71566.  <TH>    /d032/d032/d032/d222    LATIN CAPITAL LETTER THORN (Icelandic)
  71567.  <ss>    /d032/d032/d032/d223    LATIN SMALL LETTER SHARP S (German)
  71568.  <a!>    /d032/d032/d032/d224    LATIN SMALL LETTER A WITH GRAVE
  71569.  <a'>    /d032/d032/d032/d225    LATIN SMALL LETTER A WITH ACUTE
  71570.  <a/>>   /d032/d032/d032/d226    LATIN SMALL LETTER A WITH CIRCUMFLEX
  71571.  <a?>    /d032/d032/d032/d227    LATIN SMALL LETTER A WITH TILDE
  71572.  <a:>    /d032/d032/d032/d228    LATIN SMALL LETTER A WITH DIAERESIS
  71573.  <aa>    /d032/d032/d032/d229    LATIN SMALL LETTER A WITH RING ABOVE
  71574.  <ae>    /d032/d032/d032/d230    LATIN SMALL LETTER AE
  71575.  <c,>    /d032/d032/d032/d231    LATIN SMALL LETTER C WITH CEDILLA
  71576.  <e!>    /d032/d032/d032/d232    LATIN SMALL LETTER E WITH GRAVE
  71577.  <e'>    /d032/d032/d032/d233    LATIN SMALL LETTER E WITH ACUTE
  71578.  <e/>>   /d032/d032/d032/d234    LATIN SMALL LETTER E WITH CIRCUMFLEX
  71579.  <e:>    /d032/d032/d032/d235    LATIN SMALL LETTER E WITH DIAERESIS
  71580.  <i!>    /d032/d032/d032/d236    LATIN SMALL LETTER I WITH GRAVE
  71581.  <i'>    /d032/d032/d032/d237    LATIN SMALL LETTER I WITH ACUTE
  71582.  <i/>>   /d032/d032/d032/d238    LATIN SMALL LETTER I WITH CIRCUMFLEX
  71583.  <i:>    /d032/d032/d032/d239    LATIN SMALL LETTER I WITH DIAERESIS
  71584.  <d->    /d032/d032/d032/d240    LATIN SMALL LETTER ETH (Icelandic)
  71585.  <n?>    /d032/d032/d032/d241    LATIN SMALL LETTER N WITH TILDE
  71586.  <o!>    /d032/d032/d032/d242    LATIN SMALL LETTER O WITH GRAVE
  71587.  <o'>    /d032/d032/d032/d243    LATIN SMALL LETTER O WITH ACUTE
  71588.  <o/>>   /d032/d032/d032/d244    LATIN SMALL LETTER O WITH CIRCUMFLEX
  71589.  <o?>    /d032/d032/d032/d245    LATIN SMALL LETTER O WITH TILDE
  71590.  <o:>    /d032/d032/d032/d246    LATIN SMALL LETTER O WITH DIAERESIS
  71591.  <-:>    /d032/d032/d032/d247    DIVISION SIGN
  71592.  <o//>   /d032/d032/d032/d248    LATIN SMALL LETTER O WITH STROKE
  71593.  <u!>    /d032/d032/d032/d249    LATIN SMALL LETTER U WITH GRAVE
  71594.  
  71595.  
  71596.  
  71597.  
  71598.  
  71599.  
  71600.  
  71601.                Copyright c 1991 IEEE.  All rights reserved.
  71602.       This is an unapproved IEEE Standards Draft, subject to change.
  71603.  
  71604.  
  71605.  
  71606.  
  71607.  
  71608.  F.5 (Example) Danish Charmap Files                                   1055
  71609.  
  71610.  
  71611.  
  71612.  
  71613.  
  71614.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  71615.  
  71616.  <u'>    /d032/d032/d032/d250    LATIN SMALL LETTER U WITH ACUTE
  71617.  <u/>>   /d032/d032/d032/d251    LATIN SMALL LETTER U WITH CIRCUMFLEX
  71618.  <u:>    /d032/d032/d032/d252    LATIN SMALL LETTER U WITH DIAERESIS
  71619.  <y'>    /d032/d032/d032/d253    LATIN SMALL LETTER Y WITH ACUTE
  71620.  <th>    /d032/d032/d032/d254    LATIN SMALL LETTER THORN (Icelandic)
  71621.  <y:>    /d032/d032/d032/d255    LATIN SMALL LETTER Y WITH DIAERESIS
  71622.  <A->    /d032/d032/d033/d033    LATIN CAPITAL LETTER A WITH MACRON
  71623.  <C/>>   /d032/d032/d033/d034    LATIN CAPITAL LETTER C WITH CIRCUMFLEX
  71624.  <C.>    /d032/d032/d033/d035    LATIN CAPITAL LETTER C WITH DOT ABOVE
  71625.  <E->    /d032/d032/d033/d036    LATIN CAPITAL LETTER E WITH MACRON
  71626.  <E.>    /d032/d032/d033/d037    LATIN CAPITAL LETTER E WITH DOT ABOVE
  71627.  <G/>>   /d032/d032/d033/d039    LATIN CAPITAL LETTER G WITH CIRCUMFLEX
  71628.  <'6>    /d032/d032/d033/d041    LEFT SINGLE QUOTATION MARK
  71629.  <"6>    /d032/d032/d033/d042    LEFT DOUBLE QUOTATION MARK
  71630.  <G(>    /d032/d032/d033/d043    LATIN CAPITAL LETTER G WITH BREVE
  71631.  <<->    /d032/d032/d033/d044    LEFTWARD ARROW
  71632.  <-!>    /d032/d032/d033/d045    UPWARD ARROW
  71633.  <-/>>   /d032/d032/d033/d046    RIGHTWARD ARROW
  71634.  <-v>    /d032/d032/d033/d047    DOWNWARD ARROW
  71635.  <a->    /d032/d032/d033/d049    LATIN SMALL LETTER A WITH MACRON
  71636.  <c/>>   /d032/d032/d033/d050    LATIN SMALL LETTER C WITH CIRCUMFLEX
  71637.  <c.>    /d032/d032/d033/d051    LATIN SMALL LETTER C WITH DOT ABOVE
  71638.  <e->    /d032/d032/d033/d052    LATIN SMALL LETTER E WITH MACRON
  71639.  <e.>    /d032/d032/d033/d053    LATIN SMALL LETTER E WITH DOT ABOVE
  71640.  <g/>>   /d032/d032/d033/d055    LATIN SMALL LETTER G WITH CIRCUMFLEX
  71641.  <'9>    /d032/d032/d033/d057    RIGHT SINGLE QUOTATION MARK
  71642.  <"9>    /d032/d032/d033/d058    RIGHT DOUBLE QUOTATION MARK
  71643.  <g(>    /d032/d032/d033/d059    LATIN SMALL LETTER G WITH BREVE
  71644.  <G.>    /d032/d032/d033/d065    LATIN CAPITAL LETTER G WITH DOT ABOVE
  71645.  <G,>    /d032/d032/d033/d066    LATIN CAPITAL LETTER G WITH CEDILLA
  71646.  <H/>>   /d032/d032/d033/d067    LATIN CAPITAL LETTER H WITH CIRCUMFLEX
  71647.  <I?>    /d032/d032/d033/d070    LATIN CAPITAL LETTER I WITH TILDE
  71648.  <I->    /d032/d032/d033/d071    LATIN CAPITAL LETTER I WITH MACRON
  71649.  <I.>    /d032/d032/d033/d072    LATIN CAPITAL LETTER I WITH DOT ABOVE
  71650.  <'0>    /d032/d032/d033/d074    RING ABOVE
  71651.  <HB>    /d032/d032/d033/d080    HORIZONTAL BAR
  71652.  <g.>    /d032/d032/d033/d081    LATIN SMALL LETTER G WITH DOT ABOVE
  71653.  <g,>    /d032/d032/d033/d082    LATIN SMALL LETTER G WITH CEDILLA
  71654.  <h/>>   /d032/d032/d033/d083    LATIN SMALL LETTER H WITH CIRCUMFLEX
  71655.  <TM>    /d032/d032/d033/d084    TRADE MARK SIGN
  71656.  <Md>    /d032/d032/d033/d085    MUSIC NOTE
  71657.  <i?>    /d032/d032/d033/d086    LATIN SMALL LETTER I WITH TILDE
  71658.  <i->    /d032/d032/d033/d087    LATIN SMALL LETTER I WITH MACRON
  71659.  <18>    /d032/d032/d033/d092    VULGAR FRACTION ONE EIGHTH
  71660.  
  71661.  
  71662.  
  71663.  
  71664.  
  71665.  
  71666.  
  71667.                Copyright c 1991 IEEE.  All rights reserved.
  71668.       This is an unapproved IEEE Standards Draft, subject to change.
  71669.  
  71670.  
  71671.  
  71672.  
  71673.  
  71674.  1056                                            F Sample National Profile
  71675.  
  71676.  
  71677.  
  71678.  
  71679.  
  71680.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  71681.  
  71682.  <38>    /d032/d032/d033/d093    VULGAR FRACTION THREE EIGHTHS
  71683.  <58>    /d032/d032/d033/d094    VULGAR FRACTION FIVE EIGHTHS
  71684.  <78>    /d032/d032/d033/d095    VULGAR FRACTION SEVEN EIGHTHS
  71685.  <Om>    /d032/d032/d033/d096    OHM SIGN
  71686.  <I;>    /d032/d032/d033/d097    LATIN CAPITAL LETTER I WITH OGONEK
  71687.  <J/>>   /d032/d032/d033/d098    LATIN CAPITAL LETTER J WITH CIRCUMFLEX
  71688.  <K,>    /d032/d032/d033/d099    LATIN CAPITAL LETTER K WITH CEDILLA
  71689.  <H//>   /d032/d032/d033/d100    LATIN CAPITAL LETTER H WITH STROKE
  71690.  <IJ>    /d032/d032/d033/d102    LATIN CAPITAL LIGATURE IJ
  71691.  <L.>    /d032/d032/d033/d103    LATIN CAPITAL LETTER L WITH MIDDLE DOT
  71692.  <L,>    /d032/d032/d033/d104    LATIN CAPITAL LETTER L WITH CEDILLA
  71693.  <N,>    /d032/d032/d033/d105    LATIN CAPITAL LETTER N WITH CEDILLA
  71694.  <OE>    /d032/d032/d033/d106    LATIN CAPITAL LIGATURE OE
  71695.  <O->    /d032/d032/d033/d107    LATIN CAPITAL LETTER O WITH MACRON
  71696.  <T//>   /d032/d032/d033/d109    LATIN CAPITAL LETTER T WITH STROKE
  71697.  <NG>    /d032/d032/d033/d110    LATIN CAPITAL LETTER ENG (Lappish)
  71698.  <'n>    /d032/d032/d033/d111    LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
  71699.  <kk>    /d032/d032/d033/d112    LATIN SMALL LETTER KRA (Greenlandic)
  71700.  <i;>    /d032/d032/d033/d113    LATIN SMALL LETTER I WITH OGONEK
  71701.  <j/>>   /d032/d032/d033/d114    LATIN SMALL LETTER J WITH CIRCUMFLEX
  71702.  <k,>    /d032/d032/d033/d115    LATIN SMALL LETTER K WITH CEDILLA
  71703.  <h//>   /d032/d032/d033/d116    LATIN SMALL LETTER H WITH STROKE
  71704.  <i.>    /d032/d032/d033/d117    LATIN SMALL LETTER I WITH NO DOT
  71705.  <ij>    /d032/d032/d033/d118    LATIN SMALL LIGATURE IJ
  71706.  <l.>    /d032/d032/d033/d119    LATIN SMALL LETTER L WITH MIDDLE DOT
  71707.  <l,>    /d032/d032/d033/d120    LATIN SMALL LETTER L WITH CEDILLA
  71708.  <n,>    /d032/d032/d033/d121    LATIN SMALL LETTER N WITH CEDILLA
  71709.  <oe>    /d032/d032/d033/d122    LATIN SMALL LIGATURE OE
  71710.  <o->    /d032/d032/d033/d123    LATIN SMALL LETTER O WITH MACRON
  71711.  <t//>   /d032/d032/d033/d125    LATIN SMALL LETTER T WITH STROKE
  71712.  <ng>    /d032/d032/d033/d126    LATIN SMALL LETTER ENG
  71713.  <A;>    /d032/d032/d033/d161    LATIN CAPITAL LETTER A WITH OGONEK
  71714.  <'(>    /d032/d032/d033/d162    BREVE
  71715.  <L//>   /d032/d032/d033/d163    LATIN CAPITAL LETTER L WITH STROKE
  71716.  <L<>    /d032/d032/d033/d165    LATIN CAPITAL LETTER L WITH CARON
  71717.  <S'>    /d032/d032/d033/d166    LATIN CAPITAL LETTER S WITH ACUTE
  71718.  <S/>>   /d032/d032/d033/d168    LATIN CAPITAL LETTER S WITH CIRCUMFLEX
  71719.  <S<>    /d032/d032/d033/d169    LATIN CAPITAL LETTER S WITH CARON
  71720.  <S,>    /d032/d032/d033/d170    LATIN CAPITAL LETTER S WITH CEDILLA
  71721.  <T<>    /d032/d032/d033/d171    LATIN CAPITAL LETTER T WITH CARON
  71722.  <Z'>    /d032/d032/d033/d172    LATIN CAPITAL LETTER Z WITH ACUTE
  71723.  <Z<>    /d032/d032/d033/d174    LATIN CAPITAL LETTER Z WITH CARON
  71724.  <Z.>    /d032/d032/d033/d175    LATIN CAPITAL LETTER Z WITH DOT ABOVE
  71725.  <a;>    /d032/d032/d033/d177    LATIN SMALL LETTER A WITH OGONEK
  71726.  
  71727.  
  71728.  
  71729.  
  71730.  
  71731.  
  71732.  
  71733.                Copyright c 1991 IEEE.  All rights reserved.
  71734.       This is an unapproved IEEE Standards Draft, subject to change.
  71735.  
  71736.  
  71737.  
  71738.  
  71739.  
  71740.  F.5 (Example) Danish Charmap Files                                   1057
  71741.  
  71742.  
  71743.  
  71744.  
  71745.  
  71746.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  71747.  
  71748.  <';>    /d032/d032/d033/d178    OGONEK
  71749.  <l//>   /d032/d032/d033/d179    LATIN SMALL LETTER L WITH STROKE
  71750.  <l<>    /d032/d032/d033/d181    LATIN SMALL LETTER L WITH CARON
  71751.  <s'>    /d032/d032/d033/d182    LATIN SMALL LETTER S WITH ACUTE
  71752.  <'<>    /d032/d032/d033/d183    CARON
  71753.  <s/>>   /d032/d032/d033/d184    LATIN SMALL LETTER S WITH CIRCUMFLEX
  71754.  <s<>    /d032/d032/d033/d185    LATIN SMALL LETTER S WITH CARON
  71755.  <s,>    /d032/d032/d033/d186    LATIN SMALL LETTER S WITH CEDILLA
  71756.  <t<>    /d032/d032/d033/d187    LATIN SMALL LETTER T WITH CARON
  71757.  <z'>    /d032/d032/d033/d188    LATIN SMALL LETTER Z WITH ACUTE
  71758.  <'">    /d032/d032/d033/d189    DOUBLE ACUTE ACCENT
  71759.  <z<>    /d032/d032/d033/d190    LATIN SMALL LETTER Z WITH CARON
  71760.  <z.>    /d032/d032/d033/d191    LATIN SMALL LETTER Z WITH DOT ABOVE
  71761.  <R'>    /d032/d032/d033/d192    LATIN CAPITAL LETTER R WITH ACUTE
  71762.  <R,>    /d032/d032/d033/d193    LATIN CAPITAL LETTER R WITH CEDILLA
  71763.  <A(>    /d032/d032/d033/d195    LATIN CAPITAL LETTER A WITH BREVE
  71764.  <L'>    /d032/d032/d033/d197    LATIN CAPITAL LETTER L WITH ACUTE
  71765.  <C'>    /d032/d032/d033/d198    LATIN CAPITAL LETTER C WITH ACUTE
  71766.  <C<>    /d032/d032/d033/d200    LATIN CAPITAL LETTER C WITH CARON
  71767.  <E;>    /d032/d032/d033/d202    LATIN CAPITAL LETTER E WITH OGONEK
  71768.  <E<>    /d032/d032/d033/d204    LATIN CAPITAL LETTER E WITH CARON
  71769.  <D<>    /d032/d032/d033/d207    LATIN CAPITAL LETTER D WITH CARON
  71770.  <D//>   /d032/d032/d033/d208    LATIN CAPITAL LETTER D WITH STROKE
  71771.  <N'>    /d032/d032/d033/d209    LATIN CAPITAL LETTER N WITH ACUTE
  71772.  <N<>    /d032/d032/d033/d210    LATIN CAPITAL LETTER N WITH CARON
  71773.  <U?>    /d032/d032/d033/d212    LATIN CAPITAL LETTER U WITH TILDE
  71774.  <O">    /d032/d032/d033/d213    LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
  71775.  <U->    /d032/d032/d033/d214    LATIN CAPITAL LETTER U WITH MACRON
  71776.  <U(>    /d032/d032/d033/d215    LATIN CAPITAL LETTER U WITH BREVE
  71777.  <R<>    /d032/d032/d033/d216    LATIN CAPITAL LETTER R WITH CARON
  71778.  <U0>    /d032/d032/d033/d217    LATIN CAPITAL LETTER U WITH RING ABOVE     1
  71779.  <U;>    /d032/d032/d033/d218    LATIN CAPITAL LETTER U WITH OGONEK
  71780.  <U">    /d032/d032/d033/d219    LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
  71781.  <W/>>   /d032/d032/d033/d220    LATIN CAPITAL LETTER W WITH CIRCUMFLEX
  71782.  <Y/>>   /d032/d032/d033/d221    LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
  71783.  <T,>    /d032/d032/d033/d222    LATIN CAPITAL LETTER T WITH CEDILLA
  71784.  <Y:>    /d032/d032/d033/d223    LATIN CAPITAL LETTER Y WITH DIAERESIS
  71785.  <r'>    /d032/d032/d033/d224    LATIN SMALL LETTER R WITH ACUTE
  71786.  <r,>    /d032/d032/d033/d225    LATIN SMALL LETTER R WITH CEDILLA
  71787.  <a(>    /d032/d032/d033/d227    LATIN SMALL LETTER A WITH BREVE
  71788.  <l'>    /d032/d032/d033/d229    LATIN SMALL LETTER L WITH ACUTE
  71789.  <c'>    /d032/d032/d033/d230    LATIN SMALL LETTER C WITH ACUTE
  71790.  <c<>    /d032/d032/d033/d232    LATIN SMALL LETTER C WITH CARON
  71791.  <e;>    /d032/d032/d033/d234    LATIN SMALL LETTER E WITH OGONEK
  71792.  
  71793.  
  71794.  
  71795.  
  71796.  
  71797.  
  71798.  
  71799.                Copyright c 1991 IEEE.  All rights reserved.
  71800.       This is an unapproved IEEE Standards Draft, subject to change.
  71801.  
  71802.  
  71803.  
  71804.  
  71805.  
  71806.  1058                                            F Sample National Profile
  71807.  
  71808.  
  71809.  
  71810.  
  71811.  
  71812.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  71813.  
  71814.  <e<>    /d032/d032/d033/d236    LATIN SMALL LETTER E WITH CARON
  71815.  <d<>    /d032/d032/d033/d239    LATIN SMALL LETTER D WITH CARON
  71816.  <d//>   /d032/d032/d033/d240    LATIN SMALL LETTER D WITH STROKE
  71817.  <n'>    /d032/d032/d033/d241    LATIN SMALL LETTER N WITH ACUTE
  71818.  <n<>    /d032/d032/d033/d242    LATIN SMALL LETTER N WITH CARON
  71819.  <u?>    /d032/d032/d033/d244    LATIN SMALL LETTER U WITH TILDE
  71820.  <o">    /d032/d032/d033/d245    LATIN SMALL LETTER O WITH DOUBLE ACUTE
  71821.  <u->    /d032/d032/d033/d246    LATIN SMALL LETTER U WITH MACRON
  71822.  <u(>    /d032/d032/d033/d247    LATIN SMALL LETTER U WITH BREVE
  71823.  <r<>    /d032/d032/d033/d248    LATIN SMALL LETTER R WITH CARON
  71824.  <u0>    /d032/d032/d033/d249    LATIN SMALL LETTER U WITH RING ABOVE       1
  71825.  <u;>    /d032/d032/d033/d250    LATIN SMALL LETTER U WITH OGONEK
  71826.  <u">    /d032/d032/d033/d251    LATIN SMALL LETTER U WITH DOUBLE ACUTE
  71827.  <w/>>   /d032/d032/d033/d252    LATIN SMALL LETTER W WITH CIRCUMFLEX
  71828.  <y/>>   /d032/d032/d033/d253    LATIN SMALL LETTER Y WITH CIRCUMFLEX
  71829.  <t,>    /d032/d032/d033/d254    LATIN SMALL LETTER T WITH CEDILLA
  71830.  <'.>    /d032/d032/d033/d255    DOT ABOVE
  71831.  <a<>    /d032/d032/d034/d032    LATIN SMALL LETTER A WITH CARON
  71832.  <A<>    /d032/d032/d034/d033    LATIN CAPITAL LETTER A WITH CARON
  71833.  <a_>    /d032/d032/d034/d034    LATIN SMALL LETTER A WITH LINE BELOW
  71834.  <A_>    /d032/d032/d034/d035    LATIN CAPITAL LETTER A WITH LINE BELOW
  71835.  <'a>    /d032/d032/d034/d048    LATIN SMALL LETTER A PRECEDED BY APOSTROPHE
  71836.  <'A>    /d032/d032/d034/d049    LATIN CAPITAL LETTER A PRECEDED BY APOSTROPHE
  71837.  <a1>    /d032/d032/d034/d052    LATIN SMALL LETTER A WITH MACRON AND DIAERESIS
  71838.  <A1>    /d032/d032/d034/d053    LATIN CAPITAL LETTER A WITH MACRON AND DIAERESIS
  71839.  <a2>    /d032/d032/d034/d054    LATIN SMALL LETTER A WITH MACRON AND DOT ABOVE
  71840.  <A2>    /d032/d032/d034/d055    LATIN CAPITAL LETTER A WITH MACRON AND DOT ABOVE
  71841.  <a3>    /d032/d032/d034/d056    LATIN SMALL LETTER AE WITH MACRON
  71842.  <A3>    /d032/d032/d034/d057    LATIN CAPITAL LETTER AE WITH MACRON
  71843.  <b.>    /d032/d032/d034/d086    LATIN SMALL LETTER B WITH DOT ABOVE
  71844.  <B.>    /d032/d032/d034/d087    LATIN CAPITAL LETTER B WITH DOT ABOVE
  71845.  <b_>    /d032/d032/d034/d088    LATIN SMALL LETTER B WITH LINE BELOW
  71846.  <B_>    /d032/d032/d034/d089    LATIN CAPITAL LETTER B WITH LINE BELOW
  71847.  <d_>    /d032/d032/d034/d096    LATIN SMALL LETTER D WITH LINE BELOW
  71848.  <D_>    /d032/d032/d034/d097    LATIN CAPITAL LETTER D WITH LINE BELOW
  71849.  <d.>    /d032/d032/d034/d098    LATIN SMALL LETTER D WITH DOT BELOW
  71850.  <D.>    /d032/d032/d034/d099    LATIN CAPITAL LETTER D WITH DOT BELOW
  71851.  <d;>    /d032/d032/d034/d100    LATIN SMALL LETTER D WITH OGONEK
  71852.  <D;>    /d032/d032/d034/d101    LATIN CAPITAL LETTER D WITH OGONEK
  71853.  <e(>    /d032/d032/d034/d106    LATIN SMALL LETTER E WITH BREVE
  71854.  <E(>    /d032/d032/d034/d107    LATIN CAPITAL LETTER E WITH BREVE
  71855.  <e_>    /d032/d032/d034/d108    LATIN SMALL LETTER E WITH LINE BELOW
  71856.  <E_>    /d032/d032/d034/d109    LATIN CAPITAL LETTER E WITH LINE BELOW
  71857.  <;S>    /d032/d032/d034/d126    HIGH OGONEK
  71858.  
  71859.  
  71860.  
  71861.  
  71862.  
  71863.  
  71864.  
  71865.                Copyright c 1991 IEEE.  All rights reserved.
  71866.       This is an unapproved IEEE Standards Draft, subject to change.
  71867.  
  71868.  
  71869.  
  71870.  
  71871.  
  71872.  F.5 (Example) Danish Charmap Files                                   1059
  71873.  
  71874.  
  71875.  
  71876.  
  71877.  
  71878.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  71879.  
  71880.  <e?>    /d032/d032/d034/d168    LATIN SMALL LETTER E WITH TILDE
  71881.  <E?>    /d032/d032/d034/d169    LATIN CAPITAL LETTER E WITH TILDE
  71882.  <f.>    /d032/d032/d034/d180    LATIN SMALL LETTER F WITH DOT ABOVE
  71883.  <F.>    /d032/d032/d034/d181    LATIN CAPITAL LETTER F WITH DOT ABOVE
  71884.  <g<>    /d032/d032/d034/d182    LATIN SMALL LETTER G WITH CARON
  71885.  <G<>    /d032/d032/d034/d183    LATIN CAPITAL LETTER G WITH CARON
  71886.  <g->    /d032/d032/d034/d184    LATIN SMALL LETTER G WITH MACRON
  71887.  <G->    /d032/d032/d034/d185    LATIN CAPITAL LETTER G WITH MACRON
  71888.  <g//>   /d032/d032/d034/d188    LATIN SMALL LETTER G WITH STROKE
  71889.  <G//>   /d032/d032/d034/d189    LATIN CAPITAL LETTER G WITH STROKE
  71890.  <h:>    /d032/d032/d034/d192    LATIN SMALL LETTER H WITH DIAERESIS
  71891.  <H:>    /d032/d032/d034/d193    LATIN CAPITAL LETTER H WITH DIAERESIS
  71892.  <h.>    /d032/d032/d034/d194    LATIN SMALL LETTER H WITH DOT ABOVE
  71893.  <H.>    /d032/d032/d034/d195    LATIN CAPITAL LETTER H WITH DOT ABOVE
  71894.  <h,>    /d032/d032/d034/d196    LATIN SMALL LETTER H WITH CEDILLA
  71895.  <H,>    /d032/d032/d034/d197    LATIN CAPITAL LETTER H WITH CEDILLA
  71896.  <h;>    /d032/d032/d034/d198    LATIN SMALL LETTER H WITH OGONEK
  71897.  <H;>    /d032/d032/d034/d199    LATIN CAPITAL LETTER H WITH OGONEK
  71898.  <i<>    /d032/d032/d034/d204    LATIN SMALL LETTER I WITH CARON
  71899.  <I<>    /d032/d032/d034/d205    LATIN CAPITAL LETTER I WITH CARON
  71900.  <i(>    /d032/d032/d034/d206    LATIN SMALL LETTER I WITH BREVE
  71901.  <I(>    /d032/d032/d034/d207    LATIN CAPITAL LETTER I WITH BREVE
  71902.  <j(>    /d032/d032/d034/d224    LATIN SMALL LETTER J WITH BREVE
  71903.  <J(>    /d032/d032/d034/d225    LATIN CAPITAL LETTER J WITH BREVE
  71904.  <k'>    /d032/d032/d034/d226    LATIN SMALL LETTER K WITH ACUTE
  71905.  <K'>    /d032/d032/d034/d227    LATIN CAPITAL LETTER K WITH ACUTE
  71906.  <k<>    /d032/d032/d034/d228    LATIN SMALL LETTER K WITH CARON
  71907.  <K<>    /d032/d032/d034/d229    LATIN CAPITAL LETTER K WITH CARON
  71908.  <k_>    /d032/d032/d034/d230    LATIN SMALL LETTER K WITH LINE BELOW
  71909.  <K_>    /d032/d032/d034/d231    LATIN CAPITAL LETTER K WITH LINE BELOW
  71910.  <k.>    /d032/d032/d034/d232    LATIN SMALL LETTER K WITH DOT BELOW
  71911.  <K.>    /d032/d032/d034/d233    LATIN CAPITAL LETTER K WITH DOT BELOW
  71912.  <k;>    /d032/d032/d034/d234    LATIN SMALL LETTER K WITH OGONEK
  71913.  <K;>    /d032/d032/d034/d235    LATIN CAPITAL LETTER K WITH OGONEK
  71914.  <l_>    /d032/d032/d034/d240    LATIN SMALL LETTER L WITH LINE BELOW
  71915.  <L_>    /d032/d032/d034/d241    LATIN CAPITAL LETTER L WITH LINE BELOW
  71916.  <m'>    /d032/d032/d034/d248    LATIN SMALL LETTER M WITH ACUTE
  71917.  <M'>    /d032/d032/d034/d249    LATIN CAPITAL LETTER M WITH ACUTE
  71918.  <m.>    /d032/d032/d034/d250    LATIN SMALL LETTER M WITH DOT ABOVE
  71919.  <M.>    /d032/d032/d034/d251    LATIN CAPITAL LETTER M WITH DOT ABOVE
  71920.  <n.>    /d032/d032/d035/d034    LATIN SMALL LETTER N WITH DOT ABOVE
  71921.  <N.>    /d032/d032/d035/d035    LATIN CAPITAL LETTER N WITH DOT ABOVE
  71922.  <n_>    /d032/d032/d035/d038    LATIN SMALL LETTER N WITH LINE BELOW
  71923.  <N_>    /d032/d032/d035/d039    LATIN CAPITAL LETTER N WITH LINE BELOW
  71924.  
  71925.  
  71926.  
  71927.  
  71928.  
  71929.  
  71930.  
  71931.                Copyright c 1991 IEEE.  All rights reserved.
  71932.       This is an unapproved IEEE Standards Draft, subject to change.
  71933.  
  71934.  
  71935.  
  71936.  
  71937.  
  71938.  1060                                            F Sample National Profile
  71939.  
  71940.  
  71941.  
  71942.  
  71943.  
  71944.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  71945.  
  71946.  <o<>    /d032/d032/d035/d046    LATIN SMALL LETTER O WITH CARON
  71947.  <O<>    /d032/d032/d035/d047    LATIN CAPITAL LETTER O WITH CARON
  71948.  <o(>    /d032/d032/d035/d048    LATIN SMALL LETTER O WITH BREVE
  71949.  <O(>    /d032/d032/d035/d049    LATIN CAPITAL LETTER O WITH BREVE
  71950.  <o_>    /d032/d032/d035/d050    LATIN SMALL LETTER O WITH LINE BELOW
  71951.  <O_>    /d032/d032/d035/d051    LATIN CAPITAL LETTER O WITH LINE BELOW
  71952.  <o;>    /d032/d032/d035/d064    LATIN SMALL LETTER O WITH OGONEK
  71953.  <O;>    /d032/d032/d035/d065    LATIN CAPITAL LETTER O WITH OGONEK
  71954.  <o1>    /d032/d032/d035/d068    LATIN SMALL LETTER O WITH MACRON AND OGONEK
  71955.  <O1>    /d032/d032/d035/d069    LATIN CAPITAL LETTER O WITH MACRON AND OGONEK
  71956.  <p'>    /d032/d032/d035/d098    LATIN SMALL LETTER P WITH ACUTE
  71957.  <P'>    /d032/d032/d035/d099    LATIN CAPITAL LETTER P WITH ACUTE
  71958.  <r.>    /d032/d032/d035/d100    LATIN SMALL LETTER R WITH DOT ABOVE
  71959.  <R.>    /d032/d032/d035/d101    LATIN CAPITAL LETTER R WITH DOT ABOVE
  71960.  <r_>    /d032/d032/d035/d102    LATIN SMALL LETTER R WITH LINE BELOW
  71961.  <R_>    /d032/d032/d035/d103    LATIN CAPITAL LETTER R WITH LINE BELOW
  71962.  <s.>    /d032/d032/d035/d110    LATIN SMALL LETTER S WITH DOT ABOVE
  71963.  <S.>    /d032/d032/d035/d111    LATIN CAPITAL LETTER S WITH DOT ABOVE
  71964.  <s;>    /d032/d032/d035/d114    LATIN SMALL LETTER S WITH OGONEK
  71965.  <S;>    /d032/d032/d035/d115    LATIN CAPITAL LETTER S WITH OGONEK
  71966.  <t_>    /d032/d032/d035/d160    LATIN SMALL LETTER T WITH LINE BELOW
  71967.  <T_>    /d032/d032/d035/d161    LATIN CAPITAL LETTER T WITH LINE BELOW
  71968.  <t.>    /d032/d032/d035/d162    LATIN SMALL LETTER T WITH DOT BELOW
  71969.  <T.>    /d032/d032/d035/d163    LATIN CAPITAL LETTER T WITH DOT BELOW
  71970.  <u<>    /d032/d032/d035/d170    LATIN SMALL LETTER U WITH CARON
  71971.  <U<>    /d032/d032/d035/d171    LATIN CAPITAL LETTER U WITH CARON
  71972.  <v?>    /d032/d032/d035/d214    LATIN SMALL LETTER V WITH TILDE
  71973.  <V?>    /d032/d032/d035/d215    LATIN CAPITAL LETTER V WITH TILDE
  71974.  <w'>    /d032/d032/d035/d220    LATIN SMALL LETTER W WITH ACUTE
  71975.  <W'>    /d032/d032/d035/d221    LATIN CAPITAL LETTER W WITH ACUTE
  71976.  <w.>    /d032/d032/d035/d222    LATIN SMALL LETTER W WITH DOT ABOVE
  71977.  <W.>    /d032/d032/d035/d223    LATIN CAPITAL LETTER W WITH DOT ABOVE
  71978.  <w:>    /d032/d032/d035/d224    LATIN SMALL LETTER W WITH DIAERESIS
  71979.  <W:>    /d032/d032/d035/d225    LATIN CAPITAL LETTER W WITH DIAERESIS
  71980.  <x.>    /d032/d032/d035/d230    LATIN SMALL LETTER X WITH DOT ABOVE
  71981.  <X.>    /d032/d032/d035/d231    LATIN CAPITAL LETTER X WITH DOT ABOVE
  71982.  <x:>    /d032/d032/d035/d232    LATIN SMALL LETTER X WITH DIAERESIS
  71983.  <X:>    /d032/d032/d035/d233    LATIN CAPITAL LETTER X WITH DIAERESIS
  71984.  <y!>    /d032/d032/d035/d236    LATIN SMALL LETTER Y WITH GRAVE
  71985.  <Y!>    /d032/d032/d035/d237    LATIN CAPITAL LETTER Y WITH GRAVE
  71986.  <y.>    /d032/d032/d035/d238    LATIN SMALL LETTER Y WITH DOT ABOVE
  71987.  <Y.>    /d032/d032/d035/d239    LATIN CAPITAL LETTER Y WITH DOT ABOVE
  71988.  <z/>>   /d032/d032/d035/d244    LATIN SMALL LETTER Z WITH CIRCUMFLEX
  71989.  <Z/>>   /d032/d032/d035/d245    LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
  71990.  
  71991.  
  71992.  
  71993.  
  71994.  
  71995.  
  71996.  
  71997.                Copyright c 1991 IEEE.  All rights reserved.
  71998.       This is an unapproved IEEE Standards Draft, subject to change.
  71999.  
  72000.  
  72001.  
  72002.  
  72003.  
  72004.  F.5 (Example) Danish Charmap Files                                   1061
  72005.  
  72006.  
  72007.  
  72008.  
  72009.  
  72010.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  72011.  
  72012.  <z(>    /d032/d032/d035/d246    LATIN SMALL LETTER Z WITH BREVE
  72013.  <Z(>    /d032/d032/d035/d247    LATIN CAPITAL LETTER Z WITH BREVE
  72014.  <z_>    /d032/d032/d035/d248    LATIN SMALL LETTER Z WITH LINE BELOW
  72015.  <Z_>    /d032/d032/d035/d249    LATIN CAPITAL LETTER Z WITH LINE BELOW
  72016.  <z//>   /d032/d032/d035/d252    LATIN SMALL LETTER Z WITH STROKE
  72017.  <Z//>   /d032/d032/d035/d253    LATIN CAPITAL LETTER Z WITH STROKE
  72018.  <ez>    /d032/d032/d035/d254    LATIN SMALL LETTER EZH WITH CARON
  72019.  <EZ>    /d032/d032/d035/d255    LATIN CAPITAL LETTER EZH WITH CARON
  72020.  <g'>    /d032/d032/d036/d033    LATIN SMALL LETTER G WITH ACUTE
  72021.  <G'>    /d032/d032/d036/d034    LATIN CAPITAL LETTER G WITH ACUTE
  72022.  <'b>    /d032/d032/d036/d084    LATIN SMALL LETTER B PRECEDED BY APOSTROPHE
  72023.  <'B>    /d032/d032/d036/d085    LATIN CAPITAL LETTER B PRECEDED BY APOSTROPHE
  72024.  <'d>    /d032/d032/d036/d096    LATIN SMALL LETTER D PRECEDED BY APOSTROPHE
  72025.  <'D>    /d032/d032/d036/d097    LATIN CAPITAL LETTER D PRECEDED BY APOSTROPHE
  72026.  <'g>    /d032/d032/d036/d162    LATIN SMALL LETTER G PRECEDED BY APOSTROPHE
  72027.  <'G>    /d032/d032/d036/d163    LATIN CAPITAL LETTER G PRECEDED BY APOSTROPHE
  72028.  <'j>    /d032/d032/d036/d174    LATIN SMALL LETTER J PRECEDED BY APOSTROPHE
  72029.  <'J>    /d032/d032/d036/d175    LATIN CAPITAL LETTER J PRECEDED BY APOSTROPHE
  72030.  <'y>    /d032/d032/d036/d235    LATIN SMALL LETTER Y PRECEDED BY APOSTROPHE
  72031.  <'Y>    /d032/d032/d036/d236    LATIN CAPITAL LETTER Y PRECEDED BY APOSTROPHE
  72032.  <ed>    /d032/d032/d036/d239    LATIN SMALL LETTER EDZ
  72033.  <ED>    /d032/d032/d036/d240    LATIN CAPITAL LETTER EDZ
  72034.  <Vs>    /d032/d032/d037/d032    SPACE SYMBOL
  72035.  <1M>    /d032/d032/d037/d033    EM-SPACE
  72036.  <1N>    /d032/d032/d037/d034    EN-SPACE
  72037.  <3M>    /d032/d032/d037/d035    THREE-PER-EM SPACE
  72038.  <4M>    /d032/d032/d037/d036    FOUR-PER-EM SPACE
  72039.  <6M>    /d032/d032/d037/d037    SIX-PER-EM SPACE
  72040.  <1H>    /d032/d032/d037/d038    HAIR SPACE
  72041.  <1T>    /d032/d032/d037/d039    THIN SPACE
  72042.  <-1>    /d032/d032/d037/d040    HYPHEN
  72043.  <-N>    /d032/d032/d037/d041    EN-DASH
  72044.  <-2>    /d032/d032/d037/d042    MINUS SIGN
  72045.  <-M>    /d032/d032/d037/d043    EM-DASH
  72046.  <-3>    /d032/d032/d037/d044    QUOTATION DASH
  72047.  <'1>    /d032/d032/d037/d045    SINGLE PRIME
  72048.  <'2>    /d032/d032/d037/d046    DOUBLE PRIME
  72049.  <'3>    /d032/d032/d037/d047    TRIPLE PRIME
  72050.  <9'>    /d032/d032/d037/d048    SINGLE HIGH-REVERSED-9 QUOTATION MARK
  72051.  <9">    /d032/d032/d037/d049    DOUBLE HIGH-REVERSED-9 QUOTATION MARK
  72052.  <.9>    /d032/d032/d037/d050    SINGLE LOW-9 QUOTATION MARK
  72053.  <:9>    /d032/d032/d037/d051    DOUBLE LOW-9 QUOTATION MARK
  72054.  <<1>    /d032/d032/d037/d052    SINGLE LEFT-POINTING ANGLE QUOTATION MARK
  72055.  </>1>   /d032/d032/d037/d053    SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
  72056.  
  72057.  
  72058.  
  72059.  
  72060.  
  72061.  
  72062.  
  72063.                Copyright c 1991 IEEE.  All rights reserved.
  72064.       This is an unapproved IEEE Standards Draft, subject to change.
  72065.  
  72066.  
  72067.  
  72068.  
  72069.  
  72070.  1062                                            F Sample National Profile
  72071.  
  72072.  
  72073.  
  72074.  
  72075.  
  72076.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  72077.  
  72078.  <<//>   /d032/d032/d037/d054    LEFT-POINTING ANGLE BRACKET
  72079.  <///>>  /d032/d032/d037/d055    RIGHT-POINTING ANGLE BRACKET
  72080.  <15>    /d032/d032/d037/d056    VULGAR FRACTION ONE FIFTH
  72081.  <25>    /d032/d032/d037/d057    VULGAR FRACTION TWO FIFTHS
  72082.  <35>    /d032/d032/d037/d058    VULGAR FRACTION THREE FIFTHS
  72083.  <45>    /d032/d032/d037/d059    VULGAR FRACTION FOUR FIFTHS
  72084.  <16>    /d032/d032/d037/d060    VULGAR FRACTION ONE SIXTH
  72085.  <13>    /d032/d032/d037/d061    VULGAR FRACTION ONE THIRD
  72086.  <23>    /d032/d032/d037/d062    VULGAR FRACTION TWO THIRDS
  72087.  <56>    /d032/d032/d037/d063    VULGAR FRACTION FIVE SIXTHS
  72088.  <*->    /d032/d032/d037/d064    MIDDLE ASTERISK
  72089.  <//->   /d032/d032/d037/d065    DAGGER
  72090.  <//=>   /d032/d032/d037/d066    DOUBLE-DAGGER
  72091.  <-X>    /d032/d032/d037/d067    MALTESE CROSS
  72092.  <%0>    /d032/d032/d037/d068    PER-MILLE SIGN
  72093.  <co>    /d032/d032/d037/d069    CARE-OF SIGN
  72094.  <PO>    /d032/d032/d037/d070    SOUND RECORDING COPYRIGHT SIGN
  72095.  <Rx>    /d032/d032/d037/d071    PRESCRIPTION SIGN
  72096.  <AO>    /d032/d032/d037/d072    ANGSTROEM SIGN
  72097.  <oC>    /d032/d032/d037/d073    CENTIGRADE DEGREE SIGN
  72098.  <Ml>    /d032/d032/d037/d074    MALE SIGN
  72099.  <Fm>    /d032/d032/d037/d075    FEMALE SIGN
  72100.  <Tl>    /d032/d032/d037/d076    TELEPHONE SIGN
  72101.  <TR>    /d032/d032/d037/d077    TELEPHONE RECORDER SIGN
  72102.  <MX>    /d032/d032/d037/d078    MUSICAL SHARP SIGN
  72103.  <Mb>    /d032/d032/d037/d079    MUSICAL FLAT SIGN
  72104.  <Mx>    /d032/d032/d037/d080    MUSICAL NATURAL SIGN
  72105.  <XX>    /d032/d032/d037/d081    BALLOT CROSS SIGN
  72106.  <OK>    /d032/d032/d037/d082    CHECK MARK
  72107.  <M2>    /d032/d032/d037/d083    DOUBLE MUSICAL NOTES
  72108.  <!2>    /d032/d032/d037/d084    DOUBLE EXCLAMATION MARKS
  72109.  <=2>    /d032/d032/d037/d085    DOUBLE LOW LINE
  72110.  <Ca>    /d032/d032/d037/d086    CARET
  72111.  <..>    /d032/d032/d037/d087    TWO-DOT LEADER
  72112.  <.3>    /d032/d032/d037/d088    HORIZONTAL ELLIPSIS
  72113.  <:3>    /d032/d032/d037/d089    VERTICAL ELLIPSIS
  72114.  <.:>    /d032/d032/d037/d090    THEREFORE SIGN
  72115.  <:.>    /d032/d032/d037/d091    BECAUSE SIGN
  72116.  <-+>    /d032/d032/d037/d092    MINUS-PLUS SIGN
  72117.  <!=>    /d032/d032/d037/d093    NOT EQUAL-TO SIGN
  72118.  <=3>    /d032/d032/d037/d094    IDENTICAL-TO SIGN
  72119.  <?1>    /d032/d032/d037/d095    DIFFERENCE-BETWEEN SIGN
  72120.  <?2>    /d032/d032/d037/d096    ALMOST-EQUALS SIGN
  72121.  <?->    /d032/d032/d037/d097    ASYMTOTICALLY-EQUALS SIGN
  72122.  
  72123.  
  72124.  
  72125.  
  72126.  
  72127.  
  72128.  
  72129.                Copyright c 1991 IEEE.  All rights reserved.
  72130.       This is an unapproved IEEE Standards Draft, subject to change.
  72131.  
  72132.  
  72133.  
  72134.  
  72135.  
  72136.  F.5 (Example) Danish Charmap Files                                   1063
  72137.  
  72138.  
  72139.  
  72140.  
  72141.  
  72142.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  72143.  
  72144.  <?=>    /d032/d032/d037/d098    SIMILAR-TO SIGN
  72145.  <=<>    /d032/d032/d037/d099    LESS-THAN OR EQUAL-TO SIGN
  72146.  </>=>   /d032/d032/d037/d100    GREATER-THAN OR EQUAL-TO SIGN
  72147.  <0(>    /d032/d032/d037/d101    PROPORTIONAL-TO SIGN
  72148.  <00>    /d032/d032/d037/d102    INFINITY SIGN
  72149.  <PP>    /d032/d032/d037/d103    PARALLEL-TO SIGN
  72150.  <-T>    /d032/d032/d037/d104    ORTHOGONAL-TO SIGN
  72151.  <-L>    /d032/d032/d037/d105    RIGHT ANGLE SIGN
  72152.  <-V>    /d032/d032/d037/d106    ANGLE SIGN
  72153.  <AN>    /d032/d032/d037/d107    LOGICAL-AND SIGN
  72154.  <OR>    /d032/d032/d037/d108    LOGICAL-OR SIGN
  72155.  <.P>    /d032/d032/d037/d109    PRODUCT DOT SIGN
  72156.  <nS>    /d032/d032/d037/d110    SUPERSCRIPT LATIN SMALL LETTER N
  72157.  <dP>    /d032/d032/d037/d111    PARTIAL DIFFERENTIAL SIGN
  72158.  <f(>    /d032/d032/d037/d112    FUNCTION SIGN
  72159.  <In>    /d032/d032/d037/d113    INTEGRAL SIGN
  72160.  <Io>    /d032/d032/d037/d114    CONTOUR INTEGRAL SIGN
  72161.  <RT>    /d032/d032/d037/d117    RADICAL SIGN
  72162.  <*P>    /d032/d032/d037/d118    REPEATED PRODUCT SIGN
  72163.  <+Z>    /d032/d032/d037/d119    SUMMATION SIGN
  72164.  <FA>    /d032/d032/d037/d120    FOR-ALL SIGN
  72165.  <TE>    /d032/d032/d037/d121    THERE-EXISTS SIGN
  72166.  <GF>    /d032/d032/d037/d122    GAMMA FUNCTION SIGN
  72167.  <DE>    /d032/d032/d037/d123    INCREMENT SIGN
  72168.  <NB>    /d032/d032/d037/d124    NABLA
  72169.  <(U>    /d032/d032/d037/d125    INTERSECTION SIGN
  72170.  <)U>    /d032/d032/d037/d126    UNION SIGN
  72171.  <(C>    /d032/d032/d037/d160    PROPER SUBSET SIGN
  72172.  <)C>    /d032/d032/d037/d161    PROPER SUPERSET SIGN
  72173.  <(_>    /d032/d032/d037/d162    SUBSET SIGN
  72174.  <)_>    /d032/d032/d037/d163    SUPERSET SIGN
  72175.  <(->    /d032/d032/d037/d164    ELEMENT-OF SIGN
  72176.  <-)>    /d032/d032/d037/d165    HAS AN ELEMENT SIGN
  72177.  <</>>   /d032/d032/d037/d166    LEFT AND RIGHT-POINTING ARROW
  72178.  <UD>    /d032/d032/d037/d167    UP AND DOWN-POINTING ARROW
  72179.  <Ub>    /d032/d032/d037/d168    UP AND DOWN-POINTING ARROW WITH LINE BELOW
  72180.  <<=>    /d032/d032/d037/d169    IMPLIED-BY SIGN
  72181.  <=/>>   /d032/d032/d037/d170    IMPLIES SIGN
  72182.  <==>    /d032/d032/d037/d171    IF-AND-ONLY-IF SIGN
  72183.  <//0>   /d032/d032/d037/d172    EMPTY SIGN
  72184.  <OL>    /d032/d032/d037/d173    SOLID LOZENGE
  72185.  <0u>    /d032/d032/d037/d176    SMILING FACE WHITE
  72186.  <0U>    /d032/d032/d037/d177    SMILING FACE BLACK
  72187.  <SU>    /d032/d032/d037/d178    RADIANT SUN
  72188.  
  72189.  
  72190.  
  72191.  
  72192.  
  72193.  
  72194.  
  72195.                Copyright c 1991 IEEE.  All rights reserved.
  72196.       This is an unapproved IEEE Standards Draft, subject to change.
  72197.  
  72198.  
  72199.  
  72200.  
  72201.  
  72202.  1064                                            F Sample National Profile
  72203.  
  72204.  
  72205.  
  72206.  
  72207.  
  72208.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  72209.  
  72210.  <0:>    /d032/d032/d037/d179    DOTTED CIRCLE
  72211.  <OS>    /d032/d032/d037/d180    SQUARE EMPTY
  72212.  <fS>    /d032/d032/d037/d181    SQUARE SOLID
  72213.  <Or>    /d032/d032/d037/d182    RECTANGLE EMPTY
  72214.  <SR>    /d032/d032/d037/d183    RECTANGLE SOLID
  72215.  <uT>    /d032/d032/d037/d184    UPWARDS-POINTING TRIANGLE EMPTY
  72216.  <UT>    /d032/d032/d037/d185    UPWARDS-POINTING TRIANGLE SOLID
  72217.  <dT>    /d032/d032/d037/d186    DOWNWARDS-POINTING TRIANGLE EMPTY
  72218.  <Dt>    /d032/d032/d037/d187    DOWNWARDS-POINTING TRIANGLE SOLID
  72219.  <PL>    /d032/d032/d037/d188    LEFTWARDS POINTER SOLID
  72220.  <PR>    /d032/d032/d037/d189    RIGHTWARDS POINTER SOLID
  72221.  <*1>    /d032/d032/d037/d190    STAR EMPTY
  72222.  <*2>    /d032/d032/d037/d191    STAR SOLID
  72223.  <VV>    /d032/d032/d037/d192    BOX DRAWINGS HEAVY VERTICAL
  72224.  <HH>    /d032/d032/d037/d193    BOX DRAWINGS HEAVY HORIZONTAL
  72225.  <DR>    /d032/d032/d037/d194    BOX DRAWINGS HEAVY DOWN AND RIGHT
  72226.  <LD>    /d032/d032/d037/d195    BOX DRAWINGS HEAVY DOWN AND LEFT
  72227.  <UR>    /d032/d032/d037/d196    BOX DRAWINGS HEAVY UP AND RIGHT
  72228.  <UL>    /d032/d032/d037/d197    BOX DRAWINGS HEAVY UP AND LEFT
  72229.  <VR>    /d032/d032/d037/d198    BOX DRAWINGS HEAVY VERTICAL AND RIGHT
  72230.  <VL>    /d032/d032/d037/d199    BOX DRAWINGS HEAVY VERTICAL AND LEFT
  72231.  <DH>    /d032/d032/d037/d200    BOX DRAWINGS HEAVY HORIZONTAL AND DOWN
  72232.  <UH>    /d032/d032/d037/d201    BOX DRAWINGS HEAVY HORIZONTAL AND UP
  72233.  <VH>    /d032/d032/d037/d202    BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
  72234.  <TB>    /d032/d032/d037/d203    BOX DRAWING SOLID UPPER HALF BLOCK
  72235.  <LB>    /d032/d032/d037/d204    BOX DRAWING SOLID LOWER HALF BLOCK
  72236.  <FB>    /d032/d032/d037/d205    BOX DRAWING SOLID FULL BLOCK
  72237.  <sB>    /d032/d032/d037/d206    BOX DRAWING SOLID SMALL SQUARE
  72238.  <EH>    /d032/d032/d037/d207    EMPTY HOUSE SIGN
  72239.  <vv>    /d032/d032/d037/d208    BOX DRAWINGS LIGHT VERTICAL
  72240.  <hh>    /d032/d032/d037/d209    BOX DRAWINGS LIGHT HORIZONTAL
  72241.  <dr>    /d032/d032/d037/d210    BOX DRAWINGS LIGHT DOWN AND RIGHT
  72242.  <dl>    /d032/d032/d037/d211    BOX DRAWINGS LIGHT DOWN AND LEFT
  72243.  <ur>    /d032/d032/d037/d212    BOX DRAWINGS LIGHT UP AND RIGHT
  72244.  <ul>    /d032/d032/d037/d213    BOX DRAWINGS LIGHT UP AND LEFT
  72245.  <vr>    /d032/d032/d037/d214    BOX DRAWINGS LIGHT VERTICAL AND RIGHT
  72246.  <vl>    /d032/d032/d037/d215    BOX DRAWINGS LIGHT VERTICAL AND LEFT
  72247.  <dh>    /d032/d032/d037/d216    BOX DRAWINGS LIGHT HORIZONTAL AND DOWN
  72248.  <uh>    /d032/d032/d037/d217    BOX DRAWINGS LIGHT HORIZONTAL AND UP
  72249.  <vh>    /d032/d032/d037/d218    BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
  72250.  <.S>    /d032/d032/d037/d219    BOX DRAWING LIGHT SHADE (25%)
  72251.  <:S>    /d032/d032/d037/d220    BOX DRAWING MEDIUM SHADE (50%)
  72252.  <?S>    /d032/d032/d037/d221    BOX DRAWING DARK SHADE (75%)
  72253.  <lB>    /d032/d032/d037/d222    BOX DRAWING SOLID LEFT HALF BLOCK
  72254.  
  72255.  
  72256.  
  72257.  
  72258.  
  72259.  
  72260.  
  72261.                Copyright c 1991 IEEE.  All rights reserved.
  72262.       This is an unapproved IEEE Standards Draft, subject to change.
  72263.  
  72264.  
  72265.  
  72266.  
  72267.  
  72268.  F.5 (Example) Danish Charmap Files                                   1065
  72269.  
  72270.  
  72271.  
  72272.  
  72273.  
  72274.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  72275.  
  72276.  <RB>    /d032/d032/d037/d223    BOX DRAWING SOLID RIGHT HALF BLOCK
  72277.  <cC>    /d032/d032/d037/d224    CLUB SYMBOL
  72278.  <cD>    /d032/d032/d037/d225    DIAMOND SYMBOL
  72279.  <Dr>    /d032/d032/d037/d226    BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
  72280.  <Dl>    /d032/d032/d037/d227    BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
  72281.  <Ur>    /d032/d032/d037/d228    BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
  72282.  <Ul>    /d032/d032/d037/d229    BOX DRAWINGS UP HEAVY AND LEFT LIGHT
  72283.  <Vr>    /d032/d032/d037/d230    BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
  72284.  <Vl>    /d032/d032/d037/d231    BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
  72285.  <dH>    /d032/d032/d037/d232    BOX DRAWINGS HORIZONTAL HEAVY AND DOWN LIGHT
  72286.  <uH>    /d032/d032/d037/d233    BOX DRAWINGS HORIZONTAL HEAVY AND UP LIGHT
  72287.  <vH>    /d032/d032/d037/d234    BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
  72288.  <Ob>    /d032/d032/d037/d235    CIRCLE BULLET EMPTY
  72289.  <Sb>    /d032/d032/d037/d236    CIRCLE BULLET SOLID
  72290.  <Sn>    /d032/d032/d037/d237    CIRCLE BULLET NEGATIVE
  72291.  <Pt>    /d032/d032/d037/d238    PESETA SYMBOL
  72292.  <NI>    /d032/d032/d037/d239    REVERSED NOT SIGN
  72293.  <cH>    /d032/d032/d037/d240    HEART SYMBOL
  72294.  <cS>    /d032/d032/d037/d241    SPADE SYMBOL
  72295.  <dR>    /d032/d032/d037/d242    BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
  72296.  <dL>    /d032/d032/d037/d243    BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
  72297.  <uR>    /d032/d032/d037/d244    BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
  72298.  <uL>    /d032/d032/d037/d245    BOX DRAWINGS UP LIGHT AND LEFT HEAVY
  72299.  <vR>    /d032/d032/d037/d246    BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
  72300.  <vL>    /d032/d032/d037/d247    BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
  72301.  <Dh>    /d032/d032/d037/d248    BOX DRAWINGS HORIZONTAL LIGHT AND DOWN HEAVY
  72302.  <Uh>    /d032/d032/d037/d249    BOX DRAWINGS HORIZONTAL LIGHT AND UP HEAVY
  72303.  <Vh>    /d032/d032/d037/d250    BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
  72304.  <0m>    /d032/d032/d037/d251    MEDIUM CIRCLE EMPTY
  72305.  <0M>    /d032/d032/d037/d252    MEDIUM CIRCLE SOLID
  72306.  <Ic>    /d032/d032/d037/d253    MEDIUM CIRCLE NEGATIVE
  72307.  <SM>    /d032/d032/d037/d254    SERVICE MARK SIGN
  72308.  <CG>    /d032/d032/d037/d255    CONGRUENCE SIGN
  72309.  <Ci>    /d032/d032/d038/d037    CIRCLE
  72310.  <(A>    /d032/d032/d038/d041    ARC SIGN
  72311.  </>V>   /d032/d032/d038/d046    RIGHTWARDS VECTOR ABOVE
  72312.  <!<>    /d032/d032/d038/d049    NOT LESS-THAN SIGN
  72313.  <<*>    /d032/d032/d038/d056    MUCH-LESS-THAN SIGN
  72314.  <!/>>   /d032/d032/d038/d065    NOT GREATER-THAN SIGN
  72315.  <*/>>   /d032/d032/d038/d072    MUCH-GREATER-THAN SIGN
  72316.  <<7>    /d032/d032/d038/d094    CEILING SIGN LEFT
  72317.  <7<>    /d032/d032/d038/d095    FLOOR SIGN LEFT
  72318.  </>7>   /d032/d032/d038/d110    CEILING SIGN RIGHT
  72319.  <7/>>   /d032/d032/d038/d111    FLOOR SIGN RIGHT
  72320.  
  72321.  
  72322.  
  72323.  
  72324.  
  72325.  
  72326.  
  72327.                Copyright c 1991 IEEE.  All rights reserved.
  72328.       This is an unapproved IEEE Standards Draft, subject to change.
  72329.  
  72330.  
  72331.  
  72332.  
  72333.  
  72334.  1066                                            F Sample National Profile
  72335.  
  72336.  
  72337.  
  72338.  
  72339.  
  72340.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  72341.  
  72342.  <I2>    /d032/d032/d038/d121    DOUBLE INTEGRAL SIGN
  72343.  <0.>    /d032/d032/d038/d164    DOT IN RING
  72344.  <HI>    /d032/d032/d038/d177    HAS-AN-IMAGE SIGN
  72345.  <::>    /d032/d032/d038/d193    PROPORTION SIGN
  72346.  <FD>    /d032/d032/d038/d209    FORWARD DIAGONAL
  72347.  <LZ>    /d032/d032/d038/d223    LOZENGE
  72348.  <BD>    /d032/d032/d038/d225    BACKWARD DIAGONAL
  72349.  <1R>    /d032/d032/d039/d032    ROMAN NUMERAL ONE
  72350.  <2R>    /d032/d032/d039/d033    ROMAN NUMERAL TWO
  72351.  <3R>    /d032/d032/d039/d034    ROMAN NUMERAL THREE
  72352.  <4R>    /d032/d032/d039/d035    ROMAN NUMERAL FOUR
  72353.  <5R>    /d032/d032/d039/d036    ROMAN NUMERAL FIVE
  72354.  <6R>    /d032/d032/d039/d037    ROMAN NUMERAL SIX
  72355.  <7R>    /d032/d032/d039/d038    ROMAN NUMERAL SEVEN
  72356.  <8R>    /d032/d032/d039/d039    ROMAN NUMERAL EIGHT
  72357.  <9R>    /d032/d032/d039/d040    ROMAN NUMERAL NINE
  72358.  <aR>    /d032/d032/d039/d041    ROMAN NUMERAL TEN
  72359.  <bR>    /d032/d032/d039/d042    ROMAN NUMERAL ELEVEN
  72360.  <cR>    /d032/d032/d039/d043    ROMAN NUMERAL TWELVE
  72361.  <IO>    /d032/d032/d040/d161    CYRILLIC CAPITAL LETTER IO
  72362.  <D%>    /d032/d032/d040/d162    CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
  72363.  <G%>    /d032/d032/d040/d163    CYRILLIC CAPITAL LETTER GJE (Macedonian)
  72364.  <IE>    /d032/d032/d040/d164    CYRILLIC CAPITAL LETTER UKRAINIAN IE
  72365.  <DS>    /d032/d032/d040/d165    CYRILLIC CAPITAL LETTER DZE (Macedonian)
  72366.  <II>    /d032/d032/d040/d166    CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
  72367.  <YI>    /d032/d032/d040/d167    CYRILLIC CAPITAL LETTER YI (Ukrainian)
  72368.  <J%>    /d032/d032/d040/d168    CYRILLIC CAPITAL LETTER JE
  72369.  <LJ>    /d032/d032/d040/d169    CYRILLIC CAPITAL LETTER LJE
  72370.  <NJ>    /d032/d032/d040/d170    CYRILLIC CAPITAL LETTER NJE
  72371.  <Ts>    /d032/d032/d040/d171    CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
  72372.  <KJ>    /d032/d032/d040/d172    CYRILLIC CAPITAL LETTER KJE (Macedonian)
  72373.  <V%>    /d032/d032/d040/d174    CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)
  72374.  <DZ>    /d032/d032/d040/d175    CYRILLIC CAPITAL LETTER DZHE
  72375.  <A=>    /d032/d032/d040/d176    CYRILLIC CAPITAL LETTER A
  72376.  <B=>    /d032/d032/d040/d177    CYRILLIC CAPITAL LETTER BE
  72377.  <V=>    /d032/d032/d040/d178    CYRILLIC CAPITAL LETTER VE
  72378.  <G=>    /d032/d032/d040/d179    CYRILLIC CAPITAL LETTER GHE
  72379.  <D=>    /d032/d032/d040/d180    CYRILLIC CAPITAL LETTER DE
  72380.  <E=>    /d032/d032/d040/d181    CYRILLIC CAPITAL LETTER IE
  72381.  <Z%>    /d032/d032/d040/d182    CYRILLIC CAPITAL LETTER ZHE
  72382.  <Z=>    /d032/d032/d040/d183    CYRILLIC CAPITAL LETTER ZE
  72383.  <I=>    /d032/d032/d040/d184    CYRILLIC CAPITAL LETTER I
  72384.  <J=>    /d032/d032/d040/d185    CYRILLIC CAPITAL LETTER SHORT I
  72385.  <K=>    /d032/d032/d040/d186    CYRILLIC CAPITAL LETTER KA
  72386.  
  72387.  
  72388.  
  72389.  
  72390.  
  72391.  
  72392.  
  72393.                Copyright c 1991 IEEE.  All rights reserved.
  72394.       This is an unapproved IEEE Standards Draft, subject to change.
  72395.  
  72396.  
  72397.  
  72398.  
  72399.  
  72400.  F.5 (Example) Danish Charmap Files                                   1067
  72401.  
  72402.  
  72403.  
  72404.  
  72405.  
  72406.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  72407.  
  72408.  <L=>    /d032/d032/d040/d187    CYRILLIC CAPITAL LETTER EL
  72409.  <M=>    /d032/d032/d040/d188    CYRILLIC CAPITAL LETTER EM
  72410.  <N=>    /d032/d032/d040/d189    CYRILLIC CAPITAL LETTER EN
  72411.  <O=>    /d032/d032/d040/d190    CYRILLIC CAPITAL LETTER O
  72412.  <P=>    /d032/d032/d040/d191    CYRILLIC CAPITAL LETTER PE
  72413.  <R=>    /d032/d032/d040/d192    CYRILLIC CAPITAL LETTER ER
  72414.  <S=>    /d032/d032/d040/d193    CYRILLIC CAPITAL LETTER ES
  72415.  <T=>    /d032/d032/d040/d194    CYRILLIC CAPITAL LETTER TE
  72416.  <U=>    /d032/d032/d040/d195    CYRILLIC CAPITAL LETTER U
  72417.  <F=>    /d032/d032/d040/d196    CYRILLIC CAPITAL LETTER EF
  72418.  <H=>    /d032/d032/d040/d197    CYRILLIC CAPITAL LETTER HA
  72419.  <C=>    /d032/d032/d040/d198    CYRILLIC CAPITAL LETTER TSE
  72420.  <C%>    /d032/d032/d040/d199    CYRILLIC CAPITAL LETTER CHE
  72421.  <S%>    /d032/d032/d040/d200    CYRILLIC CAPITAL LETTER SHA
  72422.  <Sc>    /d032/d032/d040/d201    CYRILLIC CAPITAL LETTER SHCHA
  72423.  <=">    /d032/d032/d040/d202    CYRILLIC CAPITAL HARD SIGN
  72424.  <Y=>    /d032/d032/d040/d203    CYRILLIC CAPITAL LETTER YERU
  72425.  <%">    /d032/d032/d040/d204    CYRILLIC CAPITAL SOFT SIGN
  72426.  <JE>    /d032/d032/d040/d205    CYRILLIC CAPITAL LETTER E
  72427.  <JU>    /d032/d032/d040/d206    CYRILLIC CAPITAL LETTER YU
  72428.  <JA>    /d032/d032/d040/d207    CYRILLIC CAPITAL LETTER YA
  72429.  <a=>    /d032/d032/d040/d208    CYRILLIC SMALL LETTER A
  72430.  <b=>    /d032/d032/d040/d209    CYRILLIC SMALL LETTER BE
  72431.  <v=>    /d032/d032/d040/d210    CYRILLIC SMALL LETTER VE
  72432.  <g=>    /d032/d032/d040/d211    CYRILLIC SMALL LETTER GHE
  72433.  <d=>    /d032/d032/d040/d212    CYRILLIC SMALL LETTER DE
  72434.  <e=>    /d032/d032/d040/d213    CYRILLIC SMALL LETTER IE
  72435.  <z%>    /d032/d032/d040/d214    CYRILLIC SMALL LETTER ZHE
  72436.  <z=>    /d032/d032/d040/d215    CYRILLIC SMALL LETTER ZE
  72437.  <i=>    /d032/d032/d040/d216    CYRILLIC SMALL LETTER I
  72438.  <j=>    /d032/d032/d040/d217    CYRILLIC SMALL LETTER SHORT I
  72439.  <k=>    /d032/d032/d040/d218    CYRILLIC SMALL LETTER KA
  72440.  <l=>    /d032/d032/d040/d219    CYRILLIC SMALL LETTER EL
  72441.  <m=>    /d032/d032/d040/d220    CYRILLIC SMALL LETTER EM
  72442.  <n=>    /d032/d032/d040/d221    CYRILLIC SMALL LETTER EN
  72443.  <o=>    /d032/d032/d040/d222    CYRILLIC SMALL LETTER O
  72444.  <p=>    /d032/d032/d040/d223    CYRILLIC SMALL LETTER PE
  72445.  <r=>    /d032/d032/d040/d224    CYRILLIC SMALL LETTER ER
  72446.  <s=>    /d032/d032/d040/d225    CYRILLIC SMALL LETTER ES
  72447.  <t=>    /d032/d032/d040/d226    CYRILLIC SMALL LETTER TE
  72448.  <u=>    /d032/d032/d040/d227    CYRILLIC SMALL LETTER U
  72449.  <f=>    /d032/d032/d040/d228    CYRILLIC SMALL LETTER EF
  72450.  <h=>    /d032/d032/d040/d229    CYRILLIC SMALL LETTER HA
  72451.  <c=>    /d032/d032/d040/d230    CYRILLIC SMALL LETTER TSE
  72452.  
  72453.  
  72454.  
  72455.  
  72456.  
  72457.  
  72458.  
  72459.                Copyright c 1991 IEEE.  All rights reserved.
  72460.       This is an unapproved IEEE Standards Draft, subject to change.
  72461.  
  72462.  
  72463.  
  72464.  
  72465.  
  72466.  1068                                            F Sample National Profile
  72467.  
  72468.  
  72469.  
  72470.  
  72471.  
  72472.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  72473.  
  72474.  <c%>    /d032/d032/d040/d231    CYRILLIC SMALL LETTER CHE
  72475.  <s%>    /d032/d032/d040/d232    CYRILLIC SMALL LETTER SHA
  72476.  <sc>    /d032/d032/d040/d233    CYRILLIC SMALL LETTER SHCHA
  72477.  <='>    /d032/d032/d040/d234    CYRILLIC SMALL HARD SIGN
  72478.  <y=>    /d032/d032/d040/d235    CYRILLIC SMALL LETTER YERU
  72479.  <%'>    /d032/d032/d040/d236    CYRILLIC SMALL SOFT SIGN
  72480.  <je>    /d032/d032/d040/d237    CYRILLIC SMALL LETTER E
  72481.  <ju>    /d032/d032/d040/d238    CYRILLIC SMALL LETTER YU
  72482.  <ja>    /d032/d032/d040/d239    CYRILLIC SMALL LETTER YA
  72483.  <N0>    /d032/d032/d040/d240    NUMERO SIGN
  72484.  <io>    /d032/d032/d040/d241    CYRILLIC SMALL LETTER IO
  72485.  <d%>    /d032/d032/d040/d242    CYRILLIC SMALL LETTER DJE (Serbocroatian)
  72486.  <g%>    /d032/d032/d040/d243    CYRILLIC SMALL LETTER GJE (Macedonian)
  72487.  <ie>    /d032/d032/d040/d244    CYRILLIC SMALL LETTER UKRAINIAN IE
  72488.  <ds>    /d032/d032/d040/d245    CYRILLIC SMALL LETTER DZE (Macedonian)
  72489.  <ii>    /d032/d032/d040/d246    CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
  72490.  <yi>    /d032/d032/d040/d247    CYRILLIC SMALL LETTER YI (Ukrainian)
  72491.  <j%>    /d032/d032/d040/d248    CYRILLIC SMALL LETTER JE
  72492.  <lj>    /d032/d032/d040/d249    CYRILLIC SMALL LETTER LJE
  72493.  <nj>    /d032/d032/d040/d250    CYRILLIC SMALL LETTER NJE
  72494.  <ts>    /d032/d032/d040/d251    CYRILLIC SMALL LETTER TSHE (Serbocroatian)
  72495.  <kj>    /d032/d032/d040/d252    CYRILLIC SMALL LETTER KJE (Macedonian)
  72496.  <v%>    /d032/d032/d040/d254    CYRILLIC SMALL LETTER SHORT U (Byelorussian)
  72497.  <dz>    /d032/d032/d040/d255    CYRILLIC SMALL LETTER DZHE
  72498.  <i3>    /d032/d032/d042/d160    GREEK IOTA BELOW
  72499.  <;;>    /d032/d032/d042/d161    GREEK DAISA PNEUMATA (rough)
  72500.  <,,>    /d032/d032/d042/d162    GREEK PSILI PNEUMATA (smooth)
  72501.  <!*>    /d032/d032/d042/d164    GREEK VARIA
  72502.  <?*>    /d032/d032/d042/d165    GREEK PERISPOMENI
  72503.  <;'>    /d032/d032/d042/d166    GREEK DAISA AND ACUTE ACCENT
  72504.  <,'>    /d032/d032/d042/d167    GREEK PSILI AND ACUTE ACCENT
  72505.  <;!>    /d032/d032/d042/d168    GREEK DAISA AND VARIA
  72506.  <,!>    /d032/d032/d042/d169    GREEK PSILI AND VARIA
  72507.  <?;>    /d032/d032/d042/d170    GREEK PERISPOMENI AND DAISA
  72508.  <?,>    /d032/d032/d042/d171    GREEK PERISPOMENI AND PSILI
  72509.  <!:>    /d032/d032/d042/d174    GREEK VARIA AND DIAERESIS
  72510.  <?:>    /d032/d032/d042/d175    GREEK PERISPOMENI AND DIAERESIS
  72511.  <I3>    /d032/d032/d042/d176    GREEK CAPITAL LETTER IOTA WITH PERISPOMENI
  72512.  #                               AND PSILI
  72513.  <'%>    /d032/d032/d042/d181    ACUTE ACCENT AND DIAERESIS (Tonos and Dialytica)
  72514.  <A%>    /d032/d032/d042/d182    GREEK CAPITAL LETTER ALPHA WITH ACUTE
  72515.  <E%>    /d032/d032/d042/d184    GREEK CAPITAL LETTER EPSILON WITH ACUTE
  72516.  <Y%>    /d032/d032/d042/d185    GREEK CAPITAL LETTER ETA WITH ACUTE
  72517.  <I%>    /d032/d032/d042/d186    GREEK CAPITAL LETTER IOTA WITH ACUTE
  72518.  
  72519.  
  72520.  
  72521.  
  72522.  
  72523.  
  72524.  
  72525.                Copyright c 1991 IEEE.  All rights reserved.
  72526.       This is an unapproved IEEE Standards Draft, subject to change.
  72527.  
  72528.  
  72529.  
  72530.  
  72531.  
  72532.  F.5 (Example) Danish Charmap Files                                   1069
  72533.  
  72534.  
  72535.  
  72536.  
  72537.  
  72538.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  72539.  
  72540.  <O%>    /d032/d032/d042/d188    GREEK CAPITAL LETTER OMICRON WITH ACUTE
  72541.  <U%>    /d032/d032/d042/d190    GREEK CAPITAL LETTER UPSILON WITH ACUTE
  72542.  <W%>    /d032/d032/d042/d191    GREEK CAPITAL LETTER OMEGA WITH ACUTE
  72543.  <A*>    /d032/d032/d042/d193    GREEK CAPITAL LETTER ALPHA
  72544.  <B*>    /d032/d032/d042/d194    GREEK CAPITAL LETTER BETA
  72545.  <G*>    /d032/d032/d042/d195    GREEK CAPITAL LETTER GAMMA
  72546.  <D*>    /d032/d032/d042/d196    GREEK CAPITAL LETTER DELTA
  72547.  <E*>    /d032/d032/d042/d197    GREEK CAPITAL LETTER EPSILON
  72548.  <Z*>    /d032/d032/d042/d198    GREEK CAPITAL LETTER ZETA
  72549.  <Y*>    /d032/d032/d042/d199    GREEK CAPITAL LETTER ETA
  72550.  <H*>    /d032/d032/d042/d200    GREEK CAPITAL LETTER THETA
  72551.  <I*>    /d032/d032/d042/d201    GREEK CAPITAL LETTER IOTA
  72552.  <K*>    /d032/d032/d042/d202    GREEK CAPITAL LETTER KAPPA
  72553.  <L*>    /d032/d032/d042/d203    GREEK CAPITAL LETTER LAMDA
  72554.  <M*>    /d032/d032/d042/d204    GREEK CAPITAL LETTER MU
  72555.  <N*>    /d032/d032/d042/d205    GREEK CAPITAL LETTER NU
  72556.  <C*>    /d032/d032/d042/d206    GREEK CAPITAL LETTER XI
  72557.  <O*>    /d032/d032/d042/d207    GREEK CAPITAL LETTER OMICRON
  72558.  <P*>    /d032/d032/d042/d208    GREEK CAPITAL LETTER PI
  72559.  <R*>    /d032/d032/d042/d209    GREEK CAPITAL LETTER RHO
  72560.  <S*>    /d032/d032/d042/d211    GREEK CAPITAL LETTER SIGMA
  72561.  <T*>    /d032/d032/d042/d212    GREEK CAPITAL LETTER TAU
  72562.  <U*>    /d032/d032/d042/d213    GREEK CAPITAL LETTER UPSILON
  72563.  <F*>    /d032/d032/d042/d214    GREEK CAPITAL LETTER PHI
  72564.  <X*>    /d032/d032/d042/d215    GREEK CAPITAL LETTER CHI
  72565.  <Q*>    /d032/d032/d042/d216    GREEK CAPITAL LETTER PSI
  72566.  <W*>    /d032/d032/d042/d217    GREEK CAPITAL LETTER OMEGA
  72567.  <J*>    /d032/d032/d042/d218    GREEK CAPITAL LETTER IOTA WITH DIAERESIS
  72568.  <V*>    /d032/d032/d042/d219    GREEK CAPITAL LETTER UPSILON WITH DIAERESIS
  72569.  <a%>    /d032/d032/d042/d220    GREEK SMALL LETTER ALPHA WITH ACUTE
  72570.  <e%>    /d032/d032/d042/d221    GREEK SMALL LETTER EPSILON WITH ACUTE
  72571.  <y%>    /d032/d032/d042/d222    GREEK SMALL LETTER ETA WITH ACUTE
  72572.  <i%>    /d032/d032/d042/d223    GREEK SMALL LETTER IOTA WITH ACUTE
  72573.  <a*>    /d032/d032/d042/d225    GREEK SMALL LETTER ALPHA
  72574.  <b*>    /d032/d032/d042/d226    GREEK SMALL LETTER BETA
  72575.  <g*>    /d032/d032/d042/d227    GREEK SMALL LETTER GAMMA
  72576.  <d*>    /d032/d032/d042/d228    GREEK SMALL LETTER DELTA
  72577.  <e*>    /d032/d032/d042/d229    GREEK SMALL LETTER EPSILON
  72578.  <z*>    /d032/d032/d042/d230    GREEK SMALL LETTER ZETA
  72579.  <y*>    /d032/d032/d042/d231    GREEK SMALL LETTER ETA
  72580.  <h*>    /d032/d032/d042/d232    GREEK SMALL LETTER THETA
  72581.  <i*>    /d032/d032/d042/d233    GREEK SMALL LETTER IOTA
  72582.  <k*>    /d032/d032/d042/d234    GREEK SMALL LETTER KAPPA
  72583.  <l*>    /d032/d032/d042/d235    GREEK SMALL LETTER LAMDA
  72584.  
  72585.  
  72586.  
  72587.  
  72588.  
  72589.  
  72590.  
  72591.                Copyright c 1991 IEEE.  All rights reserved.
  72592.       This is an unapproved IEEE Standards Draft, subject to change.
  72593.  
  72594.  
  72595.  
  72596.  
  72597.  
  72598.  1070                                            F Sample National Profile
  72599.  
  72600.  
  72601.  
  72602.  
  72603.  
  72604.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  72605.  
  72606.  <m*>    /d032/d032/d042/d236    GREEK SMALL LETTER MU
  72607.  <n*>    /d032/d032/d042/d237    GREEK SMALL LETTER NU
  72608.  <c*>    /d032/d032/d042/d238    GREEK SMALL LETTER XI
  72609.  <o*>    /d032/d032/d042/d239    GREEK SMALL LETTER OMICRON
  72610.  <p*>    /d032/d032/d042/d240    GREEK SMALL LETTER PI
  72611.  <r*>    /d032/d032/d042/d241    GREEK SMALL LETTER RHO
  72612.  <*s>    /d032/d032/d042/d242    GREEK SMALL LETTER FINAL SIGMA
  72613.  <s*>    /d032/d032/d042/d243    GREEK SMALL LETTER SIGMA
  72614.  <t*>    /d032/d032/d042/d244    GREEK SMALL LETTER TAU
  72615.  <u*>    /d032/d032/d042/d245    GREEK SMALL LETTER UPSILON
  72616.  <f*>    /d032/d032/d042/d246    GREEK SMALL LETTER PHI
  72617.  <x*>    /d032/d032/d042/d247    GREEK SMALL LETTER CHI
  72618.  <q*>    /d032/d032/d042/d248    GREEK SMALL LETTER PSI
  72619.  <w*>    /d032/d032/d042/d249    GREEK SMALL LETTER OMEGA
  72620.  <j*>    /d032/d032/d042/d250    GREEK SMALL LETTER IOTA WITH DIAERESIS
  72621.  <v*>    /d032/d032/d042/d251    GREEK SMALL LETTER UPSILON WITH DIAERESIS
  72622.  <o%>    /d032/d032/d042/d252    GREEK SMALL LETTER OMICRON WITH ACUTE
  72623.  <u%>    /d032/d032/d042/d253    GREEK SMALL LETTER UPSILON WITH ACUTE
  72624.  <w%>    /d032/d032/d042/d254    GREEK SMALL LETTER OMEGA WITH ACUTE
  72625.  <p+>    /d032/d032/d044/d035    ARABIC LETTER PEH
  72626.  <v+>    /d032/d032/d044/d040    ARABIC LETTER VEH
  72627.  <gf>    /d032/d032/d044/d052    ARABIC LETTER GAF
  72628.  <,+>    /d032/d032/d044/d172    ARABIC COMMA
  72629.  <;+>    /d032/d032/d044/d187    ARABIC SEMICOLON
  72630.  <?+>    /d032/d032/d044/d191    ARABIC QUESTION MARK
  72631.  <H'>    /d032/d032/d044/d193    ARABIC LETTER HAMZA
  72632.  <aM>    /d032/d032/d044/d194    ARABIC LETTER ALEF WITH MADDA ABOVE
  72633.  <aH>    /d032/d032/d044/d195    ARABIC LETTER ALEF WITH HAMZA ABOVE
  72634.  <wH>    /d032/d032/d044/d196    ARABIC LETTER WAW WITH HAMZA ABOVE
  72635.  <ah>    /d032/d032/d044/d197    ARABIC LETTER ALEF WITH HAMZA BELOW
  72636.  <yH>    /d032/d032/d044/d198    ARABIC LETTER YEH WITH HAMZA ABOVE
  72637.  <a+>    /d032/d032/d044/d199    ARABIC LETTER ALEF
  72638.  <b+>    /d032/d032/d044/d200    ARABIC LETTER BEH
  72639.  <tm>    /d032/d032/d044/d201    ARABIC LETTER TEH MARBUTA
  72640.  <t+>    /d032/d032/d044/d202    ARABIC LETTER TEH
  72641.  <tk>    /d032/d032/d044/d203    ARABIC LETTER THEH
  72642.  <g+>    /d032/d032/d044/d204    ARABIC LETTER JEEM
  72643.  <hk>    /d032/d032/d044/d205    ARABIC LETTER HAH
  72644.  <x+>    /d032/d032/d044/d206    ARABIC LETTER KHAH
  72645.  <d+>    /d032/d032/d044/d207    ARABIC LETTER DAL
  72646.  <dk>    /d032/d032/d044/d208    ARABIC LETTER THAL
  72647.  <r+>    /d032/d032/d044/d209    ARABIC LETTER RA
  72648.  <z+>    /d032/d032/d044/d210    ARABIC LETTER ZAIN
  72649.  <s+>    /d032/d032/d044/d211    ARABIC LETTER SEEN
  72650.  
  72651.  
  72652.  
  72653.  
  72654.  
  72655.  
  72656.  
  72657.                Copyright c 1991 IEEE.  All rights reserved.
  72658.       This is an unapproved IEEE Standards Draft, subject to change.
  72659.  
  72660.  
  72661.  
  72662.  
  72663.  
  72664.  F.5 (Example) Danish Charmap Files                                   1071
  72665.  
  72666.  
  72667.  
  72668.  
  72669.  
  72670.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  72671.  
  72672.  <sn>    /d032/d032/d044/d212    ARABIC LETTER SHEEN
  72673.  <c+>    /d032/d032/d044/d213    ARABIC LETTER SAD
  72674.  <dd>    /d032/d032/d044/d214    ARABIC LETTER DAD
  72675.  <tj>    /d032/d032/d044/d215    ARABIC LETTER TAH
  72676.  <zH>    /d032/d032/d044/d216    ARABIC LETTER ZAH
  72677.  <e+>    /d032/d032/d044/d217    ARABIC LETTER AIN
  72678.  <i+>    /d032/d032/d044/d218    ARABIC LETTER GHAIN
  72679.  <++>    /d032/d032/d044/d224    ARABIC TATWEEL
  72680.  <f+>    /d032/d032/d044/d225    ARABIC LETTER FEH
  72681.  <q+>    /d032/d032/d044/d226    ARABIC LETTER QAF
  72682.  <k+>    /d032/d032/d044/d227    ARABIC LETTER KAF
  72683.  <l+>    /d032/d032/d044/d228    ARABIC LETTER LAM
  72684.  <m+>    /d032/d032/d044/d229    ARABIC LETTER MEEM
  72685.  <n+>    /d032/d032/d044/d230    ARABIC LETTER NOON
  72686.  <h+>    /d032/d032/d044/d231    ARABIC LETTER HEH
  72687.  <w+>    /d032/d032/d044/d232    ARABIC LETTER WAW
  72688.  <j+>    /d032/d032/d044/d233    ARABIC LETTER ALEF MAKSURA
  72689.  <y+>    /d032/d032/d044/d234    ARABIC LETTER YEH
  72690.  <:+>    /d032/d032/d044/d235    ARABIC FATHATAN
  72691.  <"+>    /d032/d032/d044/d236    ARABIC DAMMATAN
  72692.  <=+>    /d032/d032/d044/d237    ARABIC KASRATAN
  72693.  <//+>   /d032/d032/d044/d238    ARABIC FATHA
  72694.  <'+>    /d032/d032/d044/d239    ARABIC DAMMA
  72695.  <1+>    /d032/d032/d044/d240    ARABIC KASRA
  72696.  <3+>    /d032/d032/d044/d241    ARABIC SHADDA
  72697.  <0+>    /d032/d032/d044/d242    ARABIC SUKUN
  72698.  <A+>    /d032/d032/d045/d224    HEBREW LETTER ALEF
  72699.  <B+>    /d032/d032/d045/d225    HEBREW LETTER BET
  72700.  <G+>    /d032/d032/d045/d226    HEBREW LETTER GIMEL
  72701.  <D+>    /d032/d032/d045/d227    HEBREW LETTER DALET
  72702.  <H+>    /d032/d032/d045/d228    HEBREW LETTER HE
  72703.  <W+>    /d032/d032/d045/d229    HEBREW LETTER VAV
  72704.  <Z+>    /d032/d032/d045/d230    HEBREW LETTER ZAYIN
  72705.  <X+>    /d032/d032/d045/d231    HEBREW LETTER HET
  72706.  <Tj>    /d032/d032/d045/d232    HEBREW LETTER TET
  72707.  <J+>    /d032/d032/d045/d233    HEBREW LETTER YOD
  72708.  <K%>    /d032/d032/d045/d234    HEBREW LETTER FINAL KAF
  72709.  <K+>    /d032/d032/d045/d235    HEBREW LETTER KAF
  72710.  <L+>    /d032/d032/d045/d236    HEBREW LETTER LAMED
  72711.  <M%>    /d032/d032/d045/d237    HEBREW LETTER FINAL MEM
  72712.  <M+>    /d032/d032/d045/d238    HEBREW LETTER MEM
  72713.  <N%>    /d032/d032/d045/d239    HEBREW LETTER FINAL NUN
  72714.  <N+>    /d032/d032/d045/d240    HEBREW LETTER NUN
  72715.  <S+>    /d032/d032/d045/d241    HEBREW LETTER SAMEKH
  72716.  
  72717.  
  72718.  
  72719.  
  72720.  
  72721.  
  72722.  
  72723.                Copyright c 1991 IEEE.  All rights reserved.
  72724.       This is an unapproved IEEE Standards Draft, subject to change.
  72725.  
  72726.  
  72727.  
  72728.  
  72729.  
  72730.  1072                                            F Sample National Profile
  72731.  
  72732.  
  72733.  
  72734.  
  72735.  
  72736.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  72737.  
  72738.  <E+>    /d032/d032/d045/d242    HEBREW LETTER AYIN
  72739.  <P%>    /d032/d032/d045/d243    HEBREW LETTER FINAL PE
  72740.  <P+>    /d032/d032/d045/d244    HEBREW LETTER PE
  72741.  <Zj>    /d032/d032/d045/d245    HEBREW LETTER FINAL TSADI
  72742.  <ZJ>    /d032/d032/d045/d246    HEBREW LETTER TSADI
  72743.  <Q+>    /d032/d032/d045/d247    HEBREW LETTER QOF
  72744.  <R+>    /d032/d032/d045/d248    HEBREW LETTER RESH
  72745.  <Sh>    /d032/d032/d045/d249    HEBREW LETTER SIN
  72746.  <T+>    /d032/d032/d045/d250    HEBREW LETTER TAV
  72747.  <IS>    /d032/d032/d046/d032    IDEOGRAPHIC SPACE
  72748.  <,_>    /d032/d032/d046/d033    IDEOGRAPHIC COMMA
  72749.  <._>    /d032/d032/d046/d034    IDEOGRAPHIC FULL STOP
  72750.  <+">    /d032/d032/d046/d035    DITTO MARK
  72751.  <+_>    /d032/d032/d046/d036    IDEOGRAPHIC DITTO MARK
  72752.  <*_>    /d032/d032/d046/d037    IDEOGRAPHIC REPETITION MARK
  72753.  <;_>    /d032/d032/d046/d038    IDEOGRAPHIC CLOSING MARK
  72754.  <0_>    /d032/d032/d046/d039    IDEOGRAPHIC NUMBER ZERO
  72755.  <<+>    /d032/d032/d046/d042    LEFT-POINTING DOUBLE ANGLE BRACKET
  72756.  </>+>   /d032/d032/d046/d043    RIGHT-POINTING DOUBLE ANGLE BRACKET
  72757.  <<'>    /d032/d032/d046/d044    IDEOGRAPHIC LEFT BRACKET
  72758.  </>'>   /d032/d032/d046/d045    IDEOGRAPHIC RIGHT BRACKET
  72759.  <<">    /d032/d032/d046/d046    IDEOGRAPHIC LEFT DOUBLE BRACKET
  72760.  </>">   /d032/d032/d046/d047    IDEOGRAPHIC RIGHT DOUBLE BRACKET
  72761.  <(">    /d032/d032/d046/d048    LEFT BOLDFACE SQUARE BRACKET
  72762.  <)">    /d032/d032/d046/d049    RIGHT BOLDFACE SQUARE BRACKET
  72763.  <=//>   /d032/d032/d046/d050    POSTAL MARK
  72764.  <=_>    /d032/d032/d046/d051    GETA MARK
  72765.  <('>    /d032/d032/d046/d052    LEFT TORTOISE-SHELL BRACKET
  72766.  <)'>    /d032/d032/d046/d053    RIGHT TORTOISE-SHELL BRACKET
  72767.  <KM>    /d032/d032/d046/d054    KOME MARK
  72768.  <b4>    /d032/d032/d046/d069    BOPOMOFO LETTER B
  72769.  <p4>    /d032/d032/d046/d070    BOPOMOFO LETTER P
  72770.  <m4>    /d032/d032/d046/d071    BOPOMOFO LETTER M
  72771.  <f4>    /d032/d032/d046/d072    BOPOMOFO LETTER F
  72772.  <d4>    /d032/d032/d046/d073    BOPOMOFO LETTER D
  72773.  <t4>    /d032/d032/d046/d074    BOPOMOFO LETTER T
  72774.  <n4>    /d032/d032/d046/d075    BOPOMOFO LETTER N
  72775.  <l4>    /d032/d032/d046/d076    BOPOMOFO LETTER L
  72776.  <g4>    /d032/d032/d046/d077    BOPOMOFO LETTER G
  72777.  <k4>    /d032/d032/d046/d078    BOPOMOFO LETTER K
  72778.  <h4>    /d032/d032/d046/d079    BOPOMOFO LETTER H
  72779.  <j4>    /d032/d032/d046/d080    BOPOMOFO LETTER J
  72780.  <q4>    /d032/d032/d046/d081    BOPOMOFO LETTER Q
  72781.  <x4>    /d032/d032/d046/d082    BOPOMOFO LETTER X
  72782.  
  72783.  
  72784.  
  72785.  
  72786.  
  72787.  
  72788.  
  72789.                Copyright c 1991 IEEE.  All rights reserved.
  72790.       This is an unapproved IEEE Standards Draft, subject to change.
  72791.  
  72792.  
  72793.  
  72794.  
  72795.  
  72796.  F.5 (Example) Danish Charmap Files                                   1073
  72797.  
  72798.  
  72799.  
  72800.  
  72801.  
  72802.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  72803.  
  72804.  <zh>    /d032/d032/d046/d083    BOPOMOFO LETTER ZH
  72805.  <ch>    /d032/d032/d046/d084    BOPOMOFO LETTER CH
  72806.  <sh>    /d032/d032/d046/d085    BOPOMOFO LETTER SH
  72807.  <r4>    /d032/d032/d046/d086    BOPOMOFO LETTER R
  72808.  <z4>    /d032/d032/d046/d087    BOPOMOFO LETTER Z
  72809.  <c4>    /d032/d032/d046/d088    BOPOMOFO LETTER C
  72810.  <s4>    /d032/d032/d046/d089    BOPOMOFO LETTER S
  72811.  <a4>    /d032/d032/d046/d090    BOPOMOFO LETTER A
  72812.  <o4>    /d032/d032/d046/d091    BOPOMOFO LETTER O
  72813.  <e4>    /d032/d032/d046/d092    BOPOMOFO LETTER E
  72814.  <eh>    /d032/d032/d046/d093    BOPOMOFO LETTER EH
  72815.  <ai>    /d032/d032/d046/d094    BOPOMOFO LETTER AI
  72816.  <ei>    /d032/d032/d046/d095    BOPOMOFO LETTER EI
  72817.  <au>    /d032/d032/d046/d096    BOPOMOFO LETTER AU
  72818.  <ou>    /d032/d032/d046/d097    BOPOMOFO LETTER OU
  72819.  <an>    /d032/d032/d046/d098    BOPOMOFO LETTER AN
  72820.  <en>    /d032/d032/d046/d099    BOPOMOFO LETTER EN
  72821.  <aN>    /d032/d032/d046/d100    BOPOMOFO LETTER ANG
  72822.  <eN>    /d032/d032/d046/d101    BOPOMOFO LETTER ENG
  72823.  <er>    /d032/d032/d046/d102    BOPOMOFO LETTER ER
  72824.  <i4>    /d032/d032/d046/d103    BOPOMOFO LETTER I
  72825.  <u4>    /d032/d032/d046/d104    BOPOMOFO LETTER U
  72826.  <iu>    /d032/d032/d046/d105    BOPOMOFO LETTER IU
  72827.  <A5>    /d032/d032/d047/d033    HIRAGANA LETTER SMALL A
  72828.  <a5>    /d032/d032/d047/d034    HIRAGANA LETTER A
  72829.  <I5>    /d032/d032/d047/d035    HIRAGANA LETTER SMALL I
  72830.  <i5>    /d032/d032/d047/d036    HIRAGANA LETTER I
  72831.  <U5>    /d032/d032/d047/d037    HIRAGANA LETTER SMALL U
  72832.  <u5>    /d032/d032/d047/d038    HIRAGANA LETTER U
  72833.  <E5>    /d032/d032/d047/d039    HIRAGANA LETTER SMALL E
  72834.  <e5>    /d032/d032/d047/d040    HIRAGANA LETTER E
  72835.  <O5>    /d032/d032/d047/d041    HIRAGANA LETTER SMALL O
  72836.  <o5>    /d032/d032/d047/d042    HIRAGANA LETTER O
  72837.  <ka>    /d032/d032/d047/d043    HIRAGANA LETTER KA
  72838.  <ga>    /d032/d032/d047/d044    HIRAGANA LETTER GA
  72839.  <ki>    /d032/d032/d047/d045    HIRAGANA LETTER KI
  72840.  <gi>    /d032/d032/d047/d046    HIRAGANA LETTER GI
  72841.  <ku>    /d032/d032/d047/d047    HIRAGANA LETTER KU
  72842.  <gu>    /d032/d032/d047/d048    HIRAGANA LETTER GU
  72843.  <ke>    /d032/d032/d047/d049    HIRAGANA LETTER KE
  72844.  <ge>    /d032/d032/d047/d050    HIRAGANA LETTER GE
  72845.  <ko>    /d032/d032/d047/d051    HIRAGANA LETTER KO
  72846.  <go>    /d032/d032/d047/d052    HIRAGANA LETTER GO
  72847.  <sa>    /d032/d032/d047/d053    HIRAGANA LETTER SA
  72848.  
  72849.  
  72850.  
  72851.  
  72852.  
  72853.  
  72854.  
  72855.                Copyright c 1991 IEEE.  All rights reserved.
  72856.       This is an unapproved IEEE Standards Draft, subject to change.
  72857.  
  72858.  
  72859.  
  72860.  
  72861.  
  72862.  1074                                            F Sample National Profile
  72863.  
  72864.  
  72865.  
  72866.  
  72867.  
  72868.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  72869.  
  72870.  <za>    /d032/d032/d047/d054    HIRAGANA LETTER ZA
  72871.  <si>    /d032/d032/d047/d055    HIRAGANA LETTER SI
  72872.  <zi>    /d032/d032/d047/d056    HIRAGANA LETTER ZI
  72873.  <su>    /d032/d032/d047/d057    HIRAGANA LETTER SU
  72874.  <zu>    /d032/d032/d047/d058    HIRAGANA LETTER ZU
  72875.  <se>    /d032/d032/d047/d059    HIRAGANA LETTER SE
  72876.  <ze>    /d032/d032/d047/d060    HIRAGANA LETTER ZE
  72877.  <so>    /d032/d032/d047/d061    HIRAGANA LETTER SO
  72878.  <zo>    /d032/d032/d047/d062    HIRAGANA LETTER ZO
  72879.  <ta>    /d032/d032/d047/d063    HIRAGANA LETTER TA
  72880.  <da>    /d032/d032/d047/d064    HIRAGANA LETTER DA
  72881.  <ti>    /d032/d032/d047/d065    HIRAGANA LETTER TI
  72882.  <di>    /d032/d032/d047/d066    HIRAGANA LETTER DI
  72883.  <tU>    /d032/d032/d047/d067    HIRAGANA LETTER SMALL TU
  72884.  <tu>    /d032/d032/d047/d068    HIRAGANA LETTER TU
  72885.  <du>    /d032/d032/d047/d069    HIRAGANA LETTER DU
  72886.  <te>    /d032/d032/d047/d070    HIRAGANA LETTER TE
  72887.  <de>    /d032/d032/d047/d071    HIRAGANA LETTER DE
  72888.  <to>    /d032/d032/d047/d072    HIRAGANA LETTER TO
  72889.  <do>    /d032/d032/d047/d073    HIRAGANA LETTER DO
  72890.  <na>    /d032/d032/d047/d074    HIRAGANA LETTER NA
  72891.  <ni>    /d032/d032/d047/d075    HIRAGANA LETTER NI
  72892.  <nu>    /d032/d032/d047/d076    HIRAGANA LETTER NU
  72893.  <ne>    /d032/d032/d047/d077    HIRAGANA LETTER NE
  72894.  <no>    /d032/d032/d047/d078    HIRAGANA LETTER NO
  72895.  <ha>    /d032/d032/d047/d079    HIRAGANA LETTER HA
  72896.  <ba>    /d032/d032/d047/d080    HIRAGANA LETTER BA
  72897.  <pa>    /d032/d032/d047/d081    HIRAGANA LETTER PA
  72898.  <hi>    /d032/d032/d047/d082    HIRAGANA LETTER HI
  72899.  <bi>    /d032/d032/d047/d083    HIRAGANA LETTER BI
  72900.  <pi>    /d032/d032/d047/d084    HIRAGANA LETTER PI
  72901.  <hu>    /d032/d032/d047/d085    HIRAGANA LETTER HU
  72902.  <bu>    /d032/d032/d047/d086    HIRAGANA LETTER BU
  72903.  <pu>    /d032/d032/d047/d087    HIRAGANA LETTER PU
  72904.  <he>    /d032/d032/d047/d088    HIRAGANA LETTER HE
  72905.  <be>    /d032/d032/d047/d089    HIRAGANA LETTER BE
  72906.  <pe>    /d032/d032/d047/d090    HIRAGANA LETTER PE
  72907.  <ho>    /d032/d032/d047/d091    HIRAGANA LETTER HO
  72908.  <bo>    /d032/d032/d047/d092    HIRAGANA LETTER BO
  72909.  <po>    /d032/d032/d047/d093    HIRAGANA LETTER PO
  72910.  <ma>    /d032/d032/d047/d094    HIRAGANA LETTER MA
  72911.  <mi>    /d032/d032/d047/d095    HIRAGANA LETTER MI
  72912.  <mu>    /d032/d032/d047/d096    HIRAGANA LETTER MU
  72913.  <me>    /d032/d032/d047/d097    HIRAGANA LETTER ME
  72914.  
  72915.  
  72916.  
  72917.  
  72918.  
  72919.  
  72920.  
  72921.                Copyright c 1991 IEEE.  All rights reserved.
  72922.       This is an unapproved IEEE Standards Draft, subject to change.
  72923.  
  72924.  
  72925.  
  72926.  
  72927.  
  72928.  F.5 (Example) Danish Charmap Files                                   1075
  72929.  
  72930.  
  72931.  
  72932.  
  72933.  
  72934.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  72935.  
  72936.  <mo>    /d032/d032/d047/d098    HIRAGANA LETTER MO
  72937.  <yA>    /d032/d032/d047/d099    HIRAGANA LETTER SMALL YA
  72938.  <ya>    /d032/d032/d047/d100    HIRAGANA LETTER YA
  72939.  <yU>    /d032/d032/d047/d101    HIRAGANA LETTER SMALL YU
  72940.  <yu>    /d032/d032/d047/d102    HIRAGANA LETTER YU
  72941.  <yO>    /d032/d032/d047/d103    HIRAGANA LETTER SMALL YO
  72942.  <yo>    /d032/d032/d047/d104    HIRAGANA LETTER YO                         1
  72943.  <ra>    /d032/d032/d047/d105    HIRAGANA LETTER RA
  72944.  <ri>    /d032/d032/d047/d106    HIRAGANA LETTER RI
  72945.  <ru>    /d032/d032/d047/d107    HIRAGANA LETTER RU
  72946.  <re>    /d032/d032/d047/d108    HIRAGANA LETTER RE
  72947.  <ro>    /d032/d032/d047/d109    HIRAGANA LETTER RO
  72948.  <wA>    /d032/d032/d047/d110    HIRAGANA LETTER SMALL WA
  72949.  <wa>    /d032/d032/d047/d111    HIRAGANA LETTER WA
  72950.  <wi>    /d032/d032/d047/d112    HIRAGANA LETTER WI
  72951.  <we>    /d032/d032/d047/d113    HIRAGANA LETTER WE
  72952.  <wo>    /d032/d032/d047/d114    HIRAGANA LETTER WO
  72953.  <n5>    /d032/d032/d047/d115    HIRAGANA LETTER N
  72954.  <"5>    /d032/d032/d047/d122    HIRAGANA-KATAKANA VOICED SOUND MARK
  72955.  <05>    /d032/d032/d047/d123    HIRAGANA-KATAKANA SEMI-VOICED SOUND MARK
  72956.  <*5>    /d032/d032/d047/d124    HIRAGANA ITERATION MARK
  72957.  <+5>    /d032/d032/d047/d125    HIRAGANA VOICED ITERATION MARK
  72958.  <a6>    /d032/d032/d047/d161    KATAKANA LETTER SMALL A
  72959.  <A6>    /d032/d032/d047/d162    KATAKANA LETTER A
  72960.  <i6>    /d032/d032/d047/d163    KATAKANA LETTER SMALL I
  72961.  <I6>    /d032/d032/d047/d164    KATAKANA LETTER I
  72962.  <u6>    /d032/d032/d047/d165    KATAKANA LETTER SMALL U
  72963.  <U6>    /d032/d032/d047/d166    KATAKANA LETTER U
  72964.  <e6>    /d032/d032/d047/d167    KATAKANA LETTER SMALL E
  72965.  <E6>    /d032/d032/d047/d168    KATAKANA LETTER E
  72966.  <o6>    /d032/d032/d047/d169    KATAKANA LETTER SMALL O
  72967.  <O6>    /d032/d032/d047/d170    KATAKANA LETTER O
  72968.  <Ka>    /d032/d032/d047/d171    KATAKANA LETTER KA
  72969.  <Ga>    /d032/d032/d047/d172    KATAKANA LETTER GA
  72970.  <Ki>    /d032/d032/d047/d173    KATAKANA LETTER KI
  72971.  <Gi>    /d032/d032/d047/d174    KATAKANA LETTER GI
  72972.  <Ku>    /d032/d032/d047/d175    KATAKANA LETTER KU
  72973.  <Gu>    /d032/d032/d047/d176    KATAKANA LETTER GU
  72974.  <Ke>    /d032/d032/d047/d177    KATAKANA LETTER KE
  72975.  <Ge>    /d032/d032/d047/d178    KATAKANA LETTER GE
  72976.  <Ko>    /d032/d032/d047/d179    KATAKANA LETTER KO
  72977.  <Go>    /d032/d032/d047/d180    KATAKANA LETTER GO
  72978.  <Sa>    /d032/d032/d047/d181    KATAKANA LETTER SA
  72979.  <Za>    /d032/d032/d047/d182    KATAKANA LETTER ZA
  72980.  
  72981.  
  72982.  
  72983.  
  72984.  
  72985.  
  72986.  
  72987.                Copyright c 1991 IEEE.  All rights reserved.
  72988.       This is an unapproved IEEE Standards Draft, subject to change.
  72989.  
  72990.  
  72991.  
  72992.  
  72993.  
  72994.  1076                                            F Sample National Profile
  72995.  
  72996.  
  72997.  
  72998.  
  72999.  
  73000.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  73001.  
  73002.  <Si>    /d032/d032/d047/d183    KATAKANA LETTER SI
  73003.  <Zi>    /d032/d032/d047/d184    KATAKANA LETTER ZI
  73004.  <Su>    /d032/d032/d047/d185    KATAKANA LETTER SU
  73005.  <Zu>    /d032/d032/d047/d186    KATAKANA LETTER ZU
  73006.  <Se>    /d032/d032/d047/d187    KATAKANA LETTER SE
  73007.  <Ze>    /d032/d032/d047/d188    KATAKANA LETTER ZE
  73008.  <So>    /d032/d032/d047/d189    KATAKANA LETTER SO
  73009.  <Zo>    /d032/d032/d047/d190    KATAKANA LETTER ZO
  73010.  <Ta>    /d032/d032/d047/d191    KATAKANA LETTER TA
  73011.  <Da>    /d032/d032/d047/d192    KATAKANA LETTER DA
  73012.  <Ti>    /d032/d032/d047/d193    KATAKANA LETTER TI
  73013.  <Di>    /d032/d032/d047/d194    KATAKANA LETTER DI
  73014.  <TU>    /d032/d032/d047/d195    KATAKANA LETTER SMALL TU
  73015.  <Tu>    /d032/d032/d047/d196    KATAKANA LETTER TU
  73016.  <Du>    /d032/d032/d047/d197    KATAKANA LETTER DU
  73017.  <Te>    /d032/d032/d047/d198    KATAKANA LETTER TE
  73018.  <De>    /d032/d032/d047/d199    KATAKANA LETTER DE
  73019.  <To>    /d032/d032/d047/d200    KATAKANA LETTER TO
  73020.  <Do>    /d032/d032/d047/d201    KATAKANA LETTER DO
  73021.  <Na>    /d032/d032/d047/d202    KATAKANA LETTER NA
  73022.  <Ni>    /d032/d032/d047/d203    KATAKANA LETTER NI
  73023.  <Nu>    /d032/d032/d047/d204    KATAKANA LETTER NU
  73024.  <Ne>    /d032/d032/d047/d205    KATAKANA LETTER NE
  73025.  <No>    /d032/d032/d047/d206    KATAKANA LETTER NO
  73026.  <Ha>    /d032/d032/d047/d207    KATAKANA LETTER HA
  73027.  <Ba>    /d032/d032/d047/d208    KATAKANA LETTER BA
  73028.  <Pa>    /d032/d032/d047/d209    KATAKANA LETTER PA
  73029.  <Hi>    /d032/d032/d047/d210    KATAKANA LETTER HI
  73030.  <Bi>    /d032/d032/d047/d211    KATAKANA LETTER BI                         1
  73031.  <Pi>    /d032/d032/d047/d212    KATAKANA LETTER PI                         1
  73032.  <Hu>    /d032/d032/d047/d213    KATAKANA LETTER HU
  73033.  <Bu>    /d032/d032/d047/d214    KATAKANA LETTER BU
  73034.  <Pu>    /d032/d032/d047/d215    KATAKANA LETTER PU
  73035.  <He>    /d032/d032/d047/d216    KATAKANA LETTER HE
  73036.  <Be>    /d032/d032/d047/d217    KATAKANA LETTER BE
  73037.  <Pe>    /d032/d032/d047/d218    KATAKANA LETTER PE
  73038.  <Ho>    /d032/d032/d047/d219    KATAKANA LETTER HO
  73039.  <Bo>    /d032/d032/d047/d220    KATAKANA LETTER BO
  73040.  <Po>    /d032/d032/d047/d221    KATAKANA LETTER PO
  73041.  <Ma>    /d032/d032/d047/d222    KATAKANA LETTER MA
  73042.  <Mi>    /d032/d032/d047/d223    KATAKANA LETTER MI
  73043.  <Mu>    /d032/d032/d047/d224    KATAKANA LETTER MU
  73044.  <Me>    /d032/d032/d047/d225    KATAKANA LETTER ME
  73045.  <Mo>    /d032/d032/d047/d226    KATAKANA LETTER MO
  73046.  
  73047.  
  73048.  
  73049.  
  73050.  
  73051.  
  73052.  
  73053.                Copyright c 1991 IEEE.  All rights reserved.
  73054.       This is an unapproved IEEE Standards Draft, subject to change.
  73055.  
  73056.  
  73057.  
  73058.  
  73059.  
  73060.  F.5 (Example) Danish Charmap Files                                   1077
  73061.  
  73062.  
  73063.  
  73064.  
  73065.  
  73066.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  73067.  
  73068.  <YA>    /d032/d032/d047/d227    KATAKANA LETTER SMALL YA
  73069.  <Ya>    /d032/d032/d047/d228    KATAKANA LETTER YA
  73070.  <YU>    /d032/d032/d047/d229    KATAKANA LETTER SMALL YU
  73071.  <Yu>    /d032/d032/d047/d230    KATAKANA LETTER YU
  73072.  <YO>    /d032/d032/d047/d231    KATAKANA LETTER SMALL YO
  73073.  <Yo>    /d032/d032/d047/d232    KATAKANA LETTER YO
  73074.  <Ra>    /d032/d032/d047/d233    KATAKANA LETTER RA
  73075.  <Ri>    /d032/d032/d047/d234    KATAKANA LETTER RI
  73076.  <Ru>    /d032/d032/d047/d235    KATAKANA LETTER RU
  73077.  <Re>    /d032/d032/d047/d236    KATAKANA LETTER RE
  73078.  <Ro>    /d032/d032/d047/d237    KATAKANA LETTER RO
  73079.  <WA>    /d032/d032/d047/d238    KATAKANA LETTER SMALL WA
  73080.  <Wa>    /d032/d032/d047/d239    KATAKANA LETTER WA
  73081.  <Wi>    /d032/d032/d047/d240    KATAKANA LETTER WI
  73082.  <We>    /d032/d032/d047/d241    KATAKANA LETTER WE
  73083.  <Wo>    /d032/d032/d047/d242    KATAKANA LETTER WO
  73084.  <N6>    /d032/d032/d047/d243    KATAKANA LETTER N
  73085.  <Vu>    /d032/d032/d047/d244    KATAKANA LETTER VU
  73086.  <KA>    /d032/d032/d047/d245    KATAKANA LETTER SMALL KA
  73087.  <KE>    /d032/d032/d047/d246    KATAKANA LETTER SMALL KE
  73088.  <-6>    /d032/d032/d047/d252    HIRAGANA-KATAKANA PROLONGED SOUND MARK
  73089.  <*6>    /d032/d032/d047/d253    KATAKANA ITERATION MARK
  73090.  <+6>    /d032/d032/d047/d254    KATAKANA VOICED ITERATION MARK
  73091.  <ff>    /d032/d032/d060/d040    LATIN SMALL LIGATURE FF
  73092.  <fi>    /d032/d032/d060/d041    LATIN SMALL LIGATURE FI
  73093.  <fl>    /d032/d032/d060/d042    LATIN SMALL LIGATURE FL
  73094.  <ft>    /d032/d032/d060/d045    LATIN SMALL LIGATURE FT
  73095.  <st>    /d032/d032/d060/d046    LATIN SMALL LIGATURE ST
  73096.  <Iu>    /d032/d032/d060/d048    INTEGRAL SIGN UPPER PART
  73097.  <Il>    /d032/d032/d060/d049    INTEGRAL SIGN LOWER PART
  73098.  <NU>    /d000/d128/d128/d128    NULL (NUL)                                 1
  73099.  <SH>    /d001/d128/d128/d128    START OF HEADING (SOH)                     1
  73100.  <SX>    /d002/d128/d128/d128    START OF TEXT (STX)                        1
  73101.  <EX>    /d003/d128/d128/d128    END OF TEXT (ETX)                          1
  73102.  <ET>    /d004/d128/d128/d128    END OF TRANSMISSION (EOT)                  1
  73103.  <EQ>    /d005/d128/d128/d128    ENQUIRY (ENQ)                              1
  73104.  <AK>    /d006/d128/d128/d128    ACKNOWLEDGE (ACK)                          1
  73105.  <BL>    /d007/d128/d128/d128    BELL (BEL)                                 1
  73106.  <BS>    /d008/d128/d128/d128    BACKSPACE (BS)                             1
  73107.  <HT>    /d009/d128/d128/d128    CHARACTER TABULATION (HT)                  1
  73108.  <LF>    /d010/d128/d128/d128    LINE FEED (LF)                             1
  73109.  <VT>    /d011/d128/d128/d128    LINE TABULATION (VT)                       1
  73110.  <FF>    /d012/d128/d128/d128    FORM FEED (FF)                             1
  73111.  <CR>    /d013/d128/d128/d128    CARRIAGE RETURN (CR)                       1
  73112.  
  73113.  
  73114.  
  73115.  
  73116.  
  73117.  
  73118.  
  73119.                Copyright c 1991 IEEE.  All rights reserved.
  73120.       This is an unapproved IEEE Standards Draft, subject to change.
  73121.  
  73122.  
  73123.  
  73124.  
  73125.  
  73126.  1078                                            F Sample National Profile
  73127.  
  73128.  
  73129.  
  73130.  
  73131.  
  73132.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  73133.  
  73134.  <SO>    /d014/d128/d128/d128    SHIFT OUT (SO)                             1
  73135.  <SI>    /d015/d128/d128/d128    SHIFT IN (SI)                              1
  73136.  <DL>    /d016/d128/d128/d128    DATALINK ESCAPE (DLE)                      1
  73137.  <D1>    /d017/d128/d128/d128    DEVICE CONTROL ONE (DC1)                   1
  73138.  <D2>    /d018/d128/d128/d128    DEVICE CONTROL TWO (DC2)                   1
  73139.  <D3>    /d019/d128/d128/d128    DEVICE CONTROL THREE (DC3)                 1
  73140.  <D4>    /d020/d128/d128/d128    DEVICE CONTROL FOUR (DC4)                  1
  73141.  <NK>    /d021/d128/d128/d128    NEGATIVE ACKNOWLEDGE (NAK)                 1
  73142.  <SY>    /d022/d128/d128/d128    SYNCHRONOUS IDLE (SYN)                     1
  73143.  <EB>    /d023/d128/d128/d128    END OF TRANSMISSION BLOCK (ETB)            1
  73144.  <CN>    /d024/d128/d128/d128    CANCEL (CAN)                               1
  73145.  <EM>    /d025/d128/d128/d128    END OF MEDIUM (EM)                         1
  73146.  <SB>    /d026/d128/d128/d128    SUBSTITUTE (SUB)                           1
  73147.  <EC>    /d027/d128/d128/d128    ESCAPE (ESC)                               1
  73148.  <FS>    /d028/d128/d128/d128    FILE SEPARATOR (IS4)                       1
  73149.  <GS>    /d029/d128/d128/d128    GROUP SEPARATOR (IS3)                      1
  73150.  <RS>    /d030/d128/d128/d128    RECORD SEPARATOR (IS2)                     1
  73151.  <US>    /d031/d128/d128/d128    UNIT SEPARATOR (IS1)                       1
  73152.  <DT>    /d127/d128/d128/d128    DELETE (DEL)                               1
  73153.  <PA>    /d128/d128/d128/d128    PADDING CHARACTER (PAD)                    1
  73154.  <HO>    /d129/d128/d128/d128    HIGH OCTET PRESET (HOP)                    1
  73155.  <BH>    /d130/d128/d128/d128    BREAK PERMITTED HERE (BPH)                 1
  73156.  <NH>    /d131/d128/d128/d128    NO BREAK HERE (NBH)                        1
  73157.  <IN>    /d132/d128/d128/d128    INDEX (IND)                                1
  73158.  <NL>    /d133/d128/d128/d128    NEXT LINE (NEL)                            1
  73159.  <SA>    /d134/d128/d128/d128    START OF SELECTED AREA (SSA)               1
  73160.  <ES>    /d135/d128/d128/d128    END OF SELECTED AREA (ESA)                 1
  73161.  <HS>    /d136/d128/d128/d128    CHARACTER TABULATION SET (HTS)             1
  73162.  <HJ>    /d137/d128/d128/d128    CHARACTER TABULATION WITH JUSTIFICATION (HTJ)1
  73163.  <VS>    /d138/d128/d128/d128    LINE TABULATION SET (VTS)                  1
  73164.  <PD>    /d139/d128/d128/d128    PARTIAL LINE FORWARD (PLD)                 1
  73165.  <PU>    /d140/d128/d128/d128    PARTIAL LINE BACKWARD (PLU)                1
  73166.  <RI>    /d141/d128/d128/d128    REVERSE LINE FEED (RI)                     1
  73167.  <S2>    /d142/d128/d128/d128    SINGLE-SHIFT TWO (SS2)                     1
  73168.  <S3>    /d143/d128/d128/d128    SINGLE-SHIFT THREE (SS3)                   1
  73169.  <DC>    /d144/d128/d128/d128    DEVICE CONTROL STRING (DCS)                1
  73170.  <P1>    /d145/d128/d128/d128    PRIVATE USE ONE (PU1)                      1
  73171.  <P2>    /d146/d128/d128/d128    PRIVATE USE TWO (PU2)                      1
  73172.  <TS>    /d147/d128/d128/d128    SET TRANSMIT STATE (STS)                   1
  73173.  <CC>    /d148/d128/d128/d128    CANCEL CHARACTER (CCH)                     1
  73174.  <MW>    /d149/d128/d128/d128    MESSAGE WAITING (MW)                       1
  73175.  <SG>    /d150/d128/d128/d128    START OF GUARDED AREA (SPA)                1
  73176.  <EG>    /d151/d128/d128/d128    END OF GUARDED AREA (EPA)                  1
  73177.  <SS>    /d152/d128/d128/d128    START OF STRING (SOS)                      1
  73178.  
  73179.  
  73180.  
  73181.  
  73182.  
  73183.  
  73184.  
  73185.                Copyright c 1991 IEEE.  All rights reserved.
  73186.       This is an unapproved IEEE Standards Draft, subject to change.
  73187.  
  73188.  
  73189.  
  73190.  
  73191.  
  73192.  F.5 (Example) Danish Charmap Files                                   1079
  73193.  
  73194.  
  73195.  
  73196.  
  73197.  
  73198.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  73199.  
  73200.  <GC>    /d153/d128/d128/d128    SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 1
  73201.  <SC>    /d154/d128/d128/d128    SINGLE CHARACTER INTRODUCER (SCI)          1
  73202.  <CI>    /d155/d128/d128/d128    CONTROL SEQUENCE INTRODUCER (CSI)          1
  73203.  <ST>    /d156/d128/d128/d128    STRING TERMINATOR (ST)                     1
  73204.  <OC>    /d157/d128/d128/d128    OPERATING SYSTEM COMMAND (OSC)             1
  73205.  <PM>    /d158/d128/d128/d128    PRIVACY MESSAGE (PM)                       1
  73206.  <AC>    /d159/d128/d128/d128    APPLICATION PROGRAM COMMAND (APC)          1
  73207.  <__>    /d032/d032/d052/d032    indicates unfinished
  73208.  <"!>    /d032/d032/d052/d033    NON-SPACING GRAVE ACCENT (ISO IR 70 193)
  73209.  <"'>    /d032/d032/d052/d034    NON-SPACING ACUTE ACCENT (ISO IR 70 194)
  73210.  <"/>>   /d032/d032/d052/d035    NON-SPACING CIRCUMFLEX ACCENT (ISO IR 70 195)
  73211.  <"?>    /d032/d032/d052/d036    NON-SPACING TILDE (ISO IR 70 196)
  73212.  <"->    /d032/d032/d052/d037    NON-SPACING MACRON (ISO IR 70 197)
  73213.  <"(>    /d032/d032/d052/d038    NON-SPACING BREVE (ISO IR 70 198)
  73214.  <".>    /d032/d032/d052/d039    NON-SPACING DOT ABOVE (ISO IR 70 199)
  73215.  <":>    /d032/d032/d052/d040    NON-SPACING DIAERESIS (ISO IR 70 200)
  73216.  <"//>   /d032/d032/d052/d041    NON-SPACING SOLIDUS (ISO IR 99 201)
  73217.  <"0>    /d032/d032/d052/d042    NON-SPACING RING ABOVE (ISO IR 70 202)
  73218.  <",>    /d032/d032/d052/d043    NON-SPACING CEDILLA (ISO IR 70 203)
  73219.  <"_>    /d032/d032/d052/d044    NON-SPACING UNDERLINE (ISO IR 99 216)
  73220.  <"">    /d032/d032/d052/d045    NON-SPACING DOUBLE ACCUTE ACCENT (ISO IR 70 205)
  73221.  <"<>    /d032/d032/d052/d046    NON-SPACING CARON (ISO IR 70 207)
  73222.  <";>    /d032/d032/d052/d047    NON-SPACING OGONEK (ISO IR 53 208)
  73223.  <"=>    /d032/d032/d052/d048    NON-SPACING DOUBLE UNDERLINE (ISO IR 53 217)
  73224.  <"1>    /d032/d032/d052/d049    NON-SPACING DIAERESIS WITH ACCENT
  73225.  #                               (ISO IR 70 192)
  73226.  <"2>    /d032/d032/d052/d050    NON-SPACING UMLAUT (ISO 5426 201)
  73227.  <Fd>    /d032/d032/d052/d051    FILLED FORWARD DIAGONAL
  73228.  #                               (ANSI X3.110-1983 218)
  73229.  <Bd>    /d032/d032/d052/d052    FILLED BACKWARD DIAGONAL
  73230.  #                               (ANSI X3.110-1983 219)
  73231.  <Fl>    /d032/d032/d052/d053    Dutch guilder sign (IBM CP 437 159)
  73232.  <Li>    /d032/d032/d052/d054    Italian Lira sign (HP ROMAN 8 175)
  73233.  <//f>   /d032/d032/d052/d055    VULGAR FRACTION BAR (MacIntosh 218)
  73234.  <0s>    /d032/d032/d052/d056    SUBSCRIPT ZERO (ISO IR 50 096)
  73235.  <1s>    /d032/d032/d052/d057    SUBSCRIPT ONE (ISO IR 50 097)
  73236.  <2s>    /d032/d032/d052/d058    SUBSCRIPT TWO (ISO IR 50 098)
  73237.  <3s>    /d032/d032/d052/d059    SUBSCRIPT THREE (ISO IR 50 099)
  73238.  <4s>    /d032/d032/d052/d060    SUBSCRIPT FOUR (ISO IR 50 100)
  73239.  <5s>    /d032/d032/d052/d061    SUBSCRIPT FIVE (ISO IR 50 101)
  73240.  <6s>    /d032/d032/d052/d062    SUBSCRIPT SIX (ISO IR 50 102)
  73241.  <7s>    /d032/d032/d052/d063    SUBSCRIPT SEVEN (ISO IR 50 103)
  73242.  <8s>    /d032/d032/d052/d064    SUBSCRIPT EIGHT (ISO IR 50 104)
  73243.  <9s>    /d032/d032/d052/d065    SUBSCRIPT NINE (ISO IR 50 105)
  73244.  
  73245.  
  73246.  
  73247.  
  73248.  
  73249.  
  73250.  
  73251.                Copyright c 1991 IEEE.  All rights reserved.
  73252.       This is an unapproved IEEE Standards Draft, subject to change.
  73253.  
  73254.  
  73255.  
  73256.  
  73257.  
  73258.  1080                                            F Sample National Profile
  73259.  
  73260.  
  73261.  
  73262.  
  73263.  
  73264.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  73265.  
  73266.  <0S>    /d032/d032/d052/d066    SUPERSCRIPT ZERO (ISO IR 50 112)
  73267.  <4S>    /d032/d032/d052/d067    SUPERSCRIPT FOUR (ISO IR 50 116)
  73268.  <5S>    /d032/d032/d052/d068    SUPERSCRIPT FIVE (ISO IR 50 117)
  73269.  <6S>    /d032/d032/d052/d069    SUPERSCRIPT SIX (ISO IR 50 118)
  73270.  <7S>    /d032/d032/d052/d070    SUPERSCRIPT SEVEN (ISO IR 50 119)
  73271.  <8S>    /d032/d032/d052/d071    SUPERSCRIPT EIGHT (ISO IR 50 120)
  73272.  <9S>    /d032/d032/d052/d072    SUPERSCRIPT NINE (ISO IR 50 121)
  73273.  <+S>    /d032/d032/d052/d073    SUPERSCRIPT PLUS (ISO IR 50 106)
  73274.  <-S>    /d032/d032/d052/d074    SUPERSCRIPT MINUS (ISO IR 50 107)
  73275.  <1h>    /d032/d032/d052/d075    ABSTRACT SYMBOL H ONE (HOOK)
  73276.  #                               (JIS C 6229-1984 060)
  73277.  <2h>    /d032/d032/d052/d076    ABSTRACT SYMBOL H TWO (FORK)
  73278.  #                               (JIS C 6229-1984 093)
  73279.  <3h>    /d032/d032/d052/d077    ABSTRACT SYMBOL H THREE (CHAIR)
  73280.  #                               (JIS C 6229-1984 062)
  73281.  <4h>    /d032/d032/d052/d078    ABSTRACT SYMBOL H FOUR (LONG VERTICAL MARK)
  73282.  #                               (JIS C 6229-1984 125)
  73283.  <1j>    /d032/d032/d052/d079    SYMBOL ONE (ISO 2033-1983 058)
  73284.  <2j>    /d032/d032/d052/d080    SYMBOL TWO (ISO 2033-1983 059)
  73285.  <3j>    /d032/d032/d052/d081    SYMBOL THREE (ISO 2033-1983 060)
  73286.  <4j>    /d032/d032/d052/d082    SYMBOL FOUR (ISO 2033-1983 061)
  73287.  <UA>    /d032/d032/d052/d083    Unit space A (ISO IR 8-1 064)
  73288.  <UB>    /d032/d032/d052/d084    Unit space B (ISO IR 8-1 096)
  73289.  <yf>    /d032/d032/d052/d085    ARABIC LETTER YEH FINAL (CODAR U 090)
  73290.  <yr>    /d032/d032/d052/d086    OLD NORSE YR (DIN 31624 251)
  73291.  <.6>    /d032/d032/d052/d087    KATAKANA FULL STOP (JIS C 6220 033)
  73292.  <<6>    /d032/d032/d052/d088    KATAKANA OPENING BRACKET (JIS C 6220 034)
  73293.  </>6>   /d032/d032/d052/d089    KATAKANA CLOSING BRACKET (JIS C 6220 035)
  73294.  <,6>    /d032/d032/d052/d090    KATAKANA COMMA (JIS C 6220 036)
  73295.  <&6>    /d032/d032/d052/d091    KATAKANA CONJUNCTION SYMBOL (JIS C 6220 037)
  73296.  <(S>    /d032/d032/d052/d092    LEFT PARENTHESIS SUPERSCRIPT
  73297.  #                               (CSA Z243.4-1985-gr 168)
  73298.  <)S>    /d032/d032/d052/d093    RIGHT PARENTHESIS SUPERSCRIPT
  73299.  #                               (CSA Z243.4-1985-gr 169)
  73300.  END CHARMAP
  73301.  
  73302.  
  73303.  F.5.2  ISO_8859-1 Charmap
  73304.  
  73305.  <escape_char> /
  73306.  <mb_cur_max> 1
  73307.  CHARMAP
  73308.  <NUL>                   /d000 NULL (NUL)                                   1
  73309.  <SOH>                   /d001 START OF HEADING (SOH)
  73310.  
  73311.  
  73312.  
  73313.  
  73314.  
  73315.  
  73316.  
  73317.                Copyright c 1991 IEEE.  All rights reserved.
  73318.       This is an unapproved IEEE Standards Draft, subject to change.
  73319.  
  73320.  
  73321.  
  73322.  
  73323.  
  73324.  F.5 (Example) Danish Charmap Files                                   1081
  73325.  
  73326.  
  73327.  
  73328.  
  73329.  
  73330.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  73331.  
  73332.  <STX>                   /d002 START OF TEXT (STX)
  73333.  <ETX>                   /d003 END OF TEXT (ETX)
  73334.  <EOT>                   /d004 END OF TRANSMISSION (EOT)
  73335.  <ENQ>                   /d005 ENQUIRY (ENQ)
  73336.  <ACK>                   /d006 ACKNOWLEDGE (ACK)
  73337.  <alert>                 /d007 BELL (BEL)
  73338.  <BEL>                   /d007 BELL (BEL)
  73339.  <backspace>             /d008 BACKSPACE (BS)
  73340.  <tab>                   /d009 CHARACTER TABULATION (HT)
  73341.  <newline>               /d010 LINE FEED (LF)
  73342.  <vertical-tab>          /d011 LINE TABULATION (VT)
  73343.  <form-feed>             /d012 FORM FEED (FF)
  73344.  <carriage-return>       /d013 CARRIAGE RETURN (CR)
  73345.  <DLE>                   /d016 DATALINK ESCAPE (DLE)
  73346.  <DC1>                   /d017 DEVICE CONTROL ONE (DC1)
  73347.  <DC2>                   /d018 DEVICE CONTROL TWO (DC2)
  73348.  <DC3>                   /d019 DEVICE CONTROL THREE (DC3)
  73349.  <DC4>                   /d020 DEVICE CONTROL FOUR (DC4)
  73350.  <NAK>                   /d021 NEGATIVE ACKNOWLEDGE (NAK)
  73351.  <SYN>                   /d022 SYNCHRONOUS IDLE (SYN)
  73352.  <ETB>                   /d023 END OF TRANSMISSION BLOCK (ETB)
  73353.  <CAN>                   /d024 CANCEL (CAN)
  73354.  <SUB>                   /d026 SUBSTITUTE (SUB)
  73355.  <ESC>                   /d027 ESCAPE (ESC)
  73356.  <IS4>                   /d028 FILE SEPARATOR (IS4)
  73357.  <IS3>                   /d029 GROUP SEPARATOR (IS3)
  73358.  <intro>                 /d029 GROUP SEPARATOR (IS3)
  73359.  <IS2>                   /d030 RECORD SEPARATOR (IS2)
  73360.  <IS1>                   /d031 UNIT SEPARATOR (IS1)
  73361.  <DEL>                   /d127 DELETE (DEL)                                 1
  73362.  <space>                 /d032   SPACE
  73363.  <exclamation-mark>      /d033   EXCLAMATION MARK
  73364.  <quotation-mark>        /d034   QUOTATION MARK
  73365.  <number-sign>           /d035   NUMBER SIGN
  73366.  <dollar-sign>           /d036   DOLLAR SIGN
  73367.  <percent-sign>          /d037   PERCENT SIGN
  73368.  <ampersand>             /d038   AMPERSAND
  73369.  <apostrophe>            /d039   APOSTROPHE
  73370.  <left-parenthesis>      /d040   LEFT PARENTHESIS
  73371.  <right-parenthesis>     /d041   RIGHT PARENTHESIS
  73372.  <asterisk>              /d042   ASTERISK
  73373.  <plus-sign>             /d043   PLUS SIGN
  73374.  <comma>                 /d044   COMMA
  73375.  <hyphen>                /d045   HYPHEN-MINUS
  73376.  
  73377.  
  73378.  
  73379.  
  73380.  
  73381.  
  73382.  
  73383.                Copyright c 1991 IEEE.  All rights reserved.
  73384.       This is an unapproved IEEE Standards Draft, subject to change.
  73385.  
  73386.  
  73387.  
  73388.  
  73389.  
  73390.  1082                                            F Sample National Profile
  73391.  
  73392.  
  73393.  
  73394.  
  73395.  
  73396.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  73397.  
  73398.  <hyphen-minus>          /d045   HYPHEN-MINUS
  73399.  <period>                /d046   FULL STOP
  73400.  <full-stop>             /d046   FULL STOP
  73401.  <slash>                 /d047   SOLIDUS
  73402.  <solidus>               /d047   SOLIDUS
  73403.  <zero>                  /d048   DIGIT ZERO
  73404.  <one>                   /d049   DIGIT ONE
  73405.  <two>                   /d050   DIGIT TWO
  73406.  <three>                 /d051   DIGIT THREE
  73407.  <four>                  /d052   DIGIT FOUR
  73408.  <five>                  /d053   DIGIT FIVE
  73409.  <six>                   /d054   DIGIT SIX
  73410.  <seven>                 /d055   DIGIT SEVEN
  73411.  <eight>                 /d056   DIGIT EIGHT
  73412.  <nine>                  /d057   DIGIT NINE
  73413.  <colon>                 /d058   COLON
  73414.  <semicolon>             /d059   SEMICOLON
  73415.  <less-than-sign>        /d060   LESS-THAN SIGN
  73416.  <equals-sign>           /d061   EQUALS SIGN
  73417.  <greater-than-sign>     /d062   GREATER-THAN SIGN
  73418.  <question-mark>         /d063   QUESTION MARK
  73419.  <commercial-at>         /d064   COMMERCIAL AT
  73420.  <left-square-bracket>   /d091   LEFT SQUARE BRACKET
  73421.  <reverse-solidus>       /d092   REVERSE SOLIDUS
  73422.  <backslash>             /d092   REVERSE SOLIDUS
  73423.  <right-square-bracket>  /d093   RIGHT SQUARE BRACKET
  73424.  <circumflex-accent>     /d094   CIRCUMFLEX ACCENT
  73425.  <low-line>              /d095   LOW LINE
  73426.  <underscore>            /d095   LOW LINE
  73427.  <grave-accent>          /d096   GRAVE ACCENT
  73428.  <left-curly-bracket>    /d123   LEFT CURLY BRACKET
  73429.  <vertical-line>         /d124   VERTICAL LINE
  73430.  <right-curly-bracket>   /d125   RIGHT CURLY BRACKET
  73431.  <tilde>                 /d126   TILDE
  73432.  <SP>    /d032   SPACE
  73433.  <!>     /d033   EXCLAMATION MARK
  73434.  <">     /d034   QUOTATION MARK
  73435.  <Nb>    /d035   NUMBER SIGN
  73436.  <DO>    /d036   DOLLAR SIGN
  73437.  <%>     /d037   PERCENT SIGN
  73438.  <&>     /d038   AMPERSAND
  73439.  <'>     /d039   APOSTROPHE
  73440.  <(>     /d040   LEFT PARENTHESIS
  73441.  <)>     /d041   RIGHT PARENTHESIS
  73442.  
  73443.  
  73444.  
  73445.  
  73446.  
  73447.  
  73448.  
  73449.                Copyright c 1991 IEEE.  All rights reserved.
  73450.       This is an unapproved IEEE Standards Draft, subject to change.
  73451.  
  73452.  
  73453.  
  73454.  
  73455.  
  73456.  F.5 (Example) Danish Charmap Files                                   1083
  73457.  
  73458.  
  73459.  
  73460.  
  73461.  
  73462.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  73463.  
  73464.  <*>     /d042   ASTERISK
  73465.  <+>     /d043   PLUS SIGN
  73466.  <,>     /d044   COMMA
  73467.  <->     /d045   HYPHEN-MINUS
  73468.  <.>     /d046   FULL STOP
  73469.  <//>    /d047   SOLIDUS
  73470.  <0>     /d048   DIGIT ZERO
  73471.  <1>     /d049   DIGIT ONE
  73472.  <2>     /d050   DIGIT TWO
  73473.  <3>     /d051   DIGIT THREE
  73474.  <4>     /d052   DIGIT FOUR
  73475.  <5>     /d053   DIGIT FIVE
  73476.  <6>     /d054   DIGIT SIX
  73477.  <7>     /d055   DIGIT SEVEN
  73478.  <8>     /d056   DIGIT EIGHT
  73479.  <9>     /d057   DIGIT NINE
  73480.  <:>     /d058   COLON
  73481.  <;>     /d059   SEMICOLON
  73482.  <<>     /d060   LESS-THAN SIGN
  73483.  <=>     /d061   EQUALS SIGN
  73484.  </>>    /d062   GREATER-THAN SIGN
  73485.  <?>     /d063   QUESTION MARK
  73486.  <At>    /d064   COMMERCIAL AT
  73487.  <A>     /d065   LATIN CAPITAL LETTER A
  73488.  <B>     /d066   LATIN CAPITAL LETTER B
  73489.  <C>     /d067   LATIN CAPITAL LETTER C
  73490.  <D>     /d068   LATIN CAPITAL LETTER D
  73491.  <E>     /d069   LATIN CAPITAL LETTER E
  73492.  <F>     /d070   LATIN CAPITAL LETTER F
  73493.  <G>     /d071   LATIN CAPITAL LETTER G
  73494.  <H>     /d072   LATIN CAPITAL LETTER H
  73495.  <I>     /d073   LATIN CAPITAL LETTER I
  73496.  <J>     /d074   LATIN CAPITAL LETTER J
  73497.  <K>     /d075   LATIN CAPITAL LETTER K
  73498.  <L>     /d076   LATIN CAPITAL LETTER L
  73499.  <M>     /d077   LATIN CAPITAL LETTER M
  73500.  <N>     /d078   LATIN CAPITAL LETTER N
  73501.  <O>     /d079   LATIN CAPITAL LETTER O
  73502.  <P>     /d080   LATIN CAPITAL LETTER P
  73503.  <Q>     /d081   LATIN CAPITAL LETTER Q
  73504.  <R>     /d082   LATIN CAPITAL LETTER R
  73505.  <S>     /d083   LATIN CAPITAL LETTER S
  73506.  <T>     /d084   LATIN CAPITAL LETTER T
  73507.  <U>     /d085   LATIN CAPITAL LETTER U
  73508.  
  73509.  
  73510.  
  73511.  
  73512.  
  73513.  
  73514.  
  73515.                Copyright c 1991 IEEE.  All rights reserved.
  73516.       This is an unapproved IEEE Standards Draft, subject to change.
  73517.  
  73518.  
  73519.  
  73520.  
  73521.  
  73522.  1084                                            F Sample National Profile
  73523.  
  73524.  
  73525.  
  73526.  
  73527.  
  73528.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  73529.  
  73530.  <V>     /d086   LATIN CAPITAL LETTER V
  73531.  <W>     /d087   LATIN CAPITAL LETTER W
  73532.  <X>     /d088   LATIN CAPITAL LETTER X
  73533.  <Y>     /d089   LATIN CAPITAL LETTER Y
  73534.  <Z>     /d090   LATIN CAPITAL LETTER Z
  73535.  <<(>    /d091   LEFT SQUARE BRACKET
  73536.  <////>  /d092   REVERSE SOLIDUS
  73537.  <)/>>   /d093   RIGHT SQUARE BRACKET
  73538.  <'/>>   /d094   CIRCUMFLEX ACCENT
  73539.  <_>     /d095   LOW LINE
  73540.  <'!>    /d096   GRAVE ACCENT
  73541.  <a>     /d097   LATIN SMALL LETTER A
  73542.  <b>     /d098   LATIN SMALL LETTER B
  73543.  <c>     /d099   LATIN SMALL LETTER C
  73544.  <d>     /d100   LATIN SMALL LETTER D
  73545.  <e>     /d101   LATIN SMALL LETTER E
  73546.  <f>     /d102   LATIN SMALL LETTER F
  73547.  <g>     /d103   LATIN SMALL LETTER G
  73548.  <h>     /d104   LATIN SMALL LETTER H
  73549.  <i>     /d105   LATIN SMALL LETTER I
  73550.  <j>     /d106   LATIN SMALL LETTER J
  73551.  <k>     /d107   LATIN SMALL LETTER K
  73552.  <l>     /d108   LATIN SMALL LETTER L
  73553.  <m>     /d109   LATIN SMALL LETTER M
  73554.  <n>     /d110   LATIN SMALL LETTER N
  73555.  <o>     /d111   LATIN SMALL LETTER O
  73556.  <p>     /d112   LATIN SMALL LETTER P
  73557.  <q>     /d113   LATIN SMALL LETTER Q
  73558.  <r>     /d114   LATIN SMALL LETTER R
  73559.  <s>     /d115   LATIN SMALL LETTER S
  73560.  <t>     /d116   LATIN SMALL LETTER T
  73561.  <u>     /d117   LATIN SMALL LETTER U
  73562.  <v>     /d118   LATIN SMALL LETTER V
  73563.  <w>     /d119   LATIN SMALL LETTER W
  73564.  <x>     /d120   LATIN SMALL LETTER X
  73565.  <y>     /d121   LATIN SMALL LETTER Y
  73566.  <z>     /d122   LATIN SMALL LETTER Z
  73567.  <(!>    /d123   LEFT CURLY BRACKET
  73568.  <!!>    /d124   VERTICAL LINE
  73569.  <!)>    /d125   RIGHT CURLY BRACKET
  73570.  <'?>    /d126   TILDE
  73571.  <NS>    /d160   NO-BREAK SPACE
  73572.  <!I>    /d161   INVERTED EXCLAMATION MARK
  73573.  <Ct>    /d162   CENT SIGN
  73574.  
  73575.  
  73576.  
  73577.  
  73578.  
  73579.  
  73580.  
  73581.                Copyright c 1991 IEEE.  All rights reserved.
  73582.       This is an unapproved IEEE Standards Draft, subject to change.
  73583.  
  73584.  
  73585.  
  73586.  
  73587.  
  73588.  F.5 (Example) Danish Charmap Files                                   1085
  73589.  
  73590.  
  73591.  
  73592.  
  73593.  
  73594.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  73595.  
  73596.  <Pd>    /d163   POUND SIGN
  73597.  <Cu>    /d164   CURRENCY SIGN
  73598.  <Ye>    /d165   YEN SIGN
  73599.  <BB>    /d166   BROKEN BAR
  73600.  <SE>    /d167   SECTION SIGN
  73601.  <':>    /d168   DIAERESIS
  73602.  <Co>    /d169   COPYRIGHT SIGN
  73603.  <-a>    /d170   FEMININE ORDINAL INDICATOR
  73604.  <<<>    /d171   LEFT POINTING DOUBLE ANGLE QUOTATION MARK
  73605.  <NO>    /d172   NOT SIGN
  73606.  <-->    /d173   SOFT HYPHEN
  73607.  <Rg>    /d174   REGISTERED SIGN
  73608.  <'->    /d175   MACRON
  73609.  <DG>    /d176   DEGREE SIGN
  73610.  <+->    /d177   PLUS-MINUS SIGN
  73611.  <2S>    /d178   SUPERSCRIPT TWO
  73612.  <3S>    /d179   SUPERSCRIPT THREE
  73613.  <''>    /d180   ACUTE ACCENT
  73614.  <My>    /d181   MICRO SIGN
  73615.  <PI>    /d182   PILCROW SIGN
  73616.  <.M>    /d183   MIDDLE DOT
  73617.  <',>    /d184   CEDILLA
  73618.  <1S>    /d185   SUPERSCRIPT ONE
  73619.  <-o>    /d186   MASCULINE ORDINAL INDICATOR
  73620.  </>>>>  /d187   RIGHT POINTING DOUBLE ANGLE QUOTATION MARK                 1
  73621.  <14>    /d188   VULGAR FRACTION ONE QUARTER
  73622.  <12>    /d189   VULGAR FRACTION ONE HALF
  73623.  <34>    /d190   VULGAR FRACTION THREE QUARTERS
  73624.  <?I>    /d191   INVERTED QUESTION MARK
  73625.  <A!>    /d192   LATIN CAPITAL LETTER A WITH GRAVE
  73626.  <A'>    /d193   LATIN CAPITAL LETTER A WITH ACUTE
  73627.  <A/>>   /d194   LATIN CAPITAL LETTER A WITH CIRCUMFLEX
  73628.  <A?>    /d195   LATIN CAPITAL LETTER A WITH TILDE
  73629.  <A:>    /d196   LATIN CAPITAL LETTER A WITH DIAERESIS
  73630.  <AA>    /d197   LATIN CAPITAL LETTER A WITH RING ABOVE
  73631.  <AE>    /d198   LATIN CAPITAL LETTER AE
  73632.  <C,>    /d199   LATIN CAPITAL LETTER C WITH CEDILLA
  73633.  <E!>    /d200   LATIN CAPITAL LETTER E WITH GRAVE
  73634.  <E'>    /d201   LATIN CAPITAL LETTER E WITH ACUTE
  73635.  <E/>>   /d202   LATIN CAPITAL LETTER E WITH CIRCUMFLEX
  73636.  <E:>    /d203   LATIN CAPITAL LETTER E WITH DIAERESIS
  73637.  <I!>    /d204   LATIN CAPITAL LETTER I WITH GRAVE
  73638.  <I'>    /d205   LATIN CAPITAL LETTER I WITH ACUTE
  73639.  <I/>>   /d206   LATIN CAPITAL LETTER I WITH CIRCUMFLEX
  73640.  
  73641.  
  73642.  
  73643.  
  73644.  
  73645.  
  73646.  
  73647.                Copyright c 1991 IEEE.  All rights reserved.
  73648.       This is an unapproved IEEE Standards Draft, subject to change.
  73649.  
  73650.  
  73651.  
  73652.  
  73653.  
  73654.  1086                                            F Sample National Profile
  73655.  
  73656.  
  73657.  
  73658.  
  73659.  
  73660.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  73661.  
  73662.  <I:>    /d207   LATIN CAPITAL LETTER I WITH DIAERESIS
  73663.  <D->    /d208   LATIN CAPITAL LETTER ETH (Icelandic)
  73664.  <N?>    /d209   LATIN CAPITAL LETTER N WITH TILDE
  73665.  <O!>    /d210   LATIN CAPITAL LETTER O WITH GRAVE
  73666.  <O'>    /d211   LATIN CAPITAL LETTER O WITH ACUTE
  73667.  <O/>>   /d212   LATIN CAPITAL LETTER O WITH CIRCUMFLEX
  73668.  <O?>    /d213   LATIN CAPITAL LETTER O WITH TILDE
  73669.  <O:>    /d214   LATIN CAPITAL LETTER O WITH DIAERESIS
  73670.  <*X>    /d215   MULTIPLICATION SIGN
  73671.  <O//>   /d216   LATIN CAPITAL LETTER O WITH STROKE
  73672.  <U!>    /d217   LATIN CAPITAL LETTER U WITH GRAVE
  73673.  <U'>    /d218   LATIN CAPITAL LETTER U WITH ACUTE
  73674.  <U/>>   /d219   LATIN CAPITAL LETTER U WITH CIRCUMFLEX
  73675.  <U:>    /d220   LATIN CAPITAL LETTER U WITH DIAERESIS
  73676.  <Y'>    /d221   LATIN CAPITAL LETTER Y WITH ACUTE
  73677.  <TH>    /d222   LATIN CAPITAL LETTER THORN (Icelandic)
  73678.  <ss>    /d223   LATIN SMALL LETTER SHARP S (German)
  73679.  <a!>    /d224   LATIN SMALL LETTER A WITH GRAVE
  73680.  <a'>    /d225   LATIN SMALL LETTER A WITH ACUTE
  73681.  <a/>>   /d226   LATIN SMALL LETTER A WITH CIRCUMFLEX
  73682.  <a?>    /d227   LATIN SMALL LETTER A WITH TILDE
  73683.  <a:>    /d228   LATIN SMALL LETTER A WITH DIAERESIS
  73684.  <aa>    /d229   LATIN SMALL LETTER A WITH RING ABOVE
  73685.  <ae>    /d230   LATIN SMALL LETTER AE
  73686.  <c,>    /d231   LATIN SMALL LETTER C WITH CEDILLA
  73687.  <e!>    /d232   LATIN SMALL LETTER E WITH GRAVE
  73688.  <e'>    /d233   LATIN SMALL LETTER E WITH ACUTE
  73689.  <e/>>   /d234   LATIN SMALL LETTER E WITH CIRCUMFLEX
  73690.  <e:>    /d235   LATIN SMALL LETTER E WITH DIAERESIS
  73691.  <i!>    /d236   LATIN SMALL LETTER I WITH GRAVE
  73692.  <i'>    /d237   LATIN SMALL LETTER I WITH ACUTE
  73693.  <i/>>   /d238   LATIN SMALL LETTER I WITH CIRCUMFLEX
  73694.  <i:>    /d239   LATIN SMALL LETTER I WITH DIAERESIS
  73695.  <d->    /d240   LATIN SMALL LETTER ETH (Icelandic)
  73696.  <n?>    /d241   LATIN SMALL LETTER N WITH TILDE
  73697.  <o!>    /d242   LATIN SMALL LETTER O WITH GRAVE
  73698.  <o'>    /d243   LATIN SMALL LETTER O WITH ACUTE
  73699.  <o/>>   /d244   LATIN SMALL LETTER O WITH CIRCUMFLEX
  73700.  <o?>    /d245   LATIN SMALL LETTER O WITH TILDE
  73701.  <o:>    /d246   LATIN SMALL LETTER O WITH DIAERESIS
  73702.  <-:>    /d247   DIVISION SIGN
  73703.  <o//>   /d248   LATIN SMALL LETTER O WITH STROKE
  73704.  <u!>    /d249   LATIN SMALL LETTER U WITH GRAVE
  73705.  <u'>    /d250   LATIN SMALL LETTER U WITH ACUTE
  73706.  
  73707.  
  73708.  
  73709.  
  73710.  
  73711.  
  73712.  
  73713.                Copyright c 1991 IEEE.  All rights reserved.
  73714.       This is an unapproved IEEE Standards Draft, subject to change.
  73715.  
  73716.  
  73717.  
  73718.  
  73719.  
  73720.  F.5 (Example) Danish Charmap Files                                   1087
  73721.  
  73722.  
  73723.  
  73724.  
  73725.  
  73726.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  73727.  
  73728.  <u/>>   /d251   LATIN SMALL LETTER U WITH CIRCUMFLEX
  73729.  <u:>    /d252   LATIN SMALL LETTER U WITH DIAERESIS
  73730.  <y'>    /d253   LATIN SMALL LETTER Y WITH ACUTE
  73731.  <th>    /d254   LATIN SMALL LETTER THORN (Icelandic)
  73732.  <y:>    /d255   LATIN SMALL LETTER Y WITH DIAERESIS
  73733.  <NU>    /d000   NULL (NUL)
  73734.  <SH>    /d001   START OF HEADING (SOH)
  73735.  <SX>    /d002   START OF TEXT (STX)
  73736.  <EX>    /d003   END OF TEXT (ETX)
  73737.  <ET>    /d004   END OF TRANSMISSION (EOT)
  73738.  <EQ>    /d005   ENQUIRY (ENQ)
  73739.  <AK>    /d006   ACKNOWLEDGE (ACK)
  73740.  <BL>    /d007   BELL (BEL)
  73741.  <BS>    /d008   BACKSPACE (BS)
  73742.  <HT>    /d009   CHARACTER TABULATION (HT)
  73743.  <LF>    /d010   LINE FEED (LF)
  73744.  <VT>    /d011   LINE TABULATION (VT)
  73745.  <FF>    /d012   FORM FEED (FF)
  73746.  <CR>    /d013   CARRIAGE RETURN (CR)
  73747.  <SO>    /d014   SHIFT OUT (SO)
  73748.  <SI>    /d015   SHIFT IN (SI)
  73749.  <DL>    /d016   DATALINK ESCAPE (DLE)
  73750.  <D1>    /d017   DEVICE CONTROL ONE (DC1)
  73751.  <D2>    /d018   DEVICE CONTROL TWO (DC2)
  73752.  <D3>    /d019   DEVICE CONTROL THREE (DC3)
  73753.  <D4>    /d020   DEVICE CONTROL FOUR (DC4)
  73754.  <NK>    /d021   NEGATIVE ACKNOWLEDGE (NAK)
  73755.  <SY>    /d022   SYNCHRONOUS IDLE (SYN)
  73756.  <EB>    /d023   END OF TRANSMISSION BLOCK (ETB)
  73757.  <CN>    /d024   CANCEL (CAN)
  73758.  <EM>    /d025   END OF MEDIUM (EM)
  73759.  <SB>    /d026   SUBSTITUTE (SUB)
  73760.  <EC>    /d027   ESCAPE (ESC)
  73761.  <FS>    /d028   FILE SEPARATOR (IS4)
  73762.  <GS>    /d029   GROUP SEPARATOR (IS3)
  73763.  <RS>    /d030   RECORD SEPARATOR (IS2)
  73764.  <US>    /d031   UNIT SEPARATOR (IS1)
  73765.  <DT>    /d127   DELETE (DEL)
  73766.  <PA>    /d128   PADDING CHARACTER (PAD)
  73767.  <HO>    /d129   HIGH OCTET PRESET (HOP)
  73768.  <BH>    /d130   BREAK PERMITTED HERE (BPH)
  73769.  <NH>    /d131   NO BREAK HERE (NBH)
  73770.  <IN>    /d132   INDEX (IND)
  73771.  <NL>    /d133   NEXT LINE (NEL)
  73772.  
  73773.  
  73774.  
  73775.  
  73776.  
  73777.  
  73778.  
  73779.                Copyright c 1991 IEEE.  All rights reserved.
  73780.       This is an unapproved IEEE Standards Draft, subject to change.
  73781.  
  73782.  
  73783.  
  73784.  
  73785.  
  73786.  1088                                            F Sample National Profile
  73787.  
  73788.  
  73789.  
  73790.  
  73791.  
  73792.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  73793.  
  73794.  <SA>    /d134   START OF SELECTED AREA (SSA)
  73795.  <ES>    /d135   END OF SELECTED AREA (ESA)
  73796.  <HS>    /d136   CHARACTER TABULATION SET (HTS)
  73797.  <HJ>    /d137   CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
  73798.  <VS>    /d138   LINE TABULATION SET (VTS)
  73799.  <PD>    /d139   PARTIAL LINE FORWARD (PLD)
  73800.  <PU>    /d140   PARTIAL LINE BACKWARD (PLU)
  73801.  <RI>    /d141   REVERSE LINE FEED (RI)
  73802.  <S2>    /d142   SINGLE-SHIFT TWO (SS2)
  73803.  <S3>    /d143   SINGLE-SHIFT THREE (SS3)
  73804.  <DC>    /d144   DEVICE CONTROL STRING (DCS)
  73805.  <P1>    /d145   PRIVATE USE ONE (PU1)
  73806.  <P2>    /d146   PRIVATE USE TWO (PU2)
  73807.  <TS>    /d147   SET TRANSMIT STATE (STS)
  73808.  <CC>    /d148   CANCEL CHARACTER (CCH)
  73809.  <MW>    /d149   MESSAGE WAITING (MW)
  73810.  <SG>    /d150   START OF GUARDED AREA (SPA)
  73811.  <EG>    /d151   END OF GUARDED AREA (EPA)
  73812.  <SS>    /d152   START OF STRING (SOS)
  73813.  <GC>    /d153   SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
  73814.  <SC>    /d154   SINGLE CHARACTER INTRODUCER (SCI)
  73815.  <CI>    /d155   CONTROL SEQUENCE INTRODUCER (CSI)
  73816.  <ST>    /d156   STRING TERMINATOR (ST)
  73817.  <OC>    /d157   OPERATING SYSTEM COMMAND (OSC)
  73818.  <PM>    /d158   PRIVACY MESSAGE (PM)
  73819.  <AC>    /d159   APPLICATION PROGRAM COMMAND (APC)
  73820.  END CHARMAP
  73821.  
  73822.  END_RATIONALE
  73823.  
  73824.  END_RATIONALE
  73825.  
  73826.  
  73827.  
  73828.  
  73829.  
  73830.  
  73831.  
  73832.  
  73833.  
  73834.  
  73835.  
  73836.  
  73837.  
  73838.  
  73839.  
  73840.  
  73841.  
  73842.  
  73843.  
  73844.  
  73845.                Copyright c 1991 IEEE.  All rights reserved.
  73846.       This is an unapproved IEEE Standards Draft, subject to change.
  73847.  
  73848.  
  73849.  
  73850.  
  73851.  
  73852.  F.5 (Example) Danish Charmap Files                                   1089
  73853.  
  73854.  
  73855.  
  73856.  
  73857.  
  73858.  
  73859.  
  73860.  
  73861.  
  73862.  
  73863.  
  73864.  
  73865.  
  73866.  
  73867.  
  73868.  
  73869.  
  73870.  
  73871.  
  73872.  
  73873.  
  73874.  
  73875.  
  73876.  
  73877.  
  73878.  
  73879.  
  73880.  
  73881.  
  73882.  
  73883.  
  73884.  
  73885.  
  73886.  
  73887.  
  73888.  
  73889.  
  73890.  
  73891.  
  73892.  
  73893.  
  73894.  
  73895.  
  73896.  
  73897.  
  73898.  
  73899.  
  73900.  
  73901.  
  73902.  
  73903.  
  73904.  
  73905.  
  73906.  
  73907.  
  73908.  
  73909.  
  73910.  
  73911.  
  73912.  
  73913.  
  73914.  
  73915.  
  73916.  
  73917.  
  73918.  
  73919.  
  73920.  
  73921.  
  73922.  
  73923.  
  73924.                                                              P1003.2/D11.2
  73925.  
  73926.  
  73927.  
  73928.  
  73929.  
  73930.  
  73931.                                   Annex G
  73932.                                (informative)
  73933.  
  73934.                           Balloting Instructions
  73935.  
  73936.  
  73937.  
  73938.  
  73939.  BEGIN_RATIONALE
  73940.  
  73941.  BEGIN_RATIONALE
  73942.  
  73943.  This annex will not appear in the final standard.  It is included in the
  73944.  draft to provide instructions for balloting that cannot be separated
  73945.  easily from the main document, as a cover letter might.
  73946.  
  73947.  If you have received a copy of this draft before October 1991 it is
  73948.  important that you read this annex, whether you are an official member of
  73949.  the P1003.2 Balloting Group or not; comments on this draft are welcomed
  73950.  from all interested technical experts.  Your ballot is due to the IEEE
  73951.  office by 21 October 1991.  This is not the date to postmark it--it is
  73952.  the date of receipt.
  73953.  
  73954.  _S_u_m_m_a_r_y__o_f__D_r_a_f_t__1_1_._2__I_n_s_t_r_u_c_t_i_o_n_s
  73955.  
  73956.  This is the fifth ``recirculation draft'' of P1003.2.  The recirculation   2
  73957.  procedure is described in this annex.  For this recirculation, we are      2
  73958.  accepting objections against any normative changes that occurred from      2
  73959.  Draft 11.1 to Draft 11.2 and the contents of the Unresolved Objections     2
  73960.  List, provided as a separate document from the draft.                      2
  73961.  
  73962.  This is the first ballot in which the draft is available for online        2
  73963.  review; see the Editor's Notes for details on accessing this information.  2
  73964.  
  73965.  Send your ballot and/or comments to:
  73966.  
  73967.  
  73968.  
  73969.  
  73970.  
  73971.  
  73972.  
  73973.  
  73974.  
  73975.  
  73976.  
  73977.                Copyright c 1991 IEEE.  All rights reserved.
  73978.       This is an unapproved IEEE Standards Draft, subject to change.
  73979.  
  73980.  
  73981.  
  73982.  
  73983.  
  73984.  Annex G Balloting Instructions                                       1091
  73985.  
  73986.  
  73987.  
  73988.  
  73989.  
  73990.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  73991.  
  73992.        IEEE Standards Office
  73993.        Computer Society Secretariat
  73994.        ATTN: P1003.2 Ballot (Anna Kaczmarek)                                2
  73995.        P.O. Box 1331
  73996.        445 Hoes Lane
  73997.        Piscataway, NJ 08855-1331
  73998.  
  73999.  It would also be very helpful if you sent us your ballot in machine-
  74000.  readable form.  Your official ballot must be returned via mail to the
  74001.  IEEE office; if we receive only the e-mail or diskette version, that
  74002.  version will not count as an official document.  However, the online
  74003.  version would be a great help to ballot resolution.  We can accept e-mail
  74004.  to the following address:
  74005.  
  74006.        hlj@Posix.COM   or   uunet!posix!hlj
  74007.  
  74008.  or IBM PC 3.5-inch/720K diskette (plain file) or Macintosh 3.5-inch
  74009.  diskette (plain text file [preferred], Word, or Write) or Sun-style QIC-
  74010.  24 cartridge tapes to:
  74011.  
  74012.        Hal Jespersen, Chair P1003.2
  74013.        POSIX Software Group
  74014.        447 Lakeview Way
  74015.        Redwood City, CA 94062
  74016.  
  74017.  Some degree of judgment is required in determining what actually changed
  74018.  in Draft 11.2.  Use the diff marks as a guide, but they will frequently
  74019.  mark text that has no real normative changes.  Please limit your
  74020.  objections to the actual changes:  for example, if we change the foo -x
  74021.  option to -y, don't use that as an opportunity to object that we have no
  74022.  -z option.  Your objection should only address why the x to y change is a
  74023.  problem.  (We have been balloting for a long time now and it is time to
  74024.  tighten the consensus and finish this up.)  If you find problems
  74025.  unrelated to changes, submit them as comments and they will be considered
  74026.  seriously in that category.  Thanks for your cooperation on this.
  74027.  
  74028.  _B_a_c_k_g_r_o_u_n_d__o_n__B_a_l_l_o_t_i_n_g__P_r_o_c_e_d_u_r_e_s
  74029.  
  74030.  The Balloting Group consists of over 160 technical experts who are
  74031.  members of the IEEE or the IEEE Computer Society; enrollment of
  74032.  individuals in this group has already been closed.  There are also a few   1
  74033.  ``parties of interest'' who are not members of the IEEE or the Computer    1
  74034.  Society.  Members of the Balloting Group are required to return ballots
  74035.  within the balloting period.  Other individuals who may happen to read
  74036.  
  74037.  
  74038.  
  74039.  
  74040.  
  74041.  
  74042.  
  74043.                Copyright c 1991 IEEE.  All rights reserved.
  74044.       This is an unapproved IEEE Standards Draft, subject to change.
  74045.  
  74046.  
  74047.  
  74048.  
  74049.  
  74050.  1092                                             G Balloting Instructions
  74051.  
  74052.  
  74053.  
  74054.  
  74055.  
  74056.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  74057.  
  74058.  this draft are also encouraged to submit comments concerning this draft.   2
  74059.  The only real difference between members of the Balloting Group and other
  74060.  individuals submitting ballots is that _a_f_f_i_r_m_a_t_i_v_e ballots are only
  74061.  counted from Balloting Group members who are also IEEE or Computer         1
  74062.  Society members.  (There are minimum requirements for the percentages of   1
  74063.  ballots returned and for affirmative ballots out of that group.)
  74064.  However, objections and nonbinding comments must be resolved if received
  74065.  from any individual, as follows:
  74066.  
  74067.      (1)  Some objections or comments will result in changes to the
  74068.           standard.  This will occur either by the publication of a list
  74069.           of changes or by the republication of an entire draft.  The
  74070.           objections/comments are reviewed by a team from the P1003.2
  74071.           working group, consisting of the Chair, Vice Chair, the Chair of
  74072.           the TCOS Standards Subcommittee, and one or more Technical
  74073.           Reviewers.  The Technical Reviewers each have subject matter
  74074.           expertise in a particular area and are responsible for objection
  74075.           resolution in one or more sections.
  74076.  
  74077.      (2)  Other objections/comments will not result in changes.
  74078.  
  74079.            (a)  Some are misunderstandings or cover portions of the
  74080.                 document (front matter, informative annexes, rationale,
  74081.                 editorial matters, etc.)  that are not subject to
  74082.                 balloting.
  74083.  
  74084.            (b)  Others are so vaguely worded that it is impossible to
  74085.                 determine what changes would satisfy the objector.  These
  74086.                 are referred to as _U_n_r_e_s_p_o_n_s_i_v_e.  (The Technical Reviewers
  74087.                 will make a reasonable effort to contact the objector to
  74088.                 resolve this and get a newly worded objection.)  Further
  74089.                 examples of unresponsive submittals are those not marked
  74090.                 as either _O_b_j_e_c_t_i_o_n or _C_o_m_m_e_n_t; those that do not identify
  74091.                 the portion of the document that is being objected to
  74092.                 (each objection must be separately labeled); those that     1
  74093.                 object to material in a recirculation that has not changed  1
  74094.                 and do not cite an unresolved objection; those that do not  1
  74095.                 provide specific or general guidance on what changes would
  74096.                 be required to resolve the objection.
  74097.  
  74098.            (c)  Finally, others are valid technical points, but they would
  74099.                 result in decreasing the consensus of the Balloting Group.
  74100.                 (This judgment is made based on other ballots and on the
  74101.                 experiences of the working group through almost five years
  74102.  
  74103.  
  74104.  
  74105.  
  74106.  
  74107.  
  74108.  
  74109.                Copyright c 1991 IEEE.  All rights reserved.
  74110.       This is an unapproved IEEE Standards Draft, subject to change.
  74111.  
  74112.  
  74113.  
  74114.  
  74115.  
  74116.  Annex G Balloting Instructions                                       1093
  74117.  
  74118.  
  74119.  
  74120.  
  74121.  
  74122.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  74123.  
  74124.                 of work and fifteen drafts preceding this one.)  These are
  74125.                 referred to as _U_n_r_e_s_o_l_v_e_d _O_b_j_e_c_t_i_o_n_s.  Summaries of
  74126.                 unresolved objections and their reasons for rejection are
  74127.                 maintained throughout the balloting process, are
  74128.                 circulated to members of the Balloting Group for their
  74129.                 consideration, and are presented to the IEEE Standards
  74130.                 Board when the final draft is offered for approval.         2
  74131.                 Unresolved objections are only circulated to the balloting  2
  74132.                 group when they are presented by members of the balloting   2
  74133.                 group or by parties of interest.  Unsolicited               2
  74134.                 correspondence from outside these two groups may result in  2
  74135.                 draft changes, but are not recirculated to the balloting    2
  74136.                 group members.                                              2
  74137.  
  74138.  Please ensure that you correctly characterize your ballot by providing
  74139.  one of the following:
  74140.  
  74141.      (1)  Your IEEE member number
  74142.  
  74143.      (2)  Your IEEE Computer Society affiliate number
  74144.  
  74145.      (3)  If (1) or (2) don't apply, a statement that you are a ``Party of
  74146.           Interest''
  74147.  
  74148.  _B_a_l_l_o_t__R_e_s_o_l_u_t_i_o_n
  74149.  
  74150.  The general procedure for resolving ballots is:
  74151.  
  74152.      (1)  The balloting cuts off on 21 October 1991.  This is a receipt
  74153.           date at the IEEE, not a postmark date.  (Please do not telephone
  74154.           or FAX on 21 October 1991 and say that your specific comments
  74155.           will come later; late-arriving comments will not be considered
  74156.           as objections.)  We will accept comments after that date,
  74157.           including direct e-mail to the working group officers or the
  74158.           Technical Reviewers, but they will be treated as comments only-
  74159.           -not objections.  And we don't guarantee a written response to
  74160.           these late submissions.
  74161.  
  74162.      (2)  The ballots are put online and distributed to the Technical
  74163.           Reviewers.
  74164.  
  74165.      (3)  If a ballot contains an objection, the balloter will be
  74166.           contacted individually by telephone, letter, or e-mail and the
  74167.           corrective action to be taken will be described (or negotiated).
  74168.  
  74169.  
  74170.  
  74171.  
  74172.  
  74173.  
  74174.  
  74175.                Copyright c 1991 IEEE.  All rights reserved.
  74176.       This is an unapproved IEEE Standards Draft, subject to change.
  74177.  
  74178.  
  74179.  
  74180.  
  74181.  
  74182.  1094                                             G Balloting Instructions
  74183.  
  74184.  
  74185.  
  74186.  
  74187.  
  74188.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  74189.  
  74190.           The personal contact will most likely not occur if the objection
  74191.           is very simple and obvious to fix or the balloter cannot be
  74192.           reached after a few reasonable attempts.  Repeated failed
  74193.           attempts to elicit a response from a balloter may result in an
  74194.           objection being considered unresponsive, based on the judgment
  74195.           of the working group chair.  Once all objections in a ballot
  74196.           have been resolved, it becomes an affirmative ballot.
  74197.  
  74198.      (4)  If any objection cannot be resolved, the entire ballot remains
  74199.           negative.
  74200.  
  74201.      (5)  Once more than seventy-five percent of the ballots received
  74202.           (that had voted either affirmative or negative) have been turned
  74203.           affirmative, two lists are published to the entire balloting
  74204.           group:  the detailed list of approved changes and the list of
  74205.           unresolved objections, along with our reasons for rejecting
  74206.           them.  This is known as a _r_e_c_i_r_c_u_l_a_t_i_o_n.  You have minimum of
  74207.           ten days (after an appropriate time to ensure the mail got
  74208.           through) to review these two lists and take one of the following
  74209.           actions:
  74210.  
  74211.            (a)  Do nothing; your ballots will continue to be counted as we
  74212.                 have classified them, based on items (3) and (4).
  74213.  
  74214.            (b)  Explicitly change your negative ballot to affirmative by
  74215.                 agreeing to remove all of your objections from the
  74216.                 unresolved list.
  74217.  
  74218.            (c)  Explicitly change your affirmative ballot to negative
  74219.                 based on your disapproval of either of the two lists you
  74220.                 reviewed.  If an issue is not on one of the two lists, new
  74221.                 objections about this are not allowed.  Negative ballots
  74222.                 that come in on recirculations cannot be cumulative.  They
  74223.                 shall repeat any objections that the balloter considers
  74224.                 unresolved from the previous recirculation.  Ballots that
  74225.                 simply say ``and all the unresolved objections from last
  74226.                 time'' will be declared unresponsive.  Ballots that are
  74227.                 silent will be presumed to fully replace the previous
  74228.                 ballot, and all objections not mentioned on the most
  74229.                 current ballot will be considered as successfully
  74230.                 resolved.
  74231.  
  74232.      (6)  The list of changes will frequently be a new draft document with
  74233.           the changes integrated.  This is not a requirement, however, and
  74234.  
  74235.  
  74236.  
  74237.  
  74238.  
  74239.  
  74240.  
  74241.                Copyright c 1991 IEEE.  All rights reserved.
  74242.       This is an unapproved IEEE Standards Draft, subject to change.
  74243.  
  74244.  
  74245.  
  74246.  
  74247.  
  74248.  Annex G Balloting Instructions                                       1095
  74249.  
  74250.  
  74251.  
  74252.  
  74253.  
  74254.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  74255.  
  74256.           a small number of changes may prompt merely a change list
  74257.           approach to recirculation.
  74258.  
  74259.      (7)  A copy of all your objections and our resolutions will be mailed
  74260.           to you.  You can receive the full package of all resolutions
  74261.           from all ballots by contacting the IEEE Standards Office (who
  74262.           will probably charge you for the copying involved).  If you
  74263.           don't agree with one of our resolutions and haven't been
  74264.           contacted personally before you receive this list, please accept
  74265.           our apologies and submit a new ballot against the new draft
  74266.           during the recirculation period.
  74267.  
  74268.      (8)  If at the end of the recirculation period there remain greater
  74269.           than seventy-five percent affirmative ballots, and no new
  74270.           objections have been received, a new draft is prepared that
  74271.           incorporates all the changes.  This draft and the unresolved
  74272.           objections list go to the IEEE Standards Board for approval.  If
  74273.           the changes cause too many ballots to slip back into negative
  74274.           status, another resolution and recirculation cycle begins.
  74275.  
  74276.  _B_a_l_l_o_t_i_n_g__G_u_i_d_e_l_i_n_e_s
  74277.  
  74278.  This section consists of guidelines on how to write and submit the most
  74279.  effective ballot possible.  The activity of resolving balloting comments
  74280.  is difficult and time consuming.  Poorly constructed comments can make
  74281.  that even worse.
  74282.  
  74283.  We have found several things that can be done to a ballot that make our
  74284.  job more difficult than it needs to be, and likely will result in a less
  74285.  than optimal response to ballots that do not follow the form below.  Thus
  74286.  it is to your advantage, as well as ours, for you to follow these
  74287.  recommendations and requirements.
  74288.  
  74289.  If a ballot that significantly violates the guidelines described in this
  74290.  section comes to us, we will determine that the ballot is unresponsive,
  74291.  and simply ignore all the material in it.
  74292.  
  74293.  Secondly, objections that don't contain a specification so that the
  74294.  correction to resolve the objection ``can be readily determined'' are
  74295.  also unresponsive and will be ignored.
  74296.  
  74297.  (If we do recognize a ballot that is generally ``unresponsive,'' we will
  74298.  try to inform the balloter as soon as possible so he/she can correct it,
  74299.  but it is ultimately the balloter's responsibility to assure the ballot
  74300.  
  74301.  
  74302.  
  74303.  
  74304.  
  74305.  
  74306.  
  74307.                Copyright c 1991 IEEE.  All rights reserved.
  74308.       This is an unapproved IEEE Standards Draft, subject to change.
  74309.  
  74310.  
  74311.  
  74312.  
  74313.  
  74314.  1096                                             G Balloting Instructions
  74315.  
  74316.  
  74317.  
  74318.  
  74319.  
  74320.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  74321.  
  74322.  is responsive.)
  74323.  
  74324.  Typesetting is not particularly useful to us.  And please do not send
  74325.  handwritten ballots.  Typewritten (or equivalent) is fine, and if some
  74326.  font information is lost it will be restored by the Technical Editor in
  74327.  any case.  If you use nroff, you will include extraneous spacing and
  74328.  sometimes backspaces and overstrikes; if you really must use nroff,
  74329.  please turn off hyphenation and line adjusting:
  74330.  
  74331.        .hy 0
  74332.        .na
  74333.  
  74334.  and run the output through col -b to remove all the overstrikes.  (Also
  74335.  remember that backslashes and leading periods and apostrophes in your      1
  74336.  text will be treated impolitely by the *roff family).  The ideal ballot    1
  74337.  is formatted as a ``flat ASCII file,'' without any attempt at reproducing
  74338.  the typography of the draft and without embedded control characters or
  74339.  overstrikes; it is then printed in Courier (or some other typewriter-
  74340.  like) font for paper-mailing to the IEEE Standards Office and
  74341.  simultaneously e-mailed to the working group Chair.
  74342.  
  74343.  Don't quote others' ballots.  Cite them if you want to refer to another's
  74344.  ballot.  If more than one person wants to endorse the same ballot, send
  74345.  just the cover sheets and one copy of the comments and objections.  [Note
  74346.  to Institutional Representatives of groups like X/Open, OSF, UI, etc.:
  74347.  this applies to you, too.  Please don't duplicate objection text with
  74348.  your members.]  Multiple identical copies are easy to deal with, but just
  74349.  increase the paper volume.  Multiple almost-identical ballots are a
  74350.  disaster, because we can't tell if they are identical or not, and are
  74351.  likely to miss the subtle differences.  Responses of the forms:
  74352.  
  74353.      - ``I agree with the item in <someone>'s ballot, but I'd like to see
  74354.        this done instead''
  74355.  
  74356.      - ``I am familiar with the changes to foo in <someone>'s ballot and I
  74357.        would object if this change is [or is not] included''
  74358.  
  74359.  are very useful information to us.  If we resolve the objection with the
  74360.  original balloter (the one whose ballot you are referencing), we will
  74361.  also consider yours to be closed, unless you specifically include some
  74362.  text in your objection indicating that should not be done.
  74363.  
  74364.  Be very careful of ``Oh, by the way, this applies <here> too'' items,
  74365.  particularly if they are in different sections of the document that are
  74366.  
  74367.  
  74368.  
  74369.  
  74370.  
  74371.  
  74372.  
  74373.                Copyright c 1991 IEEE.  All rights reserved.
  74374.       This is an unapproved IEEE Standards Draft, subject to change.
  74375.  
  74376.  
  74377.  
  74378.  
  74379.  
  74380.  Annex G Balloting Instructions                                       1097
  74381.  
  74382.  
  74383.  
  74384.  
  74385.  
  74386.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  74387.  
  74388.  likely to be seen by different reviewers.  They are probably going to be
  74389.  missed!  Note the problem in the appropriate section, and cite the
  74390.  detailed description if it's too much trouble to copy it.  The reviewers
  74391.  don't have time to read the whole ballot, and only read the parts that
  74392.  appear to apply to them.  Particularly where definitions are involved,
  74393.  even if the change really belongs in one section but the relevant content
  74394.  is in another, an extra cross-reference would be indicated.  If you wish
  74395.  to endorse someone else's ballot, either in whole or part, be specific
  74396.  about whether you will be automatically satisfied if they are satisfied.
  74397.  If you will not necessarily be satisfied if they are, your ballot could
  74398.  be deemed unresponsive because it does not give achievable conditions
  74399.  under which your ballot could be converted to affirmative.  You then must
  74400.  give the conditions under which you would be satisfied as well.  If you
  74401.  would be satisfied in some areas and not in others, it is best to
  74402.  specifically point to each specific objection in the ballot you point to,
  74403.  giving the conditions for each.
  74404.  
  74405.  Please consider this a new ballot that should stand on its own.  Please
  74406.  do not make backward references to your ballots for previous drafts--
  74407.  include all the text you want considered here, because the Technical
  74408.  Reviewer may not have your old ballot.  And, the old section and line
  74409.  numbers won't match up anyway.  If one of your objections was not
  74410.  accepted exactly as you wanted, it will not be useful to send in the
  74411.  exact text you sent before; read the nearby Rationale section and come up
  74412.  with a more compelling (or clearly-stated) justification for the change.
  74413.  
  74414.  Please be very wary about global statements, such as ``all of the
  74415.  arithmetic functions need to be defined more clearly.''  Unless you are
  74416.  prepared to cite specific instances of where you want changes made, with
  74417.  reasonably precise replacement language, your ballot will be considered
  74418.  unresponsive.
  74419.  
  74420.  _B_a_l_l_o_t__F_o_r_m
  74421.  
  74422.  The following form is recommended.  We would greatly appreciate it if you
  74423.  sent the ballot in electronic form in addition to the required paper
  74424.  copy.  Our policy is to handle all ballots online, so if you don't send
  74425.  it to us that way, we have to type it in manually.  For the last POSIX.2
  74426.  ballot, only one or two balloters could not accommodate us on this and
  74427.  thus we had very little typing to do.  See the first page of this Annex
  74428.  for the addresses and media.  As you'll see from the following,
  74429.  formatting a ballot that's sent to us online is much simpler than a
  74430.  paper-only ballot.
  74431.  
  74432.  
  74433.  
  74434.  
  74435.  
  74436.  
  74437.  
  74438.  
  74439.                Copyright c 1991 IEEE.  All rights reserved.
  74440.       This is an unapproved IEEE Standards Draft, subject to change.
  74441.  
  74442.  
  74443.  
  74444.  
  74445.  
  74446.  1098                                             G Balloting Instructions
  74447.  
  74448.  
  74449.  
  74450.  
  74451.  
  74452.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  74453.  
  74454.  The ballot should be page-numbered, and contain the name, e-mail address,
  74455.  and phone number(s) of the objector(s).  (If you send us only a paper
  74456.  copy, make sure this information appears on every page; electronic
  74457.  ballots just need it once, in the beginning.)  The lines before the first
  74458.  dashed line are a page header, and should only appear once on each page.
  74459.  Please leave adequate (at least one inch) margins on both sides.  Each
  74460.  objection/comment/editorial comment should be sequentially numbered, not
  74461.  in individual ranges [i.e., not Objection #1, Comment #1]
  74462.  
  74463.  Since we deal with the ballots online, there is no longer any requirement
  74464.  to put only one objection or section per page.
  74465.  
  74466.  Don't format the ballot as a letter or document with its _o_w_n section
  74467.  numbers.  These are simply confusing.  As shown below, it is best if you
  74468.  cause each objection and comment to have a sequential number that we can
  74469.  refer to amongst ourselves and to you over the phone.  Number
  74470.  sequentially from 1 and count objections, comments, and editorial
  74471.  comments the same; don't number each in its own range.  If you don't do
  74472.  this, we'll number them ourselves, but you won't know what numbers we're
  74473.  using.
  74474.  
  74475.  Please precede each objection/comment with a little code line (if you
  74476.  don't, we'll have to do it ourselves):
  74477.  
  74478.        @ <_s_e_c_t_i_o_n>.<_c_l_a_u_s_e> <_c_o_d_e> <_s_e_q_n_o>
  74479.  
  74480.  where:
  74481.  
  74482.     @           At-sign in column 1 (which means no @'s in any other
  74483.                 column 1's).
  74484.  
  74485.     <_s_e_c_t_i_o_n>   The major section (chapter or annex) number or letter in
  74486.                 column 3.  Use zero for Global or for something, like the
  74487.                 frontmatter, that has no section or annex number.
  74488.  
  74489.     <_c_l_a_u_s_e>    The clause number (second-level header).  Please do not go
  74490.                 deeper than these two levels.  In the text of your
  74491.                 objection or comment, go as deep as you can in describing
  74492.                 the location, but this code line uses two levels only.
  74493.  
  74494.     <_c_o_d_e>      One of the following lowercase letters, preceded and
  74495.                 followed by spaces:
  74496.  
  74497.  
  74498.  
  74499.  
  74500.  
  74501.  
  74502.  
  74503.  
  74504.  
  74505.                Copyright c 1991 IEEE.  All rights reserved.
  74506.       This is an unapproved IEEE Standards Draft, subject to change.
  74507.  
  74508.  
  74509.  
  74510.  
  74511.  
  74512.  Annex G Balloting Instructions                                       1099
  74513.  
  74514.  
  74515.  
  74516.  
  74517.  
  74518.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  74519.  
  74520.                    o  Objection.
  74521.  
  74522.                    c  Comment or Editorial Comment.
  74523.  
  74524.     <_s_e_q_n_o>     A sequence number, counting all objections and comments in
  74525.                 a single range.
  74526.  
  74527.  Objection:
  74528.  
  74529.  Balloter Name                   (202)555-1212           page  x of nn.
  74530.  E-Mail Address          FAX:    Fax Number
  74531.  Balloter2 Name                  (303)555-1213
  74532.  E-Mail Address2         FAX:    Fax Number2
  74533.  ------------------------------------------------------------------
  74534.  @ x.y o seq#
  74535.  <Seq#> Sect x.y OBJECTION. page xxx, line zzz:
  74536.  
  74537.  Problem:
  74538.  
  74539.  A clear statement of the problem that is observed, sufficient for others
  74540.  to understand the nature of the problem.  Note that you should identify
  74541.  problems by section, page, and line numbers.  This may seem redundant,
  74542.  but if you transpose a digit pair, we may get totally lost without a
  74543.  cross-check like this.  Use the line number where the problem starts, not
  74544.  just where the section itself starts; we sometimes attempt to sort
  74545.  objections by line numbers to make editing more accurate.  If you are
  74546.  referring to a range of lines, please don't say ``lines 1000ff;'' use a
  74547.  real range so we can tell where to stop looking.  If you have access to    2
  74548.  the online versions of a balloting draft, please do not send in a ballot   2
  74549.  that refers to the page numbers in the nroff output version; use only the  2
  74550.  line and page numbers found in the printed draft or the online PostScript  2
  74551.  draft.  We will really love you if you can manage to include enough
  74552.  context information in the problem statement (such as the name of the
  74553.  utility) so we can understand it without having the draft in our laps at
  74554.  the time.  (It also helps you when we e-mail it back to you.)  If you are
  74555.  objecting to an action in the Unresolved Objections List, use the
  74556.  section/page/line number reference for the appropriate place in the
  74557.  standard; don't refer to the UOL except to cite its number and for         1
  74558.  clarification of your points.                                              1
  74559.  
  74560.  Action:
  74561.  
  74562.  A precise statement of the actions to be taken on the document to resolve
  74563.  the objection above, which if taken verbatim will completely remove the
  74564.  
  74565.  
  74566.  
  74567.  
  74568.  
  74569.  
  74570.  
  74571.                Copyright c 1991 IEEE.  All rights reserved.
  74572.       This is an unapproved IEEE Standards Draft, subject to change.
  74573.  
  74574.  
  74575.  
  74576.  
  74577.  
  74578.  1100                                             G Balloting Instructions
  74579.  
  74580.  
  74581.  
  74582.  
  74583.  
  74584.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  74585.  
  74586.  objection.
  74587.  
  74588.  If there is an acceptable range of actions, any of which will resolve the
  74589.  problem for you if taken exactly, please indicate all of them.  If we
  74590.  accept any of these, your objection will be considered as resolved.
  74591.  
  74592.  If the Action section is omitted or is vague in its solution, the
  74593.  objection will be reclassified as a nonbinding comment.  The Technical
  74594.  Reviewers, being human, will give more attention to Actions that are
  74595.  well-described than ones that are vague or imprecise.  The best ballots
  74596.  of all have very explicit directions to substitute, delete, or add text
  74597.  in a style consistent with the rest of the document, such as:
  74598.  
  74599.  Delete the sentence on lines 101-102:
  74600.  
  74601.        "The implementation shall not ... or standard error."
  74602.  
  74603.  On line 245, change "shall not" to "should not".
  74604.  
  74605.  After line 103, add:
  74606.  
  74607.         -r    Reverse the order of bytes read from the file.
  74608.  
  74609.  Some examples of poorly-constructed actions:
  74610.  
  74611.  Remove all features of this command that are not supported by BSD.
  74612.  
  74613.  Add -i.
  74614.  
  74615.  Make this command more efficient and reliable.
  74616.  
  74617.  Use some other flag that isn't so confusing.
  74618.  
  74619.  I don't understand this section.
  74620.  
  74621.  Specify a value--I don't care what.
  74622.  
  74623.  
  74624.  
  74625.  
  74626.  
  74627.  
  74628.  
  74629.  
  74630.  
  74631.  
  74632.  
  74633.  
  74634.  
  74635.  
  74636.  
  74637.                Copyright c 1991 IEEE.  All rights reserved.
  74638.       This is an unapproved IEEE Standards Draft, subject to change.
  74639.  
  74640.  
  74641.  
  74642.  
  74643.  
  74644.  Annex G Balloting Instructions                                       1101
  74645.  
  74646.  
  74647.  
  74648.  
  74649.  
  74650.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  74651.  
  74652.  Objection Example:
  74653.  
  74654.  Hal Jespersen                   (415) 364-3410          page  3 of 17.
  74655.  UUCP: hlj@Posix.COM     FAX:    (415) 364-4498
  74656.  ------------------------------------------------------------------
  74657.  @ 2.6 o 23
  74658.  23. Sect 2.6 OBJECTION. page 77, line 1217:
  74659.  
  74660.  Problem:
  74661.  
  74662.  The EDITOR environment variable is not used as stated
  74663.  in my company.  This description would cause hundreds
  74664.  of my shell scripts to break.
  74665.  
  74666.  Action:
  74667.  
  74668.  Change the first sentence on line 1217 to:
  74669.  
  74670.          The e-mail address of the editor of the user's
  74671.          favorite POSIX standard.
  74672.  
  74673.  -----------------------
  74674.  @ 3.1 o 24
  74675.  24. Sect 3.1.6 OBJECTION. page 123, line 17:
  74676.  
  74677.  Problem:
  74678.  
  74679.  I support UO 3.01-999-6 concerning the objection to the                    1
  74680.  definition of "operator".                                                  1
  74681.  This definition would cause great hardship to the users                    1
  74682.  of the systems I develop.                                                  1
  74683.  I feel your rationale for rejection was inappropriate                      1
  74684.  because you overlooked the following technical points [etc.]...            1
  74685.  
  74686.  Action:
  74687.  
  74688.  Change the term "operator" to "operation-symbol" in this
  74689.  definition and globally throughout Section 3.
  74690.  
  74691.  Comment:
  74692.  
  74693.  
  74694.  
  74695.  
  74696.  
  74697.  
  74698.  
  74699.  
  74700.  
  74701.  
  74702.  
  74703.                Copyright c 1991 IEEE.  All rights reserved.
  74704.       This is an unapproved IEEE Standards Draft, subject to change.
  74705.  
  74706.  
  74707.  
  74708.  
  74709.  
  74710.  1102                                             G Balloting Instructions
  74711.  
  74712.  
  74713.  
  74714.  
  74715.  
  74716.  Part 2: SHELL AND UTILITIES                                 P1003.2/D11.2
  74717.  
  74718.  ------------------------------------------------------------------
  74719.  @ x.z c seq#
  74720.  <Seq#> Sect x.z COMMENT. page xxx, line zzz:
  74721.  
  74722.  A statement of a problem that you might want to be resolved by the
  74723.  reviewer, but which does not in any way affect whether your ballot is
  74724.  negative or positive.  The form for objections is not required, but it
  74725.  increases the probability that your comment will have an effect on the
  74726.  final document.
  74727.  
  74728.  Although there may be questions to you or responses on the topic, no
  74729.  changes in the drafts are required by a comment, although it will be
  74730.  looked at to determine whether the concern should be addressed.  It is
  74731.  possible to abuse this rule and label all of your comments as objections,
  74732.  but it is a significant disservice to the individuals who are
  74733.  volunteering their time to address your concerns.
  74734.  
  74735.  Remember that any issue concerning the pages preceding page 1 (the
  74736.  Frontmatter), Rationale text with shaded margins, Annexes, NOTES in the
  74737.  text, footnotes, or examples will be treated as a nonbinding comment
  74738.  whether you label it that way or not, but it would help us if you'd label
  74739.  it correctly.
  74740.  
  74741.  Editorial Comment:
  74742.  
  74743.  -----------------------------------------------------------------
  74744.  @ x.z c seq#
  74745.  <Seq#> Sect x.z EDITORIAL COMMENT. page xxx, line zzz:
  74746.  
  74747.  These are for strictly editorial issues, where the technical meaning of
  74748.  the document is not changed.  Examples are:  typos; misspellings; English
  74749.  syntax or usage errors; appearances of lists or tables; arrangement of
  74750.  sections, clauses, and subclauses (except where the location of
  74751.  information changes the optionality of a feature).  Marking these as
  74752.  comments but indicating that they are editorial speeds the process.
  74753.  
  74754.  Please be aware that after balloting concludes the document will be
  74755.  subjected to more sets of editors at the IEEE and ISO who are empowered
  74756.  to make broad editorial changes and rewording (for example, to get the
  74757.  text ready for translation into French.)
  74758.  
  74759.  
  74760.  
  74761.  Thank you for your cooperation in this important balloting process.
  74762.  
  74763.  
  74764.  
  74765.  
  74766.  
  74767.  
  74768.  
  74769.                Copyright c 1991 IEEE.  All rights reserved.
  74770.       This is an unapproved IEEE Standards Draft, subject to change.
  74771.  
  74772.  
  74773.  
  74774.  
  74775.  
  74776.  Annex G Balloting Instructions                                       1103
  74777.  
  74778.  
  74779.  
  74780.  
  74781.  
  74782.  P1003.2/D11.2                               INFORMATION TECHNOLOGY--POSIX
  74783.  
  74784.  Hal Jespersen
  74785.  
  74786.  END_RATIONALE
  74787.  
  74788.  END_RATIONALE
  74789.  
  74790.  
  74791.  
  74792.  
  74793.  
  74794.  
  74795.  
  74796.  
  74797.  
  74798.  
  74799.  
  74800.  
  74801.  
  74802.  
  74803.  
  74804.  
  74805.  
  74806.  
  74807.  
  74808.  
  74809.  
  74810.  
  74811.  
  74812.  
  74813.  
  74814.  
  74815.  
  74816.  
  74817.  
  74818.  
  74819.  
  74820.  
  74821.  
  74822.  
  74823.  
  74824.  
  74825.  
  74826.  
  74827.  
  74828.  
  74829.  
  74830.  
  74831.  
  74832.  
  74833.  
  74834.  
  74835.                Copyright c 1991 IEEE.  All rights reserved.
  74836.       This is an unapproved IEEE Standards Draft, subject to change.
  74837.  
  74838.  
  74839.  
  74840.  
  74841.  
  74842.  1104                                             G Balloting Instructions
  74843.  
  74844.  
  74845.  
  74846.  
  74847.  
  74848.                                                              P1003.2/D11.2
  74849.  
  74850.                              Identifier Index
  74851.  
  74852.  
  74853.  
  74854.  [             test - Evaluate expression {4.62} .......  745
  74855.  ar            ar - Create and maintain library archives
  74856.                   {6.1} ................................  809
  74857.  asa           asa - Interpret carriage-control
  74858.                   characters {C.1} .....................  960
  74859.  awk           awk - Pattern scanning and processing
  74860.                   language {4.1} .......................  317
  74861.  basename      basename - Return nondirectory portion of
  74862.                   pathname {4.2} .......................  358
  74863.  bc            bc - Arbitrary-precision arithmetic
  74864.                   language {4.3} .......................  362
  74865.  break         break - Exit from for, while, or until
  74866.                   loop {3.14.1} ........................  296
  74867.  c89           c89 - Compile Standard C programs {A.1}
  74868.                   ......................................  856
  74869.  case          case Conditional Construct {3.9.4.3} ....  272
  74870.  cat           cat - Concatenate and print files {4.4}
  74871.                   ......................................  383
  74872.  cd            cd - Change working directory {4.5} .....  388
  74873.  chgrp         chgrp - Change file group ownership {4.6}
  74874.                   ......................................  392
  74875.  chmod         chmod - Change file modes {4.7} .........  395
  74876.  chown         chown - Change file ownership {4.8} .....  405
  74877.  cksum         cksum - Write file checksums and sizes
  74878.                   {4.9} ................................  409
  74879.  cmp           cmp - Compare two files {4.10} ..........  416
  74880.  colon         colon - Null utility {3.14.2} ...........  297
  74881.  comm          comm - Select or reject lines common to
  74882.                   two files {4.11} .....................  420
  74883.  command       command - Execute a simple command {4.12}
  74884.                   ......................................  424
  74885.  _c_o_n_f_s_t_r()     C Binding for Get String-Valued
  74886.                   Configurable Variables
  74887.                   {B.10.1} .............................  955
  74888.  continue      continue - Continue for, while, or until
  74889.                   loop {3.14.3} ........................  298
  74890.  cp            cp - Copy files {4.13} ..................  430
  74891.  cut           cut - Cut out selected fields of each
  74892.                   line of a file {4.14} ................  440
  74893.  date          date - Write the date and time {4.15} ...  445
  74894.  dd            dd - Convert and copy a file {4.16} .....  452
  74895.  diff          diff - Compare two files {4.17} .........  462
  74896.  dirname       dirname - Return directory portion of
  74897.                   pathname {4.18} ......................  471
  74898.  dot           dot - Execute commands in current
  74899.  
  74900.  
  74901.                Copyright c 1991 IEEE.  All rights reserved.
  74902.       This is an unapproved IEEE Standards Draft, subject to change.
  74903.  
  74904.  
  74905.  
  74906.  
  74907.  
  74908.  Identifier Index                                                     1105
  74909.  
  74910.  
  74911.  
  74912.  
  74913.  
  74914.  P1003.2/D11.2
  74915.  
  74916.                   environment {3.14.4} .................  299
  74917.  echo          echo - Write arguments to standard output
  74918.                   {4.19} ...............................  475
  74919.  ed            ed - Edit text {4.20} ...................  479
  74920.  env           env - Set environment for command
  74921.                   invocation {4.21} ....................  498
  74922.  eval          eval - Construct command by concatenating
  74923.                   arguments {3.14.5} ...................  300
  74924.  exec          exec - Execute commands and open, close,
  74925.                   and/or copy file
  74926.                   descriptors {3.14.6} .................  301
  74927.  exit          exit - Cause the shell to exit {3.14.7}
  74928.                   ......................................  302
  74929.  export        export - Set export attribute for
  74930.                   variables {3.14.8} ...................  303
  74931.  expr          expr - Evaluate arguments as an
  74932.                   expression {4.22} ....................  503
  74933.  false         false - Return false value {4.23} .......  509
  74934.  find          find - Find files {4.24} ................  511
  74935.  _f_n_m_a_t_c_h()     C Binding for Match Filename or Pathname
  74936.                   {B.6} ................................  936
  74937.  fold          fold - Fold lines {4.25} ................  521
  74938.  for           for Loop {3.9.4.2} ......................  271
  74939.  fort77        fort77 - FORTRAN compiler {C.2} .........  964
  74940.  _f_p_a_t_h_c_o_n_f()   C Binding for Get Numeric-Valued
  74941.                   Configurable Variables
  74942.                   {B.10.2} .............................  957
  74943.  getconf       getconf - Get configuration values {4.26}
  74944.                   ......................................  526
  74945.  _g_e_t_e_n_v()      C Binding for Access Environment
  74946.                   Variables {B.4} ......................  927
  74947.  _g_e_t_o_p_t()      C Binding for Command Option Parsing
  74948.                   {B.7} ................................  939
  74949.  getopts       getopts - Parse utility options {4.27} ..  531
  74950.  _g_l_o_b()        C Binding for Generate Pathnames Matching
  74951.                   a Pattern {B.8} ......................  944
  74952.  _g_l_o_b__t        Description {B.8.2} .....................  944
  74953.  grep          grep - File pattern searcher {4.28} .....  537
  74954.  head          head - Copy the first part of files
  74955.                   {4.29} ...............................  545
  74956.  id            id - Return user identity {4.30} ........  549
  74957.  if            if Conditional Construct {3.9.4.4} ......  273
  74958.  join          join - Relational database operator
  74959.                   {4.31} ...............................  554
  74960.  kill          kill - Terminate or signal processes
  74961.                   {4.32} ...............................  559
  74962.  lex           lex - Generate programs for lexical tasks
  74963.                   {A.2} ................................  868
  74964.  ln            ln - Link files {4.33} ..................  566
  74965.  
  74966.  
  74967.                Copyright c 1991 IEEE.  All rights reserved.
  74968.       This is an unapproved IEEE Standards Draft, subject to change.
  74969.  
  74970.  
  74971.  
  74972.  
  74973.  
  74974.  1106                                                     Identifier Index
  74975.  
  74976.  
  74977.  
  74978.  
  74979.  
  74980.                                                              P1003.2/D11.2
  74981.  
  74982.  locale        locale - Get locale-specific information
  74983.                   {4.34} ...............................  570
  74984.  localedef     localedef - Define locale environment
  74985.                   {4.35} ...............................  577
  74986.  logger        logger - Log messages {4.36} ............  583
  74987.  logname       logname - Return user's login name {4.37}
  74988.                   ......................................  586
  74989.  lp            lp - Send files to a printer {4.38} .....  589
  74990.  ls            ls - List directory contents {4.39} .....  595
  74991.  mailx         mailx - Process messages {4.40} .........  605
  74992.  make          make - Maintain, update, and regenerate
  74993.                   groups of programs {6.2}
  74994.                   ......................................  818
  74995.  mkdir         mkdir - Make directories {4.41} .........  610
  74996.  mkfifo        mkfifo - Make FIFO special files {4.42}
  74997.                   ......................................  614
  74998.  mv            mv - Move files {4.43} ..................  617
  74999.  nohup         nohup - Invoke a utility immune to
  75000.                   hangups {4.44} .......................  623
  75001.  od            od - Dump files in various formats {4.45}
  75002.                   ......................................  627
  75003.  paste         paste - Merge corresponding or subsequent
  75004.                   lines of files {4.46} ................  637
  75005.  pathchk       pathchk - Check pathnames {4.47} ........  642
  75006.  _p_a_t_h_c_o_n_f()    C Binding for Get Numeric-Valued
  75007.                   Configurable Variables
  75008.                   {B.10.2} .............................  957
  75009.  pax           pax - Portable archive interchange {4.48}
  75010.                   ......................................  648
  75011.  _p_c_l_o_s_e()      C Binding for Pipe Communications with
  75012.                   Programs {B.3.2} .....................  921
  75013.  _p_o_p_e_n()       C Binding for Pipe Communications with
  75014.                   Programs {B.3.2} .....................  921
  75015.  pr            pr - Print files {4.49} .................  665
  75016.  printf        printf - Write formatted output {4.50} ..  672
  75017.  pwd           pwd - Return working directory name
  75018.                   {4.51} ...............................  679
  75019.  read          read - Read a line from standard input
  75020.                   {4.52} ...............................  682
  75021.  readonly      readonly - Set read-only attribute for
  75022.                   variables {3.14.9} ...................  304
  75023.  _r_e_g_c_o_m_p()     C Binding for Regular Expression Matching
  75024.                   {B.5} ................................  927
  75025.  _r_e_g_e_r_r_o_r()    C Binding for Regular Expression Matching
  75026.                   {B.5} ................................  927
  75027.  _r_e_g_e_x_e_c()     C Binding for Regular Expression Matching
  75028.                   {B.5} ................................  927
  75029.  _r_e_g_e_x__t       Description {B.5.2} .....................  927
  75030.  _r_e_g_f_r_e_e()     C Binding for Regular Expression Matching
  75031.  
  75032.  
  75033.                Copyright c 1991 IEEE.  All rights reserved.
  75034.       This is an unapproved IEEE Standards Draft, subject to change.
  75035.  
  75036.  
  75037.  
  75038.  
  75039.  
  75040.  Identifier Index                                                     1107
  75041.  
  75042.  
  75043.  
  75044.  
  75045.  
  75046.  P1003.2/D11.2
  75047.  
  75048.                   {B.5} ................................  927
  75049.  _r_e_g_m_a_t_c_h__t    Description {B.5.2} .....................  927
  75050.  _r_e_g_o_f_f__t      Description {B.5.2} .....................  927
  75051.  return        return - Return from a function {3.14.10}
  75052.                   ......................................  305
  75053.  rm            rm - Remove directory entries {4.53} ....  686
  75054.  rmdir         rmdir - Remove directories {4.54} .......  692
  75055.  sed           sed - Stream editor {4.55} ..............  695
  75056.  set           set - Set/unset options and positional
  75057.                   parameters {3.14.11} .................  306
  75058.  sh            sh - Shell, the standard command language
  75059.                   interpreter {4.56} ...................  706
  75060.  shift         shift - Shift positional parameters
  75061.                   {3.14.12} ............................  310
  75062.  sleep         sleep - Suspend execution for an interval
  75063.                   {4.57} ...............................  713
  75064.  sort          sort - Sort, merge, or sequence check
  75065.                   text files {4.58} ....................  716
  75066.  strip         strip - Remove unnecessary information
  75067.                   from executable files
  75068.                   {6.3} ................................  844
  75069.  stty          stty - Set the options for a terminal
  75070.                   {4.59} ...............................  725
  75071.  _s_y_s_c_o_n_f()     C Binding for Get Numeric-Valued
  75072.                   Configurable Variables
  75073.                   {B.10.2} .............................  957
  75074.  _s_y_s_t_e_m()      C Binding for Execute Command {B.3.1} ...  918
  75075.  tail          tail - Copy the last part of a file
  75076.                   {4.60} ...............................  736
  75077.  tee           tee - Duplicate standard input {4.61} ...  742
  75078.  test          test - Evaluate expression {4.62} .......  745
  75079.  touch         touch - Change file access and
  75080.                   modification times
  75081.                   {4.63} ...............................  756
  75082.  tr            tr - Translate characters {4.64} ........  762
  75083.  trap          trap - Trap signals {3.14.13} ...........  311
  75084.  true          true - Return true value {4.65} .........  770
  75085.  tty           tty - Return user's terminal name {4.66}
  75086.                   ......................................  772
  75087.  umask         umask - Get or set the file mode creation
  75088.                   mask {4.67} ..........................  775
  75089.  uname         uname - Return system name {4.68} .......  780
  75090.  uniq          uniq - Report or filter out repeated
  75091.                   lines in a file {4.69}
  75092.                   ......................................  784
  75093.  unset         unset - Unset values and attributes of
  75094.                   variables and functions
  75095.                   {3.14.14} ............................  314
  75096.  wait          wait - Await process completion {4.70} ..  790
  75097.  
  75098.  
  75099.                Copyright c 1991 IEEE.  All rights reserved.
  75100.       This is an unapproved IEEE Standards Draft, subject to change.
  75101.  
  75102.  
  75103.  
  75104.  
  75105.  
  75106.  1108                                                     Identifier Index
  75107.  
  75108.  
  75109.  
  75110.  
  75111.  
  75112.                                                              P1003.2/D11.2
  75113.  
  75114.  wc            wc - Word, line, and byte count {4.71} ..  795
  75115.  while         until Loop {3.9.4.6} ....................  275
  75116.  while         while Loop {3.9.4.5} ....................  274
  75117.  _w_o_r_d_e_x_p()     C Binding for Perform Word Expansions
  75118.                   {B.9} ................................  949
  75119.  _w_o_r_d_e_x_p__t     Description {B.9.2} .....................  950
  75120.  xargs         xargs - Construct argument list(s) and
  75121.                   invoke utility {4.72} ................  799
  75122.  yacc          yacc - Yet another compiler compiler
  75123.                   {A.3} ................................  885
  75124.  
  75125.  
  75126.  
  75127.  
  75128.  
  75129.  
  75130.  
  75131.  
  75132.  
  75133.  
  75134.  
  75135.  
  75136.  
  75137.  
  75138.  
  75139.  
  75140.  
  75141.  
  75142.  
  75143.  
  75144.  
  75145.  
  75146.  
  75147.  
  75148.  
  75149.  
  75150.  
  75151.  
  75152.  
  75153.  
  75154.  
  75155.  
  75156.  
  75157.  
  75158.  
  75159.  
  75160.  
  75161.  
  75162.  
  75163.  
  75164.  
  75165.                Copyright c 1991 IEEE.  All rights reserved.
  75166.       This is an unapproved IEEE Standards Draft, subject to change.
  75167.  
  75168.  
  75169.  
  75170.  
  75171.  
  75172.  Identifier Index                                                     1109
  75173.  
  75174.  
  75175.  
  75176.  
  75177.  
  75178.  
  75179.  
  75180.  
  75181.  
  75182.  
  75183.  
  75184.  
  75185.  
  75186.  
  75187.  
  75188.  
  75189.  
  75190.  
  75191.  
  75192.  
  75193.  
  75194.  
  75195.  
  75196.  
  75197.  
  75198.  
  75199.  
  75200.  
  75201.  
  75202.  
  75203.  
  75204.  
  75205.  
  75206.  
  75207.  
  75208.  
  75209.  
  75210.  
  75211.  
  75212.  
  75213.  
  75214.  
  75215.  
  75216.  
  75217.  
  75218.  
  75219.  
  75220.  
  75221.  
  75222.  
  75223.  
  75224.  
  75225.  
  75226.  
  75227.  
  75228.  
  75229.  
  75230.  
  75231.  
  75232.  
  75233.  
  75234.  
  75235.  
  75236.  
  75237.  
  75238.  
  75239.  
  75240.  
  75241.  
  75242.  
  75243.  
  75244.                                                              P1003.2/D11.2
  75245.  
  75246.  
  75247.  
  75248.  
  75249.                          Alphabetic Topical Index
  75250.  
  75251.  
  75252.  
  75253.  A                                      AM/PM  ... 102, 446
  75254.                                         AND Lists  ... 269
  75255.  A/2047  ... 705                        AND_IF  ... 282-283
  75256.  /  ... 126                             AND/OR lists  ... 261, 265, 269
  75257.  //  ... 358, 362, 471, 475             AND-OR  ... 259
  75258.  [                                      AND/OR  ... 261
  75259.     definition of  ... 745              AND-OR  ... 266
  75260.  Abbreviations  ... 57                  AND  ... 171, 265, 269, 306-307,
  75261.  ABCDEF  ... 201, 875                      322, 324, 339, 343, 345, 349,
  75262.  ABC  ... 677                              356, 515, 622, 690
  75263.  absolute pathname                      angle brackets
  75264.     definition of  ... 29                  definition of  ... 29
  75265.  access control                         ANSI  ... 974
  75266.     additional  ... 433                 a.out  ... 856-857, 863, 867,
  75267.     alternate  ... 433                     963-965, 970-971
  75268.  Access Environment Variables           Append Command  ... 486
  75269.      ... 849, 994                       Appending Redirected Output
  75270.  ACK  ... 63, 76, 84, 731                   ... 251
  75271.  ACM  ... 415                           APPEND  ... 339, 342, 349
  75272.  Actions Equivalent to POSIX.1          Application Conformance  ... 17
  75273.     Functions  ... 169                  application
  75274.  Actions  ... 331                          definition of  ... 54
  75275.  {ACTSIZE}  ... 902                     apply  ... 803
  75276.  ACUTE  ... 116-117                     appropriate privileges  ... 29,
  75277.  adb  ... 981                              36-37, 46, 395, 403, 549, 577,
  75278.  ADD_ASSIGN  ... 339, 344-345, 349         579, 659, 661, 664
  75279.  address space                             definition of  ... 29
  75280.     definition of  ... 29               ar
  75281.  affirmative response  ... 29, 106,        - Create and maintain library
  75282.     120, 432-433, 435, 513, 516,              archives  ... 809, 993
  75283.     576, 578, 618, 620, 656, 686-              ... 809-810, 812-818, 858-
  75284.     687, 689                                  859, 863, 966-967
  75285.     definition of  ... 29                  definition of  ... 809
  75286.  A-F  ... 382                           ARFLAGS  ... 832, 834
  75287.  Aim of Character Mnemonics             ARGC-1  ... 352
  75288.      ... 1045                           ARGC
  75289.  <alert>                                   awk variable  ... 327
  75290.     definition of  ... 29               ARGC  ... 319, 327, 352-353
  75291.  Algorithms  ... 902                    {ARG_MAX}  ... 208-209, 212, 220,
  75292.  Allow Historical Conforming               258, 799, 803, 805
  75293.     Applications  ... 7
  75294.  
  75295.  
  75296.  
  75297.                Copyright c 1991 IEEE.  All rights reserved.
  75298.       This is an unapproved IEEE Standards Draft, subject to change.
  75299.  
  75300.  
  75301.  
  75302.  
  75303.  
  75304.  Alphabetic Topical Index                                             1111
  75305.  
  75306.  
  75307.  
  75308.  
  75309.  
  75310.  P1003.2/D11.2
  75311.  
  75312.  {ARG_MAX}  ... 853                        Expressions  ... 322
  75313.  Argument Processing with _g_e_t_o_p_t()         Expressions in Decreasing
  75314.      ... 942                                  Precedence  ... 322
  75315.  argument                                  Functions  ... 334
  75316.     definition of  ... 29                  Grammar  ... 339
  75317.  _a_r_g_v  ... 29                              Input/Output and General
  75318.  ARGV                                         Functions  ... 336
  75319.     awk variable  ... 327                  Lexical Conventions  ... 346
  75320.  ARGV  ... 319, 327, 352-353               Output Statements  ... 332
  75321.  Arithmetic Expansion  ... 245             Patterns  ... 330
  75322.  Arithmetic Functions  ... 334             Regular Expressions  ... 328
  75323.  Arithmetic Precision and                  String Functions  ... 335
  75324.     Operations  ... 170                    User-Defined Functions  ... 338
  75325.  ARPANET  ... 608                          Variables and Special Variables
  75326.  asa                                           ... 326
  75327.     - Interpret carriage control        AWK  ... 10, 353-354, 974
  75328.        characters  ... 996              A-Z  ... 768
  75329.     - Interpret carriage-control
  75330.        characters  ... 960
  75331.         ... 959-963                     B
  75332.     definition of  ... 960
  75333.  ASCII  ... 55-56, 66-67, 84, 118,      B.3  ... 925
  75334.     150-151, 154, 459-462, 635-636,     background process group
  75335.     735, 816, 963                          definition of  ... 30
  75336.  ASCII to EBCDIC Conversion             background process
  75337.      ... 459                               definition of  ... 30
  75338.  ASCII to IBM EBCDIC Conversion         background  ... 30, 40
  75339.      ... 460                            background  ... 30, 40, 151, 185,
  75340.  ASSIGNMENT  ... 279                       190-191, 229-230, 265, 268,
  75341.  ASSIGNMENT_WORD  ... 281-282, 285         565, 730, 793-794, 977
  75342.  ASSIGN_OP  ... 25, 364, 367-368        backquote
  75343.  asterisk                                  definition of  ... 30
  75344.     definition of  ... 30               BACKREF  ... 142-143
  75345.  Asynchronous Lists  ... 267            backslash
  75346.  at  ... 981-982                           definition of  ... 30
  75347.  AT&T  ... 11, 659, 677                 <backspace>
  75348.  awk                                       definition of  ... 30
  75349.     - Pattern scanning and              Balloting Instructions  ... 1091
  75350.        processing language              basename
  75351.         ... 317, 988                       - Return nondirectory portion
  75352.         ... 6, 28, 47, 50, 68, 150,           of pathname  ... 358, 988
  75353.        169, 180, 185, 188, 191,                ... 359-362, 474-475
  75354.        193, 202, 210, 249, 317-321,     basename
  75355.        325-330, 332-334, 336, 338-         definition of  ... 30
  75356.        339, 346, 350, 353-354,          basename
  75357.        356-357, 381, 678, 883              definition of  ... 358
  75358.     Arithmetic Functions  ... 334       basic regular expression
  75359.     definition of  ... 317                 definition of  ... 30
  75360.     Escape Sequences  ... 347
  75361.  
  75362.  
  75363.                Copyright c 1991 IEEE.  All rights reserved.
  75364.       This is an unapproved IEEE Standards Draft, subject to change.
  75365.  
  75366.  
  75367.  
  75368.  
  75369.  
  75370.  1112                                             Alphabetic Topical Index
  75371.  
  75372.  
  75373.  
  75374.  
  75375.  
  75376.                                                              P1003.2/D11.2
  75377.  
  75378.  Basic Regular Expressions  ... 130     braces
  75379.  bc                                        definition of  ... 31
  75380.     - Arbitrary-precision               bracket expression  ... 131
  75381.        arithmetic language              brackets
  75382.         ... 362, 988                       definition of  ... 31
  75383.         ... 28, 50, 180, 204, 362-      BRE [ERE] matching a single
  75384.        364, 367, 371, 375-382, 678,        character
  75385.        982                                 definition of  ... 129
  75386.     definition of  ... 362              BRE [ERE] matching multiple
  75387.     Grammar  ... 364                       characters
  75388.     Lexical Conventions  ... 367           definition of  ... 129
  75389.     Operations  ... 369                 BRE Expression Anchoring  ... 135
  75390.     Operators  ... 370                  BRE Ordinary Characters  ... 130
  75391.  {BC_BASE_MAX}  ... 208, 370            BRE Precedence  ... 135
  75392.  BC_BASE_MAX  ... 204                   BRE Special Characters  ... 130
  75393.  {BC_BASE_MAX}  ... 204                 BRE
  75394.  BC_BASE_MAX  ... 206, 914                 abbreviation  ... 57
  75395.  {BC_BASE_MAX}  ... 914, 958            break  ... 228, 273, 297, 331
  75396.  {BC_DIM_MAX}  ... 208, 369                definition of  ... 296
  75397.  BC_DIM_MAX  ... 204                    BRE/ERE Grammar Lexical
  75398.  {BC_DIM_MAX}  ... 204                     Conventions  ... 140
  75399.  BC_DIM_MAX  ... 206, 914               BRE/ERE  ... 140
  75400.  {BC_DIM_MAX}  ... 914, 958             BRE  ... 128-131, 134-136, 148-
  75401.  {BC_SCALE_MAX}  ... 208, 370              149, 159-160, 538-539
  75402.  BC_SCALE_MAX  ... 204                  BREs Matching a Single Character
  75403.  {BC_SCALE_MAX}  ... 204                   or Collating Element  ... 130
  75404.  BC_SCALE_MAX  ... 206, 914             BREs Matching Multiple Characters
  75405.  {BC_SCALE_MAX}  ... 914, 958               ... 134
  75406.  {BC_STRING_MAX}  ... 367               BRE Precedence  ... 136
  75407.  BC_STRING_MAX  ... 204                 BRKINT  ... 727
  75408.  {BC_STRING_MAX}  ... 204               BSD/32V  ... 705
  75409.  BC_STRING_MAX  ... 206, 914            BSD
  75410.  {BC_STRING_MAX}  ... 914, 958             4.2  ... 461
  75411.  BEGIN  ... 318-319, 321, 327-328,         4.3  ... 379, 403, 408, 437,
  75412.     330-331, 339, 348, 352, 354-              469, 474, 518, 622, 626
  75413.     356, 878-879                           4.4  ... 816
  75414.  BEL  ... 63, 731                       BSD  ... 5-6, 10-11, 54, 216, 223,
  75415.  Bibliography  ... 973                     254, 378, 385-386, 391, 394,
  75416.  /bin  ... 126                             402-404, 408, 414, 437, 451,
  75417.  blank line                                461-462, 469-470, 477-479,
  75418.     definition of  ... 30                  495-497, 519-520, 545, 548,
  75419.  <blank>                                   553, 558, 569, 585, 594, 603-
  75420.     definition of  ... 30                  605, 609, 622, 635-636, 659-
  75421.  block special file  ... 420               662, 671, 704-705, 735, 740-
  75422.     definition of  ... 30                  741, 744, 750-755, 761-762,
  75423.  BNF  ... 11                               768-769, 803, 817, 834-835,
  75424.  BODY  ... 892-893                         837, 840-842, 865-866, 884-885,
  75425.                                            980-981, 986
  75426.  
  75427.  
  75428.  
  75429.                Copyright c 1991 IEEE.  All rights reserved.
  75430.       This is an unapproved IEEE Standards Draft, subject to change.
  75431.  
  75432.  
  75433.  
  75434.  
  75435.  
  75436.  Alphabetic Topical Index                                             1113
  75437.  
  75438.  
  75439.  
  75440.  
  75441.  
  75442.  P1003.2/D11.2
  75443.  
  75444.  BUFSIZ  ... 210                        C Binding for Pipe Communications
  75445.  Built-in Utilities  ... 58, 978           with Programs  ... 921
  75446.  built-in utility                       C Binding for Regular Expression
  75447.     definition of  ... 31                  Matching  ... 927, 995
  75448.  builtin  ... 428                       C Binding for Shell Command
  75449.  BUILTIN_FUNC_NAME  ... 339, 344-          Interface  ... 917, 995
  75450.     345, 349                            C Bindings for Numeric-Valued
  75451.  built-in  ... 23, 31, 34, 41, 52,         Configurable Variables  ... 958
  75452.     58-60, 208, 215-216, 228-229,       C Compile-Time Symbolic Constants
  75453.     255, 259, 261-264, 270, 276-            ... 916
  75454.     277, 289, 295-296, 298, 303,        C Execution-Time Symbolic
  75455.     305, 307, 312, 314, 317, 329-          Constants  ... 916
  75456.     330, 334, 339, 349, 353-354,        C Language Bindings Option
  75457.     391, 424-425, 427                       ... 909, 995
  75458.  builtin  ... 428                       C Language Definitions  ... 910,
  75459.  built-in  ... 429, 499, 502, 513,         995
  75460.     535, 537, 565, 624, 627, 647,       C Language Development Utilities
  75461.     681, 685, 711, 771, 778, 792,          Option  ... 855, 994
  75462.     801, 818, 820, 823, 827, 829,       C Macros for Symbolic Limits
  75463.     838, 840, 978, 980                      ... 914
  75464.  byte                                   C Numerical Limits  ... 913, 995
  75465.     definition of  ... 31               C Shell  ... 216, 240, 278, 295,
  75466.                                            391, 564, 753
  75467.                                         C Standard Operators and Functions
  75468.  C                                          ... 171
  75469.                                         C Standard  ... 3, 25, 31-32, 49-
  75470.  C Binding for Access Environment          54, 56-57, 70, 82, 93, 99-100,
  75471.     Variables  ... 927, 995                122, 151-153, 156, 169-172,
  75472.  C Binding for Command Option              176, 179, 202, 207, 209, 246,
  75473.     Parsing  ... 939, 995                  322-325, 331, 334, 348, 353-
  75474.  C Binding for Execute Command             354, 356-357, 386, 451, 636,
  75475.      ... 918                               647, 675, 677-678, 744, 798,
  75476.  C Binding for Generate Pathnames          856, 864-865, 868, 872, 883,
  75477.     Matching a Pattern  ... 944,           885, 890, 910, 912-913, 918-
  75478.     995                                    920, 923, 934-935
  75479.  C Binding for Get Numeric-Valued          definition of  ... 57
  75480.     Configurable Variables  ... 957     c89
  75481.  C Binding for Get POSIX                   - Compile Standard C programs
  75482.     Configurable Variables                     ... 856, 995
  75483.      ... 955, 996                              ... 4, 179, 631, 636, 839,
  75484.  C Binding for Get String-Valued              856-859, 861-863, 865-867,
  75485.     Configurable Variables  ... 955           871, 879, 885, 889, 901-902,
  75486.  C Binding for Locale Control                 904, 970, 972, 982-983
  75487.      ... 958, 996                          definition of  ... 856
  75488.  C Binding for Match Filename or        can
  75489.     Pathname  ... 936, 995                 definition of  ... 26
  75490.  C Binding for Perform Word             CAN  ... 63, 76, 84, 731
  75491.     Expansions  ... 949, 996
  75492.  
  75493.  
  75494.  
  75495.                Copyright c 1991 IEEE.  All rights reserved.
  75496.       This is an unapproved IEEE Standards Draft, subject to change.
  75497.  
  75498.  
  75499.  
  75500.  
  75501.  
  75502.  1114                                             Alphabetic Topical Index
  75503.  
  75504.  
  75505.  
  75506.  
  75507.  
  75508.                                                              P1003.2/D11.2
  75509.  
  75510.  carriage-control characters            Character Set Description File
  75511.      ... 960                                ... 61
  75512.  <carriage-return>                      Character Set  ... 61, 978
  75513.     definition of  ... 32               character set
  75514.  case conversion  ... 77                   definition of  ... 54
  75515.  case  ... 227, 246, 259, 272-273,         portable  ... 61
  75516.     281, 287, 292                       character special file  ... 420
  75517.     Conditional Construct  ... 272         definition of  ... 32
  75518.     definition of  ... 272              character
  75519.  cat                                       definition of  ... 32
  75520.     - Concatenate and print files       {CHAR_BIT}  ... 53, 497
  75521.         ... 383, 988                    charmap file  ... 61, 63, 66-68,
  75522.         ... 185, 302, 383-387, 703,        73, 86, 88, 115, 571, 573-574,
  75523.        744                                 577-579, 581-582, 735, 997,
  75524.     definition of  ... 383                 1000, 1049, 1081
  75525.  C_BIND  ... 212, 530, 861              CHARMAP  ... 64, 115
  75526.  cc  ... 179-180, 839, 864-866          {CHAR_MAX}  ... 99-100
  75527.  CC                                     CHAR  ... 108-109
  75528.     variable  ... 189                   CHARSET
  75529.  CCITT  ... 608                            variable  ... 1000
  75530.  cd                                     CHARSYMBOL  ... 107-109
  75531.     - Change working directory          _c_h_d_i_r()  ... 168
  75532.         ... 388, 988                    chgrp
  75533.         ... 58-60, 123, 168, 263,          - Change file group ownership
  75534.        289-290, 388-391, 427                   ... 392, 988
  75535.     definition of  ... 388                     ... 392-395, 408
  75536.  C_DEV  ... 212-213, 916, 957-958          definition of  ... 392
  75537.  CDPATH                                 {CHILD_MAX}  ... 208, 268, 793
  75538.     variable  ... 123, 388-391          {CHILD_MAX}  ... 853
  75539.  CFLAGS  ... 832-834, 837, 840          chmod
  75540.  CH-1211  ... 13, 973                      - Change file modes  ... 395,
  75541.  Change Command  ... 486                      988
  75542.  Changing the Current Working                  ... 4, 6, 395-396, 401-404,
  75543.     Directory  ... 168                        519, 602, 610, 613-614, 776,
  75544.  character attributes  ... 77                 780
  75545.  character case conversion  ... 77         definition of  ... 395
  75546.  character class expression                Grammar  ... 400
  75547.      ... 133                            _c_h_m_o_d()  ... 4, 36-37, 165, 401,
  75548.  character class                           403
  75549.     definition of  ... 32               chown
  75550.  character classification  ... 77          - Change file ownership
  75551.  Character Mnemonics Classes                   ... 405, 988
  75552.      ... 1046                                  ... 405-408
  75553.  Character Mnemonics Guidelines            definition of  ... 405
  75554.      ... 1045                           _c_h_o_w_n()  ... 392, 405, 408
  75555.  Character Set and Symbolic Names       C_IDENTIFIER  ... 896-897, 906
  75556.      ... 62                             circumflex
  75557.                                            definition of  ... 32
  75558.  
  75559.  
  75560.  
  75561.                Copyright c 1991 IEEE.  All rights reserved.
  75562.       This is an unapproved IEEE Standards Draft, subject to change.
  75563.  
  75564.  
  75565.  
  75566.  
  75567.  
  75568.  Alphabetic Topical Index                                             1115
  75569.  
  75570.  
  75571.  
  75572.  
  75573.  
  75574.  P1003.2/D11.2
  75575.  
  75576.  cksum                                  COLUMNS
  75577.     - Write file checksums and             variable  ... 123, 597
  75578.        block counts  ... 988            Combination Modes  ... 731
  75579.     - Write file checksums and          comm
  75580.        sizes  ... 409                      - Select or reject lines common
  75581.         ... 6, 409-412, 414-415,              to two files  ... 420, 988
  75582.        835, 986                                ... 7, 420-423
  75583.     definition of  ... 409                 definition of  ... 420
  75584.  Clean Up the Interfaces  ... 5         command language interpreter
  75585.  {CLK_TCK}  ... 852                        definition of  ... 34
  75586.  CLK_TCK  ... 527                       Command Option Parsing  ... 850,
  75587.  CLOBBER  ... 282, 286                     994
  75588.  CLOCAL  ... 727                        Command Search and Execution
  75589.  cmp                                        ... 261
  75590.     - Compare two files  ... 416,       Command Substitution  ... 242
  75591.        988                              command
  75592.         ... 416-419                        - Execute a simple command
  75593.     definition of  ... 416                     ... 424
  75594.  Code file  ... 888                        - Select or reject lines common
  75595.  col  ... 982                                 to two files  ... 988
  75596.  collating element                             ... 58, 60, 124, 216, 257,
  75597.     definition of  ... 32                     264, 424-429, 501, 626, 804
  75598.  collating symbol  ... 132-133          command
  75599.  collating-element                         definition of  ... 33
  75600.     Keyword  ... 86                     command
  75601.  collating-symbol                          definition of  ... 424
  75602.     Keyword  ... 87                     command.c  ... 840
  75603.  Collation Order  ... 89                COMMENT_CHAR  ... 837
  75604.  collation sequence                     compile C programs  ... 856
  75605.     definition of  ... 33               compile FORTRAN programs  ... 964
  75606.  collation sequences                    Compile-Time Symbolic Constants
  75607.     defining  ... 82                       for Portability Specifications
  75608.  collation                                  ... 915
  75609.     definition of  ... 33               Completing the Program  ... 901
  75610.  COLLELEMENT  ... 107-108, 110-111      Compound Commands  ... 270
  75611.  COLL_ELEM  ... 142, 145                Concepts Derived from the C
  75612.  COLLSYMBOL  ... 108, 110-111              Standard  ... 169
  75613.  {COLL_WEIGHTS_MAX}  ... 33, 83,        Concurrent Execution of Processes
  75614.     88, 90, 209, 581, 998                   ... 163
  75615.  COLL_WEIGHTS_MAX  ... 204              Configuration Values  ... 204, 979
  75616.  {COLL_WEIGHTS_MAX}  ... 204            Conflicts  ... 898
  75617.  COLL_WEIGHTS_MAX  ... 206, 914         conformance document
  75618.  {COLL_WEIGHTS_MAX}  ... 914, 958          definition of  ... 26
  75619.  colon - Null utility  ... 297          Conformance  ... 14, 978
  75620.  colon                                  conformance  ... 2-3, 12, 14-19,
  75621.     definition of  ... 297                 26-27, 60, 124, 161, 178-179,
  75622.  column position                           186-187, 382, 496, 548, 595,
  75623.     definition of  ... 33                  740, 809, 847, 855, 909, 959,
  75624.                                            974, 978, 993-994
  75625.  
  75626.  
  75627.                Copyright c 1991 IEEE.  All rights reserved.
  75628.       This is an unapproved IEEE Standards Draft, subject to change.
  75629.  
  75630.  
  75631.  
  75632.  
  75633.  
  75634.  1116                                             Alphabetic Topical Index
  75635.  
  75636.  
  75637.  
  75638.  
  75639.  
  75640.                                                              P1003.2/D11.2
  75641.  
  75642.  conforming application  ... 7,         csh  ... 627
  75643.     119, 150, 173-174, 188, 195,        CSMA/CD  ... 973
  75644.     217, 707, 768, 816, 857, 864,       _CS_PATH  ... 124, 427-428, 527,
  75645.     882, 965                               955
  75646.  Conforming Implementation Options      CS_PATH  ... 124, 427-428, 527,
  75647.      ... 16                                955
  75648.  Conforming POSIX.2 Application         csplit  ... 982
  75649.     Using Extensions  ... 18            CSTOPB  ... 727
  75650.  Conforming POSIX.2 Application         _c_s_y_s_c_o_n_f()  ... 956-957
  75651.      ... 17                             <ctype.h>  ... 861
  75652.  _c_o_n_f_s_t_r()  ... 526-527, 529, 851,      current working directory  ... 162
  75653.     921, 935, 955-957                      definition of  ... 33, 52
  75654.     definition of  ... 955              cut
  75655.  confstr()                                 - Cut out selected fields of
  75656.     _n_a_m_e Values  ... 955                      each line of a file
  75657.  Consequences of Shell Errors                  ... 440, 989
  75658.      ... 255                                   ... 209, 211, 440, 442-445,
  75659.  continue  ... 297-298, 331                   524, 641
  75660.     definition of  ... 298                 definition of  ... 440
  75661.  Control Character Set  ... 63          {CUT_FIELD_MAX}  ... 208
  75662.  Control Modes  ... 726                 {CUT_LINE_MAX}  ... 209
  75663.  control operator                       C_VERSION  ... 912, 915
  75664.     definition of  ... 217
  75665.  controlling terminal  ... 162
  75666.  Conventions  ... 21, 978               D
  75667.  CONVFMT
  75668.     awk variable  ... 327               da_DK
  75669.  CONVFMT  ... 323, 333, 356                - (Example) Danish National
  75670.  Coordinated Universal Time (UTC)             Locale  ... 1001
  75671.      ... 451                            Danish Locale Model  ... 998
  75672.  Copy Command  ... 492                  date formats  ... 102
  75673.  core  ... 841                          date
  75674.  Covered Coded Character Sets              - Write the date and time
  75675.      ... 1045                                  ... 445, 989
  75676.  cp                                            ... 5, 102, 105, 123, 309,
  75677.     - Copy files  ... 430, 988                445-446, 448-451, 599, 814
  75678.         ... 430-439, 570, 622, 660,        definition of  ... 445
  75679.        662-663, 691                     DATE  ... 450
  75680.     definition of  ... 430              DBL_MANT_DIG  ... 636
  75681.  cpio  ... 75, 653, 659-661, 663-       DC1  ... 63, 76, 84, 731
  75682.     664, 815                            DC2  ... 63, 76, 84, 731
  75683.  CRC  ... 409, 412, 414-415             DC3  ... 63, 76, 84, 731
  75684.  CREAD  ... 727                         DC4  ... 63, 76, 84, 731
  75685.  _c_r_e_a_t()  ... 36, 461, 661, 756         dc  ... 379-380, 982
  75686.  create  ... 647                        dd
  75687.  cron  ... 981-982                         - Convert and copy a file
  75688.  CSA  ... 115                                  ... 452, 989
  75689.                                                ... 5, 452-453, 455-461,
  75690.                                               662, 982, 986
  75691.  
  75692.  
  75693.                Copyright c 1991 IEEE.  All rights reserved.
  75694.       This is an unapproved IEEE Standards Draft, subject to change.
  75695.  
  75696.  
  75697.  
  75698.  
  75699.  
  75700.  Alphabetic Topical Index                                             1117
  75701.  
  75702.  
  75703.  
  75704.  
  75705.  
  75706.  P1003.2/D11.2
  75707.  
  75708.     definition of  ... 452              directory  ... 21-23, 33-38, 41,
  75709.  DEAD                                      43-45, 48, 52-53, 59-60, 119-
  75710.     variable  ... 123, 606, 609            121, 123-124, 126-127, 162,
  75711.  Debugging the Parser  ... 901             164-166, 168, 181, 184, 186,
  75712.  DECIMAL_CHAR  ... 108-109                 192-193, 195-196, 209, 231-232,
  75713.  Declarations Section  ... 890             234-236, 260, 264, 277, 289,
  75714.  DECR  ... 339, 344-345, 349               294-295, 299, 313, 358, 361,
  75715.  Default Rules  ... 832                    388-392, 394-395, 397, 401-405,
  75716.  DEFAULT  ... 831                          407-408, 427-428, 430-431, 434,
  75717.  Definitions  ... 26, 978                  436-439, 444, 463-465, 468-471,
  75718.  Delete Command  ... 486                   474, 480-481, 511-512, 514-515,
  75719.  DEL  ... 63, 76, 87, 731                  518, 520, 529-530, 548, 566-
  75720.  Dependencies on Other Standards           567, 569-570, 595-597, 600-604,
  75721.      ... 161, 978                          606, 610-613, 616-619, 622-624,
  75722.  {DEPTH_MAX}  ... 209, 211                 641-642, 645, 647-651, 654,
  75723.  /dev  ... 126                             658-661, 663-664, 670, 679-680,
  75724.  /dev/null  ... 126-127, 255, 268-         686-687, 689-692, 694, 7 07,
  75725.     269, 545, 606-607, 609, 950,           709, 724, 746, 753, 755, 811,
  75726.     952, 954                               822, 832, 856, 858, 860, 864-
  75727.  /dev/tty  ... 126-127, 162, 255,          865, 885, 905, 920, 938, 944-
  75728.     651, 655, 663, 671                     946, 956, 964-965, 967, 970,
  75729.  DGREAT  ... 282, 286                      983, 988-991, 997
  75730.  DIAERESIS  ... 117                     dirname
  75731.  diff                                      - Return directory portion of
  75732.     - Compare two files  ... 462,             pathname  ... 471, 989
  75733.        989                                     ... 361-362, 472-475
  75734.         ... 6, 462-466, 468-470,           definition of  ... 471
  75735.        803, 986                            Examples  ... 474
  75736.     c or C Output Format  ... 466       DIS  ... 1045
  75737.     Default Output Format  ... 465      DIV_ASSIGN  ... 339, 344-345, 349
  75738.     definition of  ... 462              DK-2900  ... 997
  75739.     Directory Comparison Format         DLE  ... 63, 76, 84, 731
  75740.         ... 464                         DLESSDASH  ... 282, 286
  75741.     e Output Format  ... 466            DLESS  ... 282, 286
  75742.  DIGIT  ... 881                         do  ... 271-272, 356
  75743.  {DIGIT}  ... 881                       document
  75744.  directory entry  ... 34-35, 38,           conformance  ... 26
  75745.     41, 43, 45, 165, 193, 566-567,      Documentation  ... 15
  75746.     596, 686, 688, 690-692, 694,        documentation
  75747.     991                                    system  ... 27
  75748.     definition of  ... 34               document  ... 1-2, 4, 10-16, 18-
  75749.  directory                                 19, 24-28, 40, 56, 61, 68, 71,
  75750.     current working  ... 33                75, 146, 175, 178, 186-188,
  75751.     definition of  ... 34                  197, 209, 217, 220-221, 224,
  75752.     empty  ... 35                          239, 243, 252, 254-256, 261,
  75753.     parent  ... 43                         273, 280, 288, 293, 309, 354,
  75754.     root  ... 48                           386, 403, 423, 461, 463, 496,
  75755.     working  ... 52                        508-509, 519, 544, 558, 565,
  75756.                                            570, 589, 595, 704-705, 723-
  75757.  
  75758.  
  75759.                Copyright c 1991 IEEE.  All rights reserved.
  75760.       This is an unapproved IEEE Standards Draft, subject to change.
  75761.  
  75762.  
  75763.  
  75764.  
  75765.  
  75766.  1118                                             Alphabetic Topical Index
  75767.  
  75768.  
  75769.  
  75770.  
  75771.  
  75772.                                                              P1003.2/D11.2
  75773.  
  75774.     724, 741, 755, 799, 816, 855,       ECHO  ... 729, 878
  75775.     864-865, 873, 882, 902, 906,        ECMA  ... 1045
  75776.     908, 913, 943, 946, 970-971,        ed
  75777.     973-975, 985                           - Edit text  ... 479, 989
  75778.  dollar-sign                                   ... 6, 28, 50, 146-147,
  75779.     definition of  ... 34                     165, 187-188, 209, 335, 463,
  75780.  done  ... 271-272                            466, 479-485, 488, 490-491,
  75781.  dot                                          494-497, 636, 652-653, 663,
  75782.     - Execute commands in current             704, 883, 983
  75783.        environment  ... 299                Addresses  ... 483
  75784.  dot  ... 35, 38, 45                       Commands  ... 484
  75785.  dot  ... 277, 299                         definition of  ... 479
  75786.  dot                                       Regular Expressions  ... 482
  75787.     definition of  ... 34               {ED_FILE_MAX}  ... 187, 209, 496
  75788.  dot                                    ed.hup  ... 481
  75789.     definition of  ... 299              Edit Command  ... 486
  75790.  dot-dot  ... 35, 38, 43, 45            Edit Without Checking Command
  75791.     definition of  ... 34                   ... 487
  75792.  DOUBLE  ... 833                        EDITOR
  75793.  double-quote                              variable  ... 124
  75794.     definition of  ... 34               Editorial Conventions  ... 21
  75795.  Double-Quotes  ... 221                 {ED_LINE_MAX}  ... 209, 496
  75796.  DSEMI  ... 282, 284                    effective group ID  ... 34, 37,
  75797.  DUP_COUNT  ... 141-142, 144-146           41, 48, 50, 162, 164, 550, 552,
  75798.  Duplicating an Input File                 706
  75799.     Descriptor  ... 252                    definition of  ... 34
  75800.  Duplicating an Output File             effective user ID  ... 34, 39, 48,
  75801.     Descriptor  ... 253                    51, 162, 164, 395, 550-552, 706
  75802.                                            definition of  ... 34
  75803.                                         EFL  ... 883
  75804.  E                                      egrep  ... 146, 149, 538, 543, 882
  75805.                                         Eighth Edition UNIX  ... 428
  75806.  E.4  ... 8, 993, 995-996               [EINTR]
  75807.  [EACCES]  ... 124                      EINTR  ... 22, 922, 926
  75808.  EBCDIC  ... 66-67, 459-462             [EINVAL]  ... 924, 956
  75809.  [ECHILD]  ... 924                      elif  ... 274
  75810.  echo                                   ELLIPSIS  ... 108, 110-111
  75811.     - Write arguments to standard       else  ... 274, 356
  75812.        output  ... 475, 989             empty directory
  75813.         ... 6, 53, 224                     definition of  ... 35
  75814.  echo:   ... 352                        empty line
  75815.  echo  ... 475-479, 585, 603, 677-         definition of  ... 35
  75816.     678, 801, 835, 842, 953             empty string
  75817.     definition of  ... 475                 definition of  ... 35
  75818.  ECHOE  ... 729                         END  ... 64, 72, 77, 87, 96, 101,
  75819.  ECHOK  ... 729                            103, 106, 110-115, 117-118,
  75820.  ECHONL  ... 729                           319, 322, 327-328, 330-332,
  75821.                                            339, 348, 352, 354, 577
  75822.  
  75823.  
  75824.  
  75825.                Copyright c 1991 IEEE.  All rights reserved.
  75826.       This is an unapproved IEEE Standards Draft, subject to change.
  75827.  
  75828.  
  75829.  
  75830.  
  75831.  
  75832.  Alphabetic Topical Index                                             1119
  75833.  
  75834.  
  75835.  
  75836.  
  75837.  
  75838.  P1003.2/D11.2
  75839.  
  75840.  [ENOENT]  ... 428, 501, 627, 804       EREs Matching a Single Character
  75841.  [ENOEXEC]  ... 124, 262-263               or Collating Element  ... 136
  75842.  ENQ  ... 63, 76, 84, 731               EREs Matching Multiple Characters
  75843.  entire regular expression                  ... 138
  75844.     definition of  ... 128              ERE Precedence  ... 139
  75845.  env                                    _e_r_r_f_u_n_c()  ... 946-947
  75846.     - Set environment for command       Error Handling  ... 899
  75847.        invocation  ... 498, 989         Error Numbers  ... 913
  75848.         ... 58, 257, 428, 498-502,      ERR  ... 313
  75849.        576, 626, 804                    esac  ... 272-273
  75850.     definition of  ... 498              Escape Character (Backslash)
  75851.  ENV                                        ... 221
  75852.     variable  ... 232, 428              Escape Sequences  ... 199
  75853.  ENVIRON                                ESC  ... 63, 76, 85, 731
  75854.     awk variable  ... 327               Establish the Locale  ... 168
  75855.  ENVIRON  ... 321, 327, 352-353         ETB  ... 63, 76, 84, 731
  75856.  EOF  ... 126, 364-365, 369, 418,       /etc/Makefile  ... 838
  75857.     730, 943                            ETX  ... 63, 76, 84, 731
  75858.  EOL  ... 108-114, 730                  eval
  75859.  EOT  ... 63, 76, 84, 731                  - Construct command by
  75860.  [EPERM]  ... 437                             concatenating arguments
  75861.  Epoch  ... 48                                 ... 300
  75862.     definition of  ... 35                      ... 300
  75863.  equivalence class definition              definition of  ... 300
  75864.      ... 83                             ex  ... 497, 934, 983
  75865.  equivalence class expression           Example Regular Expression
  75866.      ... 133                               Matching  ... 933
  75867.  equivalence class                      (Example)
  75868.     definition of  ... 35                  Danish Charmap Files  ... 1049
  75869.  equivalence classes  ... 83               Danish National Profile
  75870.  ERASE  ... 30, 55, 729-730, 732,              ... 998
  75871.     734                                 Examples  ... 241
  75872.  ERE Alternation  ... 139               [EXDEV]  ... 618
  75873.  ERE Bracket Expression  ... 138        exec  ... 259, 289, 301
  75874.  ERE Expression Anchoring  ... 140      _e_x_e_c  ... 428, 501, 626, 804
  75875.  ERE Grammar  ... 145                   exec
  75876.  ERE Ordinary Characters  ... 137          definition of  ... 301
  75877.  ERE Precedence  ... 139                _e_x_e_c
  75878.  ERE Special Characters  ... 137           family  ... 34-35, 48, 58, 124,
  75879.  ERE                                          212, 264, 278, 296, 429,
  75880.     abbreviation  ... 57                      799, 805, 917, 919
  75881.     definition of  ... 57               _e_x_e_c()  ... 301, 805
  75882.  ERE  ... 57, 128-129, 136-140,         _e_x_e_c_l()  ... 918
  75883.     145-146, 148-149, 159-160, 249,     _e_x_e_c_l_p()  ... 502, 917
  75884.     317-318, 322, 329, 335-336,         executable file
  75885.     339, 344-345, 348-349, 354,            definition of  ... 35
  75886.     539, 544, 874-875, 877-878, 882     Execute Shell Command  ... 848
  75887.  
  75888.  
  75889.  
  75890.  
  75891.                Copyright c 1991 IEEE.  All rights reserved.
  75892.       This is an unapproved IEEE Standards Draft, subject to change.
  75893.  
  75894.  
  75895.  
  75896.  
  75897.  
  75898.  1120                                             Alphabetic Topical Index
  75899.  
  75900.  
  75901.  
  75902.  
  75903.  
  75904.                                                              P1003.2/D11.2
  75905.  
  75906.  execute                                F
  75907.     definition of  ... 35
  75908.  Execution Environment Utilities        f77  ... 970
  75909.      ... 317, 980                       false
  75910.  Execution-Time Symbolic Constants         - Return false value  ... 509,
  75911.     for Portability Specifications            989
  75912.      ... 916                                   ... 58, 60, 247, 509-510
  75913.  _e_x_e_c_v()  ... 948                          definition of  ... 509
  75914.  _e_x_e_c_v_e()  ... 262-264, 841, 948        FAX  ... 997
  75915.  _e_x_e_c_v_p()  ... 502, 917, 948            _f()  ... 864
  75916.  exit                                   FCEDIT
  75917.     - Cause the shell to exit              variable  ... 232
  75918.         ... 302                         FD_CLOEXEC  ... 920
  75919.         ... 302, 306, 332, 350, 711     feature test macro
  75920.     definition of  ... 302                 definition of  ... 36
  75921.  _e_x_i_t()  ... 924                        feature test macros  ... 910
  75922.  EXIT  ... 302, 311, 313-314, 646       Features Inherited from POSIX.1
  75923.  __e_x_i_t()  ... 924                           ... 161
  75924.  expand                                 FFLAGS  ... 832-834
  75925.     definition of  ... 217              fgrep  ... 538-539, 543, 545
  75926.  export                                 fi  ... 272
  75927.     - Set export attribute for          Field Splitting  ... 248
  75928.        variables  ... 303               field
  75929.         ... 277, 289, 303, 305             definition of  ... 217
  75930.     definition of  ... 303              FIFO special file
  75931.  expr                                      definition of  ... 36
  75932.     - Evaluate arguments as an          FIFO  ... 36, 38, 45, 164, 416,
  75933.        expression  ... 503, 989            420, 433, 463, 515, 596, 600,
  75934.         ... 204, 246, 503-504,             614, 616-617, 708, 737, 741,
  75935.        506-508                             746, 990
  75936.     definition of  ... 503              file access permissions  ... 45
  75937.     Expressions  ... 505                File Access Permissions  ... 163
  75938.  Expression Patterns  ... 331           file access permissions
  75939.  Expressions  ... 322                      definition of  ... 36
  75940.  {EXPR_NEST_MAX}  ... 208-209, 505      File Contents  ... 167
  75941.  EXPR_NEST_MAX  ... 204                 file descriptor  ... 37, 43, 45,
  75942.  {EXPR_NEST_MAX}  ... 204                  162, 167, 249-255, 301-302,
  75943.  EXPR_NEST_MAX  ... 206, 914               432-433, 623, 691, 746, 865,
  75944.  {EXPR_NEST_MAX}  ... 914, 958             920, 923
  75945.  extended regular expression               definition of  ... 37
  75946.     definition of  ... 36               file descriptors  ... 162
  75947.  Extended Regular Expressions           File Format Notation  ... 198, 979
  75948.      ... 136                            file group class
  75949.  extended security controls                definition of  ... 37
  75950.     definition of  ... 36               file hierarchy
  75951.  EXTENDED_REG_EXP  ... 108, 112            definition of  ... 38
  75952.  External Symbols  ... 862, 969         file mode bits
  75953.                                            definition of  ... 38
  75954.  
  75955.  
  75956.  
  75957.                Copyright c 1991 IEEE.  All rights reserved.
  75958.       This is an unapproved IEEE Standards Draft, subject to change.
  75959.  
  75960.  
  75961.  
  75962.  
  75963.  
  75964.  Alphabetic Topical Index                                             1121
  75965.  
  75966.  
  75967.  
  75968.  
  75969.  
  75970.  P1003.2/D11.2
  75971.  
  75972.  file mode creation mask  ... 162       FILENAME
  75973.  file mode                                 awk variable  ... 327
  75974.     definition of  ... 38               filename
  75975.  file offset                               definition of  ... 38
  75976.     definition of  ... 38               FILE  ... 880, 917, 921, 926
  75977.  file other class                       filter
  75978.     definition of  ... 39                  definition of  ... 40
  75979.  file owner class                       find
  75980.     definition of  ... 39                  - Find files  ... 511, 989
  75981.  file permission bits  ... 36-38               ... 5, 58, 166, 209-210,
  75982.     definition of  ... 39                     227, 292, 404, 408, 470,
  75983.  file permissions  ... 34, 36-39,             511-517, 519-520, 661, 803-
  75984.     42, 50                                    804, 938, 983
  75985.  File Removal  ... 165                     definition of  ... 511
  75986.  file serial number                     {FIND_DEPTH_MAX}  ... 209
  75987.     definition of  ... 39               {FIND_FILESYS_MAX}  ... 210
  75988.  file system  ... 8, 39-40, 47, 53,     {FIND_NEWER_MAX}  ... 210
  75989.     58-59, 127, 165, 168-169, 186,      flex  ... 884
  75990.     190, 195-196, 210, 216, 278,        FLT_MANT_DIG  ... 636
  75991.     428, 470, 520, 601-602, 604,        FMN_PATHNAME  ... 938
  75992.     619, 622-623, 642-643, 653,         _f_n_m_a_t_c_h()  ... 292, 850, 936-938,
  75993.     663-664, 746, 816, 818, 983            947
  75994.     definition of  ... 39                  definition of  ... 936
  75995.     read-only  ... 47                      _f_l_a_g_s Argument  ... 937
  75996.  File Time Values  ... 166              <fnmatch.h>  ... 936-937
  75997.  file times update                      FNM_NOESCAPE  ... 936-937
  75998.     definition of  ... 39               FNM_NOMATCH  ... 937
  75999.  file type (see _f_i_l_e)                   FNM_PATHNAME  ... 936-938
  76000.  file type                              FNM_PERIOD  ... 936-937
  76001.     definition of  ... 40               FNM  ... 911
  76002.  file  ... 983                          FNR
  76003.  file                                      awk variable  ... 327
  76004.     access permissions  ... 36          FNR  ... 337, 353
  76005.     block special  ... 30               fo_DK
  76006.     character special  ... 32              - (Example) Faroese LC_TIME and
  76007.     definition of  ... 36                     LC_MESSAGES  ... 1042
  76008.     FIFO special  ... 36                fold
  76009.     hierarchy  ... 38                      - Filter for folding lines
  76010.     locale definition  ... 72                  ... 989
  76011.     mode  ... 38                           - Fold lines  ... 521
  76012.     offset  ... 38                             ... 210-211, 444, 521-525,
  76013.     permission bits  ... 39                   553, 592
  76014.     regular  ... 47                        definition of  ... 521
  76015.     serial number  ... 39               foo  ... 183
  76016.     times update  ... 39                for  ... 227, 231, 271-272, 280-
  76017.  File-Name Command  ... 487                281, 287, 296, 298, 324, 331,
  76018.  filename portability                      356, 648, 805
  76019.     definition of  ... 38                  definition of  ... 271
  76020.                                            Loop  ... 271
  76021.  
  76022.  
  76023.                Copyright c 1991 IEEE.  All rights reserved.
  76024.       This is an unapproved IEEE Standards Draft, subject to change.
  76025.  
  76026.  
  76027.  
  76028.  
  76029.  
  76030.  1122                                             Alphabetic Topical Index
  76031.  
  76032.  
  76033.  
  76034.  
  76035.  
  76036.                                                              P1003.2/D11.2
  76037.  
  76038.  foreground process group               Get Numeric-Valued Configurable
  76039.     definition of  ... 40                  Variables  ... 851
  76040.  foreground process                     Get POSIX Configurable Variables
  76041.     definition of  ... 40                   ... 851, 994
  76042.  foreground  ... 30, 40                 Get String-Valued Configurable
  76043.  foreground  ... 30, 40, 288               Variables  ... 851
  76044.  _f_o_r_k()  ... 46, 163, 301, 917-919,     getconf
  76045.     923-924, 954                           - Get configuration values
  76046.  <form-feed>                                   ... 526, 989
  76047.     definition of  ... 40                      ... 60, 124, 204, 207-208,
  76048.  fort77                                       212-213, 427-429, 497, 526-
  76049.     - FORTRAN compiler  ... 964,              530, 636, 861
  76050.        996                                 definition of  ... 526
  76051.         ... 959, 964-965, 967-971       _g_e_t_e_n_v()  ... 849, 927
  76052.     definition of  ... 964                 definition of  ... 927
  76053.  FORT_DEV  ... 212, 916, 958            _g_e_t_g_r_g_i_d()  ... 513
  76054.  FORTRAN-66  ... 970                    _g_e_t_g_r_n_a_m()  ... 513
  76055.  FORTRAN-8X  ... 970                    GETLINE  ... 339, 346
  76056.  FORTRAN  ... 14, 16, 55, 212, 832,     _g_e_t_l_o_g_i_n()  ... 586
  76057.     855, 883, 916, 959-960, 962-        getopt  ... 535
  76058.     964, 966-967, 969-970, 993, 996     _g_e_t_o_p_t()  ... 179-180, 310, 533,
  76059.  FORTRAN Development and Runtime           536-537, 641, 711, 850, 939-
  76060.     Utilities Options  ... 959, 996        940, 943
  76061.  FORT_RUN  ... 212, 916, 958               definition of  ... 939
  76062.  _f_p_a_t_h_c_o_n_f()  ... 851-852, 957          getopts
  76063.     definition of  ... 957                 - Parse utility options
  76064.  _f_r_e_a_d()  ... 917                              ... 531, 989
  76065.  FS                                            ... 58-59, 123, 231, 307,
  76066.     awk variable  ... 327                     531-537, 940, 943
  76067.  _f_s_t_a_t()  ... 36-37, 40                    definition of  ... 531
  76068.  FTAM  ... 997                          _g_e_t_p_w_n_a_m()  ... 235, 515
  76069.  FTP  ... 997                           _g_e_t_p_w_u_i_d()  ... 513
  76070.  FUNC_NAME  ... 339-340, 344-345,       _g_i_d__t  ... 41, 51
  76071.     349                                 GLOB_ABORTED  ... 946-947
  76072.  Function Definition Command            Global Command  ... 487
  76073.      ... 276                            Global Non-Matched Command
  76074.  Functions  ... 334                         ... 493
  76075.  _f_w_r_i_t_e()  ... 917                      GLOB_APPEND  ... 945-946, 948-949
  76076.                                         _g_l_o_b()  ... 850, 944-949, 953
  76077.                                            definition of  ... 944
  76078.  G                                         Error Return Values  ... 947
  76079.                                            _f_l_a_g_s Argument  ... 945
  76080.  gawk  ... 357                          GLOB_DOOFFS  ... 945-946, 948
  76081.  General Terms  ... 29                  GLOB_ERR  ... 945-947
  76082.  General  ... 1, 977                    _g_l_o_b_f_r_e_e()  ... 850, 944-946
  76083.  Generate Pathnames Matching a          <glob.h>  ... 944-945, 947
  76084.     Pattern  ... 850, 994               GLOB_MARK  ... 945
  76085.  
  76086.  
  76087.  
  76088.  
  76089.                Copyright c 1991 IEEE.  All rights reserved.
  76090.       This is an unapproved IEEE Standards Draft, subject to change.
  76091.  
  76092.  
  76093.  
  76094.  
  76095.  
  76096.  Alphabetic Topical Index                                             1123
  76097.  
  76098.  
  76099.  
  76100.  
  76101.  
  76102.  P1003.2/D11.2
  76103.  
  76104.  GLOB_NOCHECK  ... 945, 947             Headers and Function Prototypes
  76105.  GLOB_NOESCAPE  ... 945                     ... 912
  76106.  GLOB_NOMATCH  ... 947                  Help Command  ... 488
  76107.  GLOB_NOSORT  ... 945                   Help-Mode Command  ... 488
  76108.  GLOB_NOSPACE  ... 947                  Here-Document  ... 252
  76109.  GLOB  ... 911                          HEX_CHAR  ... 108-109
  76110.  _g_l_o_b__t                                 hexdump  ... 634
  76111.     definition of  ... 944              hierarchy
  76112.  GMT0  ... 446, 451                        file  ... 38
  76113.  GNU make  ... 839                      HIGH  ... 88, 92, 132
  76114.  GNU  ... 357, 834-835, 839, 842-       HISTFILE
  76115.     843, 884                               variable  ... 232
  76116.  Grammar Conventions  ... 24            HISTSIZE
  76117.  Grammar Rules  ... 892                    variable  ... 232
  76118.  GRAVE  ... 116-117                     home directory
  76119.  GREATAND  ... 282, 286                    definition of  ... 41
  76120.  grep                                   HOME
  76121.     - File pattern searcher                variable  ... 23, 119, 231,
  76122.         ... 537, 989                          235-236, 304, 313, 388-389,
  76123.         ... 6, 54, 146, 148, 184,             391, 480-481, 606, 623-624,
  76124.        538-539, 541-543, 545, 559,            709
  76125.        835, 934, 983                    $HOME/nohup.out  ... 625-626
  76126.     definition of  ... 537              HOME  ... 23, 159, 241-242, 304-
  76127.  group ID                                  305, 313, 625-626
  76128.     definition of  ... 41               HP-UX  ... 798
  76129.     effective  ... 34                   HUPCL  ... 727
  76130.     real  ... 47                        HUP  ... 311
  76131.     saved set-  ... 48
  76132.     supplementary  ... 50
  76133.  Grouping Commands  ... 270             I
  76134.  groups  ... 553
  76135.  groups                                 IBM  ... 66, 460-462
  76136.     multiple (see supplementary         ICANON  ... 729
  76137.        group ID)                        ICRNL  ... 728
  76138.                                         id
  76139.                                            - Return user identity
  76140.  H                                             ... 549, 990
  76141.                                                ... 162, 549-550, 552-553
  76142.  hard link                                 definition of  ... 549
  76143.     definition of  ... 41               IDENTIFIER  ... 896-898
  76144.  hd  ... 634                            IEEE P1003.2  ... 848, 977
  76145.  head                                   IEEE P1003.2a  ... 807
  76146.     - Copy the first part of files      IEEE P1003.3.2  ... 974
  76147.         ... 545, 990                    IEEE P1003.3  ... 974
  76148.         ... 187, 545-549, 740           IEEE Std 100  ... 974
  76149.     definition of  ... 545              IEEE Std 754  ... 634
  76150.  Header file  ... 888                   IEEE  ... 8-9, 13, 54, 76, 415,
  76151.                                            807, 915, 974, 977
  76152.  
  76153.  
  76154.  
  76155.                Copyright c 1991 IEEE.  All rights reserved.
  76156.       This is an unapproved IEEE Standards Draft, subject to change.
  76157.  
  76158.  
  76159.  
  76160.  
  76161.  
  76162.  1124                                             Alphabetic Topical Index
  76163.  
  76164.  
  76165.  
  76166.  
  76167.  
  76168.                                                              P1003.2/D11.2
  76169.  
  76170.  IEXTEN  ... 729                        Input Grammar  ... 895
  76171.  if  ... 272-274, 298, 307, 324,        Input Language  ... 889
  76172.     356                                 Input Modes  ... 727
  76173.     Conditional Construct  ... 273      _i_n_p_u_t()  ... 880, 883, 885
  76174.     definition of  ... 273              Input/Output and General Functions
  76175.  IFS                                        ... 336
  76176.     variable  ... 123, 229-234,         Insert Command  ... 489
  76177.        242, 248-249, 428, 508, 683,     Interactive Global Command
  76178.        709, 711                             ... 488
  76179.  IFS  ... 231, 261, 428                 Interactive Global Not-Matched
  76180.  IGNBRK  ... 727                           Command  ... 493
  76181.  IGNCR  ... 728                         interactive shell
  76182.  IGNORE  ... 89-92, 95, 111, 117,          definition of  ... 218
  76183.     819, 825-826, 841                   Interface to the Lexical Analyzer
  76184.  IGNPAR  ... 727                            ... 900
  76185.  III  ... 10, 451                       Internal Macros  ... 830
  76186.  Implementation Conformance  ... 14     Internationalization Proposal
  76187.  implementation defined  ... 15,           Areas  ... 153
  76188.     17, 26, 29, 31, 36, 38, 44, 47,     Internationalization Requirements
  76189.     61, 65, 69, 71-72, 74, 78-80,           ... 150
  76190.     104, 119-122, 124, 165, 168,        Internationalization Syntax
  76191.     181, 250, 309, 327-328, 336,            ... 155
  76192.     347, 358, 361-362, 388, 391,        Internationalization Technical
  76193.     395, 399, 403, 431, 433-434,           Background  ... 151
  76194.     438-439, 471, 475-476, 479,         interval expression  ... 135, 139
  76195.     489, 512, 566-567, 571, 576-        INT  ... 311, 313-314
  76196.     579, 581-582, 593, 595-600,         INTR  ... 727, 729-730
  76197.     604, 606, 617, 631, 649-652,        invoke
  76198.     654-656, 658-660, 663, 701,            definition of  ... 41
  76199.     725, 729, 747, 758, 765, 780,       IO_NUMBER  ... 279, 282, 285
  76200.     782, 784, 824-825, 828, 838,        IRV  ... 68, 631, 633, 636
  76201.     857-859, 862, 865-866, 870-871,     IS1  ... 63, 76, 85
  76202.     873, 875, 888, 902, 907, 960,       IS2  ... 63, 76, 85
  76203.     965-967, 969, 981, 984-985          IS3  ... 63, 76, 85
  76204.     definition of  ... 26               IS4  ... 63, 76, 85
  76205.  implementation                         _i_s_a_t_t_y()  ... 772
  76206.     definition of  ... 26               ISIG  ... 729
  76207.  in  ... 227, 271-272, 326              ISO 10646  ... 1045-1046
  76208.  INCLUDE  ... 842, 970                  ISO 1539  ... 14, 964, 968
  76209.  incomplete line                        ISO 2022  ... 973
  76210.     definition of  ... 41               ISO 2047  ... 973, 1046
  76211.  INCR_DECR  ... 364, 367, 369           ISO 3166  ... 973, 1000
  76212.  INCR  ... 339, 344-345, 349            ISO 4217  ... 14, 96
  76213.  Inference Rules  ... 828               ISO 4873  ... 14, 67, 1045
  76214.  INITIAL  ... 879                       ISO 639  ... 973, 1000
  76215.  INLCR  ... 728                         ISO 6429  ... 973, 1000, 1046
  76216.  INPCK  ... 728                         ISO 646  ... 1045-1046
  76217.  
  76218.  
  76219.  
  76220.  
  76221.                Copyright c 1991 IEEE.  All rights reserved.
  76222.       This is an unapproved IEEE Standards Draft, subject to change.
  76223.  
  76224.  
  76225.  
  76226.  
  76227.  
  76228.  Alphabetic Topical Index                                             1125
  76229.  
  76230.  
  76231.  
  76232.  
  76233.  
  76234.  P1003.2/D11.2
  76235.  
  76236.  ISO 6937-2  ... 973, 1045              {JOIN_LINE_MAX}  ... 210
  76237.  ISO 6937  ... 94                       JTC1  ... 974
  76238.  ISO 7-  ... 13
  76239.  ISO 8802-3  ... 409, 973
  76240.  ISO 8806  ... 973                      K
  76241.  ISO 8859-1  ... 14, 66, 152, 1000
  76242.  ISO 8859-2  ... 14, 66                 kill
  76243.  ISO 8859  ... 66-67, 973, 1000,           - Terminate or signal processes
  76244.     1045                                       ... 559, 990
  76245.  ISO 8-  ... 14                                ... 58-60, 162, 312, 559-
  76246.  ISO 9999-1  ... 22                           561, 563-565, 792-793, 985
  76247.  ISO_10646                                 definition of  ... 559
  76248.     Charmap  ... 1049                   _k_i_l_l()  ... 559-561
  76249.  ISO_10646  ... 1000, 1049              KILL  ... 563, 729-730, 732, 734
  76250.  ISO_8859-1                             kl_DK
  76251.     Charmap  ... 1081                      - (Example) Greenlandic LC_TIME
  76252.  ISO_8859  ... 1049, 1081                     and LC_MESSAGES  ... 1043
  76253.  ISO/AFNOR  ... 54, 974                 KornShell  ... 10, 219-220, 223,
  76254.  ISO/IEC 10367  ... 974                    226, 228, 230, 232, 235-236,
  76255.  ISO/IEC 10646  ... 67, 974, 1000          239-240, 243-244, 246-249, 254,
  76256.  ISO/IEC 646  ... 13, 34, 43, 54,          257, 264, 273, 277-278, 293,
  76257.     56, 66, 68, 76, 631, 633, 636,         295, 299, 301, 306, 308-309,
  76258.     677, 735, 1000                         313, 391, 428, 501, 536, 564,
  76259.  ISO/IEC 9899  ... 14, 57                  626, 711-712, 753, 755, 794,
  76260.  ISO/IEC 9945-1  ... 14, 57, 912           804, 975
  76261.  ISO/IEC Conforming POSIX.2             ksh  ... 257, 309
  76262.     Application  ... 18
  76263.  _i_s_s_p_a_c_e()  ... 798
  76264.  ISTRIP  ... 728                        L
  76265.  IX.1991  ... 451
  76266.  IXOFF  ... 728                         LALR  ... 898, 902-904, 975
  76267.  IXON  ... 728                          L_ANCHOR  ... 142-143
  76268.                                         LANG
  76269.                                            variable  ... 119, 121-123,
  76270.  J                                            189, 232, 320, 359, 363,
  76271.                                               384, 389, 393, 396, 406,
  76272.  JCL  ... 460                                 410, 417, 421, 425, 435,
  76273.  JIS  ... 974, 1047, 1049                     442, 448, 456, 464, 472,
  76274.  job control  ... 41, 48, 59-60,              476, 480, 499, 504, 516,
  76275.     216, 311, 560, 565, 712, 730,             523, 528, 533-534, 541,
  76276.     736, 794, 986                             546-547, 550, 556, 561-562,
  76277.     definition of  ... 41                     567-568, 572-573, 576, 579,
  76278.  Join Command  ... 489                        583-584, 587, 590, 598, 606,
  76279.  join                                         611-612, 615, 620, 624,
  76280.     - Relational database operator            629-630, 639, 643-644, 655,
  76281.         ... 554, 990                          668, 673, 679-680, 683, 688,
  76282.         ... 5, 210, 554-558                   693, 696, 709, 713-714, 719,
  76283.     definition of  ... 554                    732, 738, 743, 749, 759,
  76284.                                               763, 773, 777, 782, 786,
  76285.  
  76286.  
  76287.                Copyright c 1991 IEEE.  All rights reserved.
  76288.       This is an unapproved IEEE Standards Draft, subject to change.
  76289.  
  76290.  
  76291.  
  76292.  
  76293.  
  76294.  1126                                             Alphabetic Topical Index
  76295.  
  76296.  
  76297.  
  76298.  
  76299.  
  76300.                                                              P1003.2/D11.2
  76301.  
  76302.        791, 796, 801, 812, 821,               697, 709, 719, 764, 869
  76303.        844-845, 859, 869, 887, 961,     LC_COLLATE  ... 32-33, 71, 73, 82,
  76304.        967                                 84, 86-88, 93-94, 110-111, 115,
  76305.  LANG  ... 575                             117, 152, 155, 204, 571, 575-
  76306.  language binding  ... 1, 10, 14,          576, 578, 581, 765-766, 905,
  76307.     16, 18-19, 29-30, 32, 40, 42,          1001
  76308.     49, 100, 204, 208, 212, 249,        LC_CTYPE locale category  ... 30,
  76309.     847-852, 855, 909, 913, 927,           32, 46, 52, 71, 73, 76-77, 81-
  76310.     957, 995                               82, 115, 133, 142, 153, 155-
  76311.  Language-Independent System               156, 336, 455, 571, 576, 581,
  76312.     Services  ... 847, 994                 630-631, 638, 717, 765-766, 905
  76313.  LC_*                                   LC_CTYPE  ... 76
  76314.     definition of  ... 57               LC_CTYPE
  76315.  LC_*                                      variable  ... 55, 69, 120-121,
  76316.     variable  ... 121-122, 168,               123, 232, 320, 359, 363,
  76317.        232, 572-573, 576, 579                 384, 389, 393, 396, 406,
  76318.  LC_ALL locale category  ... 122,             410, 417, 421, 425, 435,
  76319.     576, 887, 905                             442, 448, 456, 464, 473,
  76320.  LC_ALL                                       479, 481, 499, 504, 516,
  76321.     variable  ... 119, 121, 189,              523, 528, 534, 541, 547,
  76322.        232, 320, 359, 363, 384,               551, 557, 562, 568, 572,
  76323.        389, 393, 396, 406, 410,               580, 584, 590, 598, 607,
  76324.        417, 421, 425, 435, 442,               612, 615, 620, 625, 630,
  76325.        448, 456, 464, 472, 476,               639, 644, 656, 668, 673,
  76326.        480, 499, 504, 516, 523,               683, 688, 693, 697, 709,
  76327.        528, 533-534, 541, 546-547,            714, 719, 732, 738, 743,
  76328.        550, 556, 561-562, 567-568,            749, 759, 764, 773, 777,
  76329.        572-573, 579, 583-584, 587,            782, 786, 791, 796, 801,
  76330.        590, 598, 606, 611-612, 615,           812, 821, 845, 860, 869,
  76331.        620, 624, 629-630, 639,                887, 961, 967
  76332.        643-644, 655, 668, 673,          LC_CTYPE  ... 30, 32, 46, 52, 71,
  76333.        679-680, 683, 688, 693, 696,        73, 76-77, 81-82, 109-110, 115,
  76334.        709, 713-714, 719, 732, 738,        133, 142, 153, 155-156, 336,
  76335.        743, 749, 759, 763, 773,            455, 571, 575-576, 578, 581,
  76336.        777, 782, 786, 791, 796,            630-631, 638, 717, 765-766, 905
  76337.        801, 812, 821, 844-845, 859,     LC_MESSAGES locale category
  76338.        869, 887, 961, 967                   ... 29, 42, 71, 106, 118, 435,
  76339.  LC_ALL  ... 122, 573, 575-576,            516, 551, 620, 656, 688, 958
  76340.     887, 905                            LC_MESSAGES  ... 106
  76341.  LC_COLLATE locale category             LC_MESSAGES
  76342.      ... 32-33, 71, 73, 84, 86-88,         variable  ... 69, 107, 120-121,
  76343.     93-94, 115, 117, 152, 155, 204,           123, 191, 232, 320, 359,
  76344.     571, 576, 581, 765-766, 905               363, 384, 389, 393, 396,
  76345.  LC_COLLATE  ... 82                           406, 410, 417, 421, 425,
  76346.  LC_COLLATE                                   435, 442, 448, 456, 464,
  76347.     variable  ... 69, 119, 121,               473, 476, 481, 499, 504,
  76348.        123, 232, 320, 421, 435,               516, 523, 528, 534, 541,
  76349.        481, 504, 516, 541, 556,               547, 551, 557, 562, 568,
  76350.        580, 598, 620, 656, 688,               572, 580, 584-585, 587, 591,
  76351.  
  76352.  
  76353.                Copyright c 1991 IEEE.  All rights reserved.
  76354.       This is an unapproved IEEE Standards Draft, subject to change.
  76355.  
  76356.  
  76357.  
  76358.  
  76359.  
  76360.  Alphabetic Topical Index                                             1127
  76361.  
  76362.  
  76363.  
  76364.  
  76365.  
  76366.  P1003.2/D11.2
  76367.  
  76368.        598, 607, 612, 615, 620,         LC_TIME  ... 71, 102-103, 105,
  76369.        625, 630, 639, 644, 656,            114, 118, 447, 451, 575, 578,
  76370.        668, 673, 680, 683, 689,            599, 669, 1000, 1042-1043
  76371.        693, 697, 710, 714, 720,         LC_TYPE  ... 1001
  76372.        732, 739, 743, 749, 759,         LCURL  ... 896-897
  76373.        764, 773, 777, 782, 786,         LDBL_MANT_DIG  ... 636
  76374.        791, 796, 802, 812, 821,         LDFLAGS  ... 832-833
  76375.        845, 860, 870, 887, 961, 967     leap seconds  ... 450
  76376.  LC_MESSAGES  ... 29, 42, 71, 106,      LEFT  ... 896-897, 906
  76377.     112, 118, 435, 516, 551, 575,       LESSAND  ... 282, 286
  76378.     578, 620, 656, 688, 958, 1000,      LESSGREAT  ... 282, 286
  76379.     1042-1043                           LETTER  ... 364, 366-368, 376-377
  76380.  LC_MONETARY locale category            lex
  76381.      ... 71, 96, 99, 117-118               - Generate programs for lexical
  76382.  LC_MONETARY  ... 96                          tasks  ... 868, 995
  76383.  LC_MONETARY                                   ... 4, 28, 47, 50, 150,
  76384.     variable  ... 69, 120-121, 123            160, 191, 193, 202, 861,
  76385.  LC_MONETARY  ... 71, 96, 99, 102,            866, 868-875, 877-884, 889,
  76386.     112-113, 117-118, 575, 578                904, 970
  76387.  LC_NUMERIC locale category                Actions  ... 878
  76388.      ... 71, 100-101, 118, 201,            definition of  ... 868
  76389.     323, 357, 576                          Definitions  ... 872
  76390.  LC_NUMERIC  ... 100                       ERE Precedence  ... 877
  76391.  LC_NUMERIC                                Escape Sequences  ... 875
  76392.     variable  ... 69, 120-121, 180,        Regular Expressions  ... 874
  76393.        320, 630, 673, 720                  Rules  ... 873
  76394.  LC_NUMERIC  ... 71, 100-102, 113-         Table Size Declarations
  76395.     114, 118, 201, 323, 357, 575-              ... 873
  76396.     576, 578                               User Subroutines  ... 874
  76397.  LC_COLLATE Category Definition in      Lexical Structure of the Grammar
  76398.     the POSIX Locale  ... 84                ... 889
  76399.  LC_CTYPE Category Definition in        LEX  ... 189, 832-833
  76400.     the POSIX Locale  ... 76            lex.yy.c  ... 193, 868, 871-872,
  76401.  LC_MESSAGES Category Definition in        874, 878, 884
  76402.     the POSIX Locale  ... 106           LFLAGS  ... 832-833
  76403.  LC_MONETARY Category Definition in     /lib  ... 126
  76404.     the POSIX Locale  ... 96            libc.a  ... 858, 862
  76405.  LC_NUMERIC Category Definition in      LIBDIR  ... 236
  76406.     the POSIX Locale  ... 101           libf.a  ... 965, 969
  76407.  LC_TIME Category Definition in the     libl.a  ... 858, 862, 884
  76408.     POSIX Locale  ... 102               libm.a  ... 858, 862
  76409.  LC_TIME locale category  ... 71,       Libraries  ... 830
  76410.     102-103, 118, 447, 599, 669         liby.a  ... 858, 862
  76411.  LC_TIME  ... 102                       LIGATURE  ... 116-117
  76412.  LC_TIME                                {LIMIT}  ... 204
  76413.     variable  ... 69, 120-121, 123,     Limits  ... 902
  76414.        448, 464, 598, 656, 669,         <limits.h>  ... 22, 912, 914
  76415.        812, 814
  76416.  
  76417.  
  76418.  
  76419.                Copyright c 1991 IEEE.  All rights reserved.
  76420.       This is an unapproved IEEE Standards Draft, subject to change.
  76421.  
  76422.  
  76423.  
  76424.  
  76425.  
  76426.  1128                                             Alphabetic Topical Index
  76427.  
  76428.  
  76429.  
  76430.  
  76431.  
  76432.                                                              P1003.2/D11.2
  76433.  
  76434.  Line Number Command  ... 494           locale  ... 570-572, 575-576
  76435.  line  ... 983                          Locale  ... 978
  76436.  line                                   locale
  76437.     definition of  ... 41                  definition of  ... 42
  76438.  {LINE_MAX}  ... 51, 54, 73, 187-       locale
  76439.     188, 207, 209-212, 220, 320,           definition of  ... 570
  76440.     334, 444, 496-497, 522, 546,        _l_o_c_a_l_e_c_o_n_v()  ... 99
  76441.     553, 605, 608, 641, 705, 737,       localedef
  76442.     788, 799-800, 803, 915                 - Define locale environment
  76443.  {LINE_MAX}  ... 22                            ... 577, 990
  76444.  LINE_MAX  ... 204                             ... 23, 50, 66-70, 72-73,
  76445.  {LINE_MAX}  ... 204                          75, 104, 122, 451, 573-574,
  76446.  LINE_MAX  ... 206, 914                       576-582
  76447.  {LINE_MAX}  ... 914, 958                  definition of  ... 577
  76448.  LINENO                                 LOCALEDEF  ... 212, 916, 958
  76449.     variable  ... 232                   <locale.h>  ... 912, 958
  76450.  link (see directory entry)             locale  ... 5, 16, 23, 29-30, 32-
  76451.  link count                                33, 42, 46, 50, 52, 55-56, 61,
  76452.     definition of  ... 41                  66-76, 78, 82-84, 93, 96, 99-
  76453.  link                                      110, 112-116, 119-123, 128,
  76454.     definition of  ... 41                  133, 142, 152-153, 155, 168,
  76455.  _l_i_n_k()  ... 4, 41, 566, 569               178, 180, 188, 201, 204, 212-
  76456.  {LINK_MAX}  ... 210                       213, 257, 295, 306, 320, 323,
  76457.  {LINK_MAX}  ... 853                       326, 335-336, 357, 359, 363,
  76458.  List Command  ... 489                     372, 381, 384, 389, 393, 396,
  76459.  Lists  ... 266                            406, 410, 417, 419-422, 425,
  76460.  ln                                        435, 442, 446-448, 450-451,
  76461.     - Link files  ... 566, 990             456, 464, 471-473, 476, 480-
  76462.         ... 4, 41, 54, 438, 566-570        481, 499, 504-505, 516, 523,
  76463.     definition of  ... 566                 528, 533-534, 540-541, 546-547,
  76464.  Local Modes  ... 729                      550-551, 556-557, 561-562,
  76465.  /local  ... 126                           567-568, 570-584, 587, 590,
  76466.  local  ... 277                            592, 595, 598-599, 605-607,
  76467.  /local/bin  ... 181                       611-612, 615,
  76468.  Locale Control  ... 852, 994               620, 624-625, 629-631, 633,
  76469.  locale definition file  ... 72            635-636, 639, 643-644, 655-656,
  76470.  Locale Definition Grammar  ... 107        668-669, 671, 673, 677, 679-
  76471.  Locale Definition  ... 71                 680, 683, 688, 693, 696-697,
  76472.  Locale Grammar  ... 108                   709, 713-714, 716-717, 719-720,
  76473.  Locale Lexical Conventions                732-733, 738, 743, 749, 759,
  76474.      ... 107                               763-766, 773, 777, 782, 786,
  76475.  Locale String Definition Guideline        791, 796, 801, 812, 814, 821,
  76476.      ... 1000                              844-845, 847, 852, 859-860,
  76477.  locale                                    869, 883, 887, 905, 912, 916,
  76478.     - Get locale-specific                  930, 958, 961, 967, 978, 990,
  76479.        information  ... 570, 990           994, 996-1001, 1049
  76480.  Locale  ... 69                         locate  ... 520
  76481.  
  76482.  
  76483.  
  76484.  
  76485.                Copyright c 1991 IEEE.  All rights reserved.
  76486.       This is an unapproved IEEE Standards Draft, subject to change.
  76487.  
  76488.  
  76489.  
  76490.  
  76491.  
  76492.  Alphabetic Topical Index                                             1129
  76493.  
  76494.  
  76495.  
  76496.  
  76497.  
  76498.  P1003.2/D11.2
  76499.  
  76500.  LOC_NAME  ... 108-109                  M
  76501.  logger
  76502.     - Log messages  ... 583, 990        macro
  76503.         ... 583-586, 609                   feature test  ... 36
  76504.     definition of  ... 583              MACRO  ... 842
  76505.  login name                             Macros  ... 827
  76506.     definition of  ... 42               macros
  76507.  login session                             feature test  ... 910
  76508.     definition of  ... 54               Mail  ... 609
  76509.  login                                  MAIL
  76510.     definition of  ... 42                  variable  ... 123
  76511.  logname                                MAILRC
  76512.     - Return user's login name             variable  ... 123, 607, 609
  76513.         ... 586, 990                    mailto  ... 609
  76514.         ... 586-588                     mailx
  76515.     definition of  ... 586                 - Process messages  ... 605,
  76516.  LOGNAME                                      990
  76517.     variable  ... 120, 125, 235,               ... 123, 168, 586, 605-609,
  76518.        588                                    984
  76519.  logout  ... 313                           definition of  ... 605
  76520.  {LONG_MAX}  ... 170, 176               _m_a_i_n()  ... 880, 887, 889, 901,
  76521.  {LONG_MIN}  ... 176                       904, 934, 939, 949
  76522.  LONG_NAME_OS  ... 161                  make  ... 4, 28, 50, 166, 181,
  76523.  LOWER-CASE  ... 116-117                   186, 189, 220, 236, 278, 815,
  76524.  LOWER  ... 117                            817-830, 832, 834-843, 905
  76525.  LOW  ... 92                               definition of  ... 818
  76526.  LOW_VALUE  ... 116-117                    GNU version  ... 839
  76527.  lp                                     Makefile Execution  ... 824
  76528.     - Send files to a printer           Makefile Syntax  ... 823
  76529.         ... 589, 990                    ./Makefile  ... 824
  76530.         ... 123, 211, 525, 586,         ./makefile  ... 824
  76531.        589-590, 592-594, 609, 962       ./Makefile  ... 838
  76532.     definition of  ... 589              ./makefile  ... 838
  76533.  LPDEST                                 MAKEFLAGS
  76534.     variable  ... 123, 589, 591-           variable  ... 123, 820-822,
  76535.        592, 594                               824, 837, 839, 841
  76536.  {LP_LINE_MAX}  ... 211                 MAKEFLAGS  ... 820, 822
  76537.  lpr  ... 594                           MAKE  ... 832, 835
  76538.  ls                                     {MAKE}  ... 835
  76539.     - List directory contents           MAKE  ... 837, 839
  76540.         ... 595, 990                    {MAKE}  ... 839
  76541.         ... 94, 123, 161, 166, 176,     MAKESHELL
  76542.        241, 264, 399, 403, 520,            variable  ... 840
  76543.        595, 597-598, 601-604, 657,      _m_a_l_l_o_c()  ... 933, 948, 956
  76544.        660-661, 803, 813, 817           many-to-many substitution  ... 83
  76545.     definition of  ... 595              Mark Command  ... 489
  76546.  _l_s_e_e_k()  ... 36, 745, 867, 971         MARK  ... 896
  76547.  
  76548.  
  76549.  
  76550.  
  76551.                Copyright c 1991 IEEE.  All rights reserved.
  76552.       This is an unapproved IEEE Standards Draft, subject to change.
  76553.  
  76554.  
  76555.  
  76556.  
  76557.  
  76558.  1130                                             Alphabetic Topical Index
  76559.  
  76560.  
  76561.  
  76562.  
  76563.  
  76564.                                                              P1003.2/D11.2
  76565.  
  76566.  matched                                MUL_ASSIGN  ... 339, 344-345, 349
  76567.     definition of  ... 128              MUL_OP  ... 364, 367, 369
  76568.  Matching Expression  ... 506           multibyte character  ... 32
  76569.  matching list  ... 132                 multicharacter collating element
  76570.  Mathematic Functions  ... 170             definition of  ... 42
  76571.  <math.h>  ... 861                      multicharacter collating elements
  76572.  {MAX_CANON}  ... 210-211                   ... 83
  76573.  {MAX_CANON}  ... 853                   multiple groups (see supplementary
  76574.  {MAX_INPUT}  ... 211-212                  group ID)
  76575.  {MAX_INPUT}  ... 853                   multiple weights and equivalence
  76576.  MAX  ... 911                              classes  ... 83
  76577.  may                                    mv
  76578.     definition of  ... 26                  - Move files  ... 617, 990
  76579.  mb_cur_max  ... 63                            ... 570, 617-623, 691
  76580.  {MEMSIZE}  ... 902                        definition of  ... 617
  76581.  message formats  ... 106               MVS/TSO  ... 3
  76582.  messaging  ... 106                     /mybin  ... 501
  76583.  META_CHAR  ... 140, 142, 145           mygrep  ... 501
  76584.  MIL-STD-1753  ... 970
  76585.  MIL-STD-1753  ... 970
  76586.  MIN  ... 731                           N
  76587.  Miscellaneous Conventions  ... 25
  76588.  mkdir   ... 611                        NAK  ... 63, 76, 84, 731
  76589.  mkdir                                  name
  76590.     - Make directories  ... 610,           definition of  ... 218
  76591.        990                                 login  ... 42
  76592.         ... 610-613, 616                   user  ... 51
  76593.     definition of  ... 610              {NAME_MAX}  ... 38, 44-45, 211,
  76594.  _m_k_d_i_r()  ... 36, 610, 613, 649            530, 642, 664, 815
  76595.  mkfifo                                 NAME_MAX  ... 530
  76596.     - Make FIFO special files           {NAME_MAX}  ... 853
  76597.         ... 614, 990                    NAME  ... 25, 279-282, 284-285,
  76598.         ... 614-617, 984                   325, 339-343, 345, 349
  76599.     definition of  ... 614              <National Body> Conforming POSIX.2
  76600.  _m_k_f_i_f_o()  ... 36, 614, 617                Application  ... 18
  76601.  mknod  ... 438, 984                    nawk  ... 353
  76602.  mktemp  ... 647                        negative response
  76603.  MOD_ASSIGN  ... 339, 344-345, 349         definition of  ... 42
  76604.  mode                                   <newline>  ... 519
  76605.     definition of  ... 42                  definition of  ... 42
  76606.  _m_o_d_e__t  ... 53                         NEWLINE  ... 25, 279, 282, 286,
  76607.  Modified Field Descriptors                339-341, 346, 364-367, 376
  76608.      ... 447                            NEW  ... 842
  76609.  monetary formatting  ... 96            next  ... 331
  76610.  more  ... 254, 385                     NF-1  ... 351
  76611.  Move Command  ... 490                  NF
  76612.  MS/DOS  ... 3                             awk variable  ... 328
  76613.  
  76614.  
  76615.  
  76616.  
  76617.                Copyright c 1991 IEEE.  All rights reserved.
  76618.       This is an unapproved IEEE Standards Draft, subject to change.
  76619.  
  76620.  
  76621.  
  76622.  
  76623.  
  76624.  Alphabetic Topical Index                                             1131
  76625.  
  76626.  
  76627.  
  76628.  
  76629.  
  76630.  P1003.2/D11.2
  76631.  
  76632.  {NGROUPS_MAX}  ... 50, 162, 211,       NUL
  76633.     529, 549                               definition of  ... 42
  76634.  NGROUPS_MAX  ... 530                   Number Command  ... 490
  76635.  {NGROUPS_MAX}  ... 853                 NUMBER  ... 108, 112-113, 324,
  76636.  Ninth Edition UNIX  ... 278, 379,         339, 344-345, 348, 364, 366,
  76637.     479, 677                               368, 896-897
  76638.  NIX  ... 184                           number-sign
  76639.  nl  ... 984                               definition of  ... 43
  76640.  {NNONTERM}  ... 903                    numeric formatting  ... 100
  76641.  NO-ACCENT  ... 116-117
  76642.  NO_ACCENT  ... 117
  76643.  noclobber option  ... 251, 254-        O
  76644.     255, 307, 646-648
  76645.  noexpr  ... 42, 106, 118               O_APPEND  ... 165, 251, 745
  76646.  NOFLSH  ... 730                        object file
  76647.  nohup                                     definition of  ... 43
  76648.     - Invoke a utility immune to        obsolescent features  ... 5-6, 17,
  76649.        hangups  ... 623, 991               27-28, 120, 123, 158, 179, 236,
  76650.         ... 58, 257, 428, 501,             244, 272, 306, 308, 399, 461,
  76651.        623-627, 804                        478-480, 498, 514, 537-539,
  76652.     definition of  ... 623                 544-546, 548, 554-555, 558-561,
  76653.  nohup.out  ... 623-625                    564, 635, 670-671, 716-719,
  76654.  ./nohup.out  ... 626                      721-722, 724, 736-738, 740,
  76655.  NO_MATCH  ... 339, 343, 345, 349          756, 758, 761, 772-773, 775-
  76656.  NONASSOC  ... 896-897                     776, 779, 784-785, 789, 868,
  76657.  nonmatching list  ... 132                 983
  76658.  nonprintable  ... 54, 158, 489,        obsolescent
  76659.     496, 596, 631, 657, 668, 700,          definition of  ... 27
  76660.     704, 717, 733                       O_CREAT  ... 432
  76661.  Normative References  ... 13, 978      OCTAL_CHAR  ... 108-109
  76662.  NOTE  ... 287                          od
  76663.  NOTES  ... 24                             - Dump files in various formats
  76664.  NOT  ... 265, 324, 515, 622, 690              ... 627, 991
  76665.  NPROC  ... 839                                ... 627-630, 633-636, 835
  76666.  {NPROD}  ... 903                          definition of  ... 627
  76667.  NR                                        Named Characters  ... 632
  76668.     awk variable  ... 328               OFF  ... 27, 52, 129, 219
  76669.  nroff  ... 444, 982                    _o_f_f__t  ... 927
  76670.  {NSTATES}  ... 903                     OFMT
  76671.  {NTERMS}  ... 903                         awk variable  ... 328
  76672.  Null Command  ... 494                  OFMT  ... 327-328, 333, 355-356
  76673.  null string                            OFS
  76674.     definition of  ... 35, 42              awk variable  ... 328
  76675.  NULL  ... 117, 922, 933, 948, 956      OFS  ... 326, 333, 351
  76676.  NUL  ... 42, 51, 54, 61, 76, 84,       OLDPWD
  76677.     89-90, 129, 131, 138, 291, 330,        variable  ... 391
  76678.     347, 497, 631, 769, 875, 879,       ONESHELL  ... 841
  76679.     890, 901
  76680.  
  76681.  
  76682.  
  76683.                Copyright c 1991 IEEE.  All rights reserved.
  76684.       This is an unapproved IEEE Standards Draft, subject to change.
  76685.  
  76686.  
  76687.  
  76688.  
  76689.  
  76690.  1132                                             Alphabetic Topical Index
  76691.  
  76692.  
  76693.  
  76694.  
  76695.  
  76696.                                                              P1003.2/D11.2
  76697.  
  76698.  one-to-many mapping  ... 83            O_WRONLY  ... 432
  76699.  O_NONBLOCK  ... 167, 712
  76700.  Open File Descriptors for Reading
  76701.     and Writing.   ... 253              P
  76702.  open file
  76703.     definition of  ... 43               P.0  ... 721
  76704.  _o_p_e_n()  ... 36, 165, 167, 251,         PARALLEL  ... 839
  76705.     432, 461, 712                       Parameter Expansion  ... 237
  76706.  _o_p_e_n_d_i_r()  ... 946                     parameter
  76707.  {OPEN_MAX}  ... 211, 253                  definition of  ... 218
  76708.  {OPEN_MAX}  ... 853                    Parameters and Variables  ... 228,
  76709.  operand                                   979
  76710.     definition of  ... 43               PARENB  ... 726
  76711.  operator                               parent directory
  76712.     definition of  ... 218                 definition of  ... 43
  76713.  OPOST  ... 729                         parent process ID
  76714.  OPTARG                                    definition of  ... 44
  76715.     variable  ... 123, 531-533, 536     parent process
  76716.  OPTARG  ... 536                           definition of  ... 44
  76717.  OPTERR                                 PARMRK  ... 728
  76718.     variable  ... 536                   PARODD  ... 726
  76719.  OPTIND                                 passwd  ... 588
  76720.     variable  ... 123, 531-532,         paste
  76721.        534, 536                            - Merge corresponding or
  76722.  OPTIND  ... 536                              subsequent lines of files
  76723.  option                                        ... 637, 991
  76724.     definition of  ... 43                      ... 210, 444, 637, 639-641
  76725.  Optional Facility Configuration           definition of  ... 637
  76726.     Values  ... 212                     patch  ... 469-470
  76727.  option-argument                        path prefix
  76728.     definition of  ... 43                  definition of  ... 45
  76729.  OR Lists  ... 270                      PATH
  76730.  ORD_CHAR  ... 141-143, 145-146            variable  ... 58, 60, 120-121,
  76731.  order_end                                    123-125, 189, 232, 236,
  76732.     Keyword  ... 93                           262-263, 299, 304, 320, 352,
  76733.  ordering by weights  ... 83                  391, 424-425, 427-429, 500-
  76734.  order_start                                  501, 517, 529, 625, 707,
  76735.     Keyword  ... 88                           710, 801, 921, 955-956
  76736.  O_RDONLY  ... 167                      pathchk
  76737.  OR_IF  ... 282-283                        - Check pathnames  ... 642, 991
  76738.  ORS                                           ... 254, 642-644, 646-647
  76739.     awk variable  ... 328                  definition of  ... 642
  76740.  ORS  ... 333                           _p_a_t_h_c_o_n_f()  ... 44, 207, 527,
  76741.  O_TRUNC  ... 165, 432, 461                851-852, 957
  76742.  Output Modes  ... 729                     definition of  ... 957
  76743.  Output Statements  ... 332             {PATH_MAX}  ... 44, 204, 211, 511,
  76744.  Overall Program Structure  ... 321        642, 691
  76745.  
  76746.  
  76747.  
  76748.  
  76749.                Copyright c 1991 IEEE.  All rights reserved.
  76750.       This is an unapproved IEEE Standards Draft, subject to change.
  76751.  
  76752.  
  76753.  
  76754.  
  76755.  
  76756.  Alphabetic Topical Index                                             1133
  76757.  
  76758.  
  76759.  
  76760.  
  76761.  
  76762.  P1003.2/D11.2
  76763.  
  76764.  PATH_MAX  ... 530                         847, 850, 936, 944
  76765.  {PATH_MAX}  ... 853                    Pattern Matching Notation  ... 980
  76766.  pathname component                     Pattern Matching  ... 850, 994
  76767.     definition of  ... 44               Pattern Ranges  ... 331
  76768.  Pathname Expansion  ... 249            pattern
  76769.  pathname resolution  ... 29               definition of  ... 45
  76770.  Pathname Resolution  ... 168           Patterns Matching a Single
  76771.  pathname resolution                       Character  ... 291
  76772.     definition of  ... 44               Patterns Matching Multiple
  76773.  pathname                                  Characters  ... 293
  76774.     absolute  ... 29                    Patterns Used for Filename
  76775.     definition of  ... 44                  Expansion  ... 294
  76776.     relative  ... 48                    Patterns  ... 330
  76777.  pathname  ... 21-23, 29-30, 34,        pax
  76778.     38, 40, 43-46, 48, 52, 54, 69,         - Portable archive interchange
  76779.     119, 121-125, 162, 167-168,                ... 648, 991
  76780.     181, 184, 215, 231, 233, 235,              ... 292, 439, 636, 645,
  76781.     237, 243-244, 249-250, 254,               648-655, 657-664, 815, 835,
  76782.     262-263, 280, 292, 294-295,               938, 982
  76783.     307, 318-319, 327, 332, 337,           definition of  ... 648
  76784.     358, 361-362, 383, 385, 388-        _p_c_l_o_s_e()  ... 332, 337, 849, 921,
  76785.     390, 393, 396, 406, 410-411,           923-926
  76786.     416, 420, 430, 434, 436, 441,          definition of  ... 921
  76787.     453, 463, 465, 467, 471, 474-       PDT  ... 450, 469
  76788.     475, 480, 486-487, 491, 493-        PECULIAR  ... 116-117
  76789.     494, 507-508, 511-514, 517-518,     Perform Word Expansions  ... 851,
  76790.     522, 526-527, 539-540, 546-547,        994
  76791.     556, 558, 566-567, 578-579,         period
  76792.     590, 596-599, 606, 611, 614,           definition of  ... 45
  76793.     617, 619, 621, 624, 629, 638,       Periods in BREs  ... 131
  76794.     642-645, 64 7-648, 650, 653-        Periods in EREs  ... 138
  76795.     657, 660, 665, 668, 679-680,        permission
  76796.     686-689, 692, 696, 707-709,            file  ... 39
  76797.     719, 738, 742, 745, 757-758,        permissions
  76798.     761, 773, 775, 785, 796-797,           definition of  ... 45
  76799.     810-811, 819, 824, 828, 838,           file access  ... 36, 45
  76800.     844, 847, 850-851, 856-858,         _p_i_d__t  ... 46-47
  76801.     860, 869, 886, 918, 923, 926,       Pipe Communications with Programs
  76802.     936, 938, 944-948, 950, 953,            ... 849
  76803.     961, 964-967, 988-989, 991,         pipe  ... 38
  76804.     994-995                                definition of  ... 45
  76805.  PATH  ... 22, 232, 235-236, 264,       _p_i_p_e()  ... 45, 924
  76806.     304, 352, 428, 501, 527             {PIPE_BUF}  ... 211
  76807.  pattern matching notation  ... 83,     {PIPE_BUF}  ... 853
  76808.     91, 232, 238, 249, 272              Pipelines  ... 264
  76809.  Pattern Matching Notation  ... 291     pipe  ... 6, 38, 45, 123, 167,
  76810.  pattern matching notation                 187, 202, 210, 229, 258, 264-
  76811.      ... 291, 293-295, 513, 516,           266, 283, 290, 307, 320, 327,
  76812.     518-519, 655-656, 662, 709,            332, 336-337, 353, 381, 427,
  76813.  
  76814.  
  76815.                Copyright c 1991 IEEE.  All rights reserved.
  76816.       This is an unapproved IEEE Standards Draft, subject to change.
  76817.  
  76818.  
  76819.  
  76820.  
  76821.  
  76822.  1134                                             Alphabetic Topical Index
  76823.  
  76824.  
  76825.  
  76826.  
  76827.  
  76828.                                                              P1003.2/D11.2
  76829.  
  76830.     470, 519, 592, 626-627, 660,           784, 794, 799, 805, 848-849,
  76831.     737, 741, 744, 746, 803, 849,          851-852, 856-857, 861, 866,
  76832.     921, 923-924, 926, 962                 909-910, 912-913, 915, 917-919,
  76833.  PL/1  ... 378                             921, 923-927, 946, 948, 955-
  76834.  _p_o_p_e_n()  ... 2, 9, 58, 60, 215,           959, 964-965, 977, 984
  76835.     332, 337, 849, 917, 921, 923-       POSIX.2
  76836.     925, 957                               abbreviation  ... 57
  76837.     definition of  ... 921                 definition of  ... 57
  76838.  portable character set  ... 45,        {POSIX2_C_BIND}  ... 16, 213
  76839.     61, 66-67, 70, 218, 318-319,        _POSIX2_C_BIND  ... 861
  76840.     348, 483, 489, 582, 825, 827        {POSIX2_C_DEV}  ... 16, 213
  76841.     definition of  ... 45               {_POSIX2_C_DEV}  ... 957
  76842.  portable filename character set        {POSIX2_FORT_DEV}  ... 16, 213
  76843.     definition of  ... 45               {POSIX2_FORT_RUN}  ... 16
  76844.  portable filenames  ... 38             {_POSIX2_LINE_MAX}  ... 915
  76845.  positional parameter                   {POSIX2_LOCALEDEF}  ... 16, 69,
  76846.     definition of  ... 218                 75, 577
  76847.  Positional Parameters  ... 228         POSIX.2  ... 2-4, 7-12, 15-18,
  76848.  POSIX Locale  ... 30, 52, 69-71,          25-27, 46-47, 52-57, 68, 70,
  76849.     75-76, 84, 96, 101-102, 105-           82, 93, 95, 121-124, 126, 131,
  76850.     106, 122, 133-134, 188, 357,           133, 148-149, 159-163, 166,
  76851.     372, 417-418, 446-447, 449-450,        168, 170, 176, 179-180, 189,
  76852.     457, 464-465, 467, 517, 540,           194, 197
  76853.     551, 571, 576, 580, 599, 601-       POSIX2  ... 204, 206
  76854.     602, 605, 633, 669, 671, 731,       POSIX.2  ... 207
  76855.     733, 735, 774, 797, 814, 869-       POSIX2  ... 207
  76856.     870, 883, 905, 999                  POSIX.2  ... 208-209
  76857.  POSIX Symbols  ... 910                 POSIX2  ... 212-213
  76858.  POSIX.1 C Numerical Limits             POSIX.2  ... 216, 219-220, 223,
  76859.      ... 917                               226-227, 234-235, 244, 247,
  76860.  POSIX.1                                   253, 257-258, 263-265, 277-278,
  76861.     definition of  ... 57                  295, 297, 299, 305, 312-313,
  76862.  POSIX.1  ... 1-4, 8, 10, 12, 15,          315, 317, 354-355, 357, 380,
  76863.     18-19, 21, 27-32, 34-60, 71,           402-403, 408, 412, 419, 427-
  76864.     75, 106, 119, 121-124, 161-169,        429, 437-438, 450, 461, 495-
  76865.     183, 187, 190, 204, 207-208,           498, 507, 519-520, 526, 529
  76866.     210-211, 231, 235, 249, 251,        POSIX2  ... 530
  76867.     253, 256, 262-263, 289, 296,        POSIX.2  ... 544, 549, 563-564,
  76868.     311, 327, 361, 392, 395, 401,          585, 593, 595, 602, 604, 608-
  76869.     403, 405, 408, 412, 419, 429-          609, 633, 636, 641, 650-651,
  76870.     432, 439, 463, 470, 475, 502,          660, 662-663, 691, 695, 704-
  76871.     511, 513, 515, 519-520, 526-           705, 711-712, 725, 734-735,
  76872.     527, 549, 559-561, 563-564,            741, 750, 752-755, 768-769,
  76873.     566, 586, 596-597, 599, 604,           771, 784, 793, 803-805, 815-
  76874.     610, 613-614, 617-618, 622,            816, 834-835, 839-841, 843,
  76875.     636, 642-643, 645, 647, 649,           849-852
  76876.     653-656, 658, 660-662, 687,         POSIX2  ... 861
  76877.     712, 725-730, 734-736, 740,
  76878.     755-756, 761, 772-773, 780,
  76879.  
  76880.  
  76881.                Copyright c 1991 IEEE.  All rights reserved.
  76882.       This is an unapproved IEEE Standards Draft, subject to change.
  76883.  
  76884.  
  76885.  
  76886.  
  76887.  
  76888.  Alphabetic Topical Index                                             1135
  76889.  
  76890.  
  76891.  
  76892.  
  76893.  
  76894.  P1003.2/D11.2
  76895.  
  76896.  POSIX.2  ... 863-866, 883-884,         {_POSIX_VERSION}  ... 957
  76897.     908-912                             POSIX_VERSION  ... 861, 912, 915
  76898.  POSIX2  ... 912                        POW_ASSIGN  ... 339, 344-345, 349
  76899.  POSIX.2  ... 913-914                   PPID
  76900.  POSIX2  ... 914                           variable  ... 232
  76901.  POSIX.2  ... 915                       pr
  76902.  POSIX2  ... 915-916                       - Print files  ... 665, 991
  76903.  POSIX.2  ... 917, 919, 921, 923,              ... 386, 592, 665-671, 984
  76904.     925, 934, 956-957                      definition of  ... 665
  76905.  POSIX2  ... 957-958                    PRECIOUS  ... 822, 826, 841
  76906.  POSIX.2  ... 959, 963, 970, 974-       PREC  ... 896, 898
  76907.     975, 998                            Preserve Historical Applications
  76908.  {POSIX2_SW_DEV}  ... 16, 213               ... 5
  76909.  _POSIX2_VERSION  ... 912               Preserve Historical
  76910.  {POSIX2_VERSION}  ... 915                 Implementations  ... 7
  76911.  {_POSIX2_VERSION}  ... 957             Print Command  ... 490
  76912.  POSIX.3  ... 3, 12, 188                print  ... 327-328
  76913.  POSIX.5  ... 10                        printable character
  76914.  POSIX.6  ... 391, 603-604, 986            definition of  ... 46
  76915.  POSIX.7  ... 4, 8, 585                 PRINTER
  76916.  POSIX.9  ... 959, 970                     variable  ... 123, 589, 591,
  76917.  {_POSIX_C_DEV}  ... 957                      594
  76918.  POSIX_CHOWN_RESTRICTED  ... 853        printf
  76919.  posixconf  ... 530                        - Write formatted output
  76920.  _p_o_s_i_x_c_o_n_f()  ... 956                          ... 672, 991
  76921.  _POSIX_C_SOURCE  ... 910                      ... 6, 9, 180, 327-328,
  76922.  POSIX_C_SOURCE  ... 910-912                  335, 478-479, 603, 641, 672,
  76923.  {_POSIX_JOB_CONTROL}  ... 41                 674-678
  76924.  POSIX_JOB_CONTROL  ... 853                definition of  ... 672
  76925.  {_POSIX_LOCALEDEF}  ... 213            _p_r_i_n_t_f()  ... 180, 187, 191, 193,
  76926.  posixlog  ... 585                         198, 202-203, 635, 677-678,
  76927.  {_POSIX_NAME_MAX}  ... 643                798, 865
  76928.  {_POSIX_NO_TRUNC}  ... 44, 647         privileges (see appropriate
  76929.  POSIX_NO_TRUNC  ... 853                   privileges)
  76930.  {_POSIX_PATH_MAX}  ... 643             Process Attributes  ... 162
  76931.  POSIX.1 Numeric-Valued                 process group ID  ... 46-47, 162,
  76932.     Configurable Variables  ... 853        563
  76933.  POSIX.2 Reserved Header Symbols           definition of  ... 46
  76934.      ... 911                            process group leader
  76935.  _POSIX_C_SOURCE  ... 911                  definition of  ... 47
  76936.  {_POSIX_SAVED_IDS}  ... 162            process group
  76937.  POSIX_SAVED_IDS  ... 853                  background  ... 30
  76938.  POSIX_SOURCE  ... 910, 917                definition of  ... 46
  76939.  {_POSIX_VDISABLE}  ... 730-731,           foreground  ... 40
  76940.     735                                    leader  ... 47
  76941.  POSIX_VDISABLE  ... 22, 853            process ID  ... 44, 47, 162-163,
  76942.  _POSIX_VERSION  ... 861                   193, 229-230, 268, 289, 563-
  76943.                                            564, 790, 792-794, 923
  76944.                                            definition of  ... 47
  76945.  
  76946.  
  76947.                Copyright c 1991 IEEE.  All rights reserved.
  76948.       This is an unapproved IEEE Standards Draft, subject to change.
  76949.  
  76950.  
  76951.  
  76952.  
  76953.  
  76954.  1136                                             Alphabetic Topical Index
  76955.  
  76956.  
  76957.  
  76958.  
  76959.  
  76960.                                                              P1003.2/D11.2
  76961.  
  76962.     parent  ... 44                      RAW  ... 735
  76963.  process                                RCS  ... 839
  76964.     background  ... 30                  RCURL  ... 896-897
  76965.     definition of  ... 46               RE and Bracket Expression Grammar
  76966.     foreground  ... 40                      ... 142
  76967.     parent  ... 44                      RE Bracket Expression  ... 131
  76968.  PROCESSING  ... 646-647                RE
  76969.  PROCLANG                                  abbreviation  ... 57
  76970.     variable  ... 125                   Read Command  ... 491
  76971.  program                                read
  76972.     definition of  ... 47                  - Read a line from standard
  76973.  Programs Section  ... 895                    input  ... 682, 991
  76974.  Prompt Command  ... 490                       ... 58-59, 186-187, 231,
  76975.  PS1                                          234, 307, 682-685, 708-709,
  76976.     variable  ... 123, 232, 712               983
  76977.  PS2                                       definition of  ... 682
  76978.     variable  ... 123, 232, 712         _r_e_a_d()  ... 36, 167, 457
  76979.  PS4                                    _r_e_a_d_d_i_r()  ... 946
  76980.     variable  ... 232                   read-only file system
  76981.  PWB  ... 753                              definition of  ... 47
  76982.  pwd                                    readonly
  76983.     - Return working directory name        - Set read-only attribute for
  76984.         ... 679, 991                          variables  ... 304
  76985.         ... 679-681                            ... 304-305
  76986.     definition of  ... 679                 definition of  ... 304
  76987.  PWD                                    real group ID  ... 41, 47, 162,
  76988.     variable  ... 232, 304, 391            551, 706
  76989.  PWD  ... 304-305                          definition of  ... 47
  76990.                                         real user ID  ... 47, 51, 162,
  76991.                                            551, 706
  76992.  Q                                         definition of  ... 47
  76993.                                         Redirecting Input  ... 251
  76994.  q  ... 497                             Redirecting Output  ... 251
  76995.  Quit Command  ... 490                  redirection operator
  76996.  Quit Without Checking Command             definition of  ... 218
  76997.      ... 491                            Redirection  ... 249, 979
  76998.  QUIT  ... 311, 313-314, 729-730        redirection
  76999.  Quote Removal  ... 249                    definition of  ... 218
  77000.  QUOTED_CHAR  ... 141-143, 145          {RE_DUP_MAX}  ... 135, 139, 141,
  77001.  Quoting  ... 220, 979                     211
  77002.                                         RE_DUP_MAX  ... 204
  77003.                                         {RE_DUP_MAX}  ... 204
  77004.  R                                      RE_DUP_MAX  ... 207, 914
  77005.                                         {RE_DUP_MAX}  ... 914, 958
  77006.  R_ANCHOR  ... 142-143                  REG_BADBR  ... 931
  77007.  range expression  ... 133              REG_BADPAT  ... 932
  77008.  ranlib  ... 817                        REG_BADRPT  ... 931
  77009.  
  77010.  
  77011.  
  77012.  
  77013.                Copyright c 1991 IEEE.  All rights reserved.
  77014.       This is an unapproved IEEE Standards Draft, subject to change.
  77015.  
  77016.  
  77017.  
  77018.  
  77019.  
  77020.  Alphabetic Topical Index                                             1137
  77021.  
  77022.  
  77023.  
  77024.  
  77025.  
  77026.  P1003.2/D11.2
  77027.  
  77028.  _r_e_g_c_o_m_p()  ... 2, 148, 150, 849,       Regular Expression General
  77029.     927, 929, 931-932, 935, 938            Requirements  ... 129
  77030.     _c_f_l_a_g_s Argument  ... 928            Regular Expression Grammar
  77031.     definition of  ... 927                  ... 140
  77032.     _r_e_g_e_x_e_c() Return Values             Regular Expression Matching
  77033.         ... 932                             ... 849, 994
  77034.  REG_EBRACE  ... 932, 935               Regular Expression Notation
  77035.  REG_EBRACK  ... 932                        ... 128, 978
  77036.  REG_ECOLLATE  ... 932                  regular expression  ... 2, 5-6,
  77037.  REG_ECTYPE  ... 932                       12, 28-30, 36, 42, 45, 47, 57,
  77038.  REG_EESCAPE  ... 932                      75, 83, 91-92, 95, 106, 108,
  77039.  REG_EPAREN  ... 932                       119, 128-131, 136-138, 140-143,
  77040.  REG_ERANGE  ... 932                       145-151, 153, 157-158, 160-161,
  77041.  _r_e_g_e_r_r_o_r()  ... 927, 931, 933,            204, 238, 291-292, 318, 320,
  77042.     935-936                                327-330, 335-336, 348, 351,
  77043.     definition of  ... 927                 353-354, 357, 435, 481-482,
  77044.  REG_ESPACE  ... 932                       496, 504, 506, 508, 516, 538-
  77045.  REG_ESUBREG  ... 932                      541, 620, 653, 656, 688, 697-
  77046.  _r_e_g_e_x_e_c()  ... 849, 927, 929-932,         699, 701-702, 704, 768-769,
  77047.     934-936, 938                           847, 849-850, 869, 871-875,
  77048.     definition of  ... 927                 877-879, 882-884, 927-936, 978,
  77049.     _e_f_l_a_g_s Argument  ... 928               994-995
  77050.  <regex.h>  ... 927, 929, 931, 935         definition of  ... 47
  77051.  _r_e_g_e_x__t                                Regular Expressions  ... 328
  77052.     definition of  ... 928              regular file
  77053.  REG_EXTENDED  ... 928-929, 933            definition of  ... 47
  77054.  REG_FILENAME  ... 936, 938             rejected utilities  ... 980
  77055.  _r_e_g_f_r_e_e()  ... 849, 927, 931           REJECT  ... 878-879
  77056.     definition of  ... 927              relative pathname
  77057.  REG_FSLASH  ... 938                       definition of  ... 48
  77058.  REG_ICASE  ... 927, 934                REL_OP  ... 364, 366, 369
  77059.  _r_e_g_m_a_t_c_h()  ... 933                    _r_e_n_a_m_e()  ... 618, 622-623
  77060.  _r_e_g_m_a_t_c_h__t                             Required Files  ... 126, 978
  77061.     definition of  ... 928              Requirements  ... 14
  77062.  REG_NEWLINE  ... 927, 930              Reserved Words  ... 226, 979
  77063.  REG_NOMATCH  ... 931                   return
  77064.  REG_NOSUB  ... 927, 929, 933, 935         - Return from a function
  77065.  REG_NOTBOL  ... 927, 930, 932-933,            ... 305
  77066.     935                                        ... 276, 306
  77067.  REG_NOTEOL  ... 927, 930, 935             definition of  ... 305
  77068.  _r_e_g_o_f_f__t  ... 927, 934                 RIGHT  ... 896-897
  77069.     definition of  ... 927              RING-ABOVE  ... 117
  77070.  REG  ... 911, 931                      RLENGTH
  77071.  _r_e_g_s_u_b()  ... 934                         awk variable  ... 328
  77072.  Regular Built-in Utilities  ... 58     RLENGTH  ... 335, 353
  77073.  Regular Expression Definitions         rm
  77074.      ... 128                               - Remove directory entries
  77075.                                                ... 686, 991
  77076.                                                ... 209, 569, 646, 686-691
  77077.  
  77078.  
  77079.                Copyright c 1991 IEEE.  All rights reserved.
  77080.       This is an unapproved IEEE Standards Draft, subject to change.
  77081.  
  77082.  
  77083.  
  77084.  
  77085.  
  77086.  1138                                             Alphabetic Topical Index
  77087.  
  77088.  
  77089.  
  77090.  
  77091.  
  77092.                                                              P1003.2/D11.2
  77093.  
  77094.     definition of  ... 686              Scope of Danish National Locale
  77095.  {RM_DEPTH_MAX}  ... 211                    ... 1000
  77096.  rmdir                                  Scope  ... 1, 978
  77097.     - Remove directories  ... 692,      SC_POSIX_C_BIND  ... 530
  77098.        991                              SC_POSIX_C_DEV  ... 957
  77099.         ... 613, 692-695                SC_RE_DUP_MAX  ... 958
  77100.     definition of  ... 692              SC_VERSION  ... 957
  77101.  _r_m_d_i_r()  ... 166, 687                  sdb  ... 986
  77102.  R_OK  ... 942                          seconds since the Epoch
  77103.  root directory  ... 162                   definition of  ... 48
  77104.     definition of  ... 48               security considerations  ... 36
  77105.  RS                                     security controls
  77106.     awk variable  ... 328                  additional  ... 36
  77107.  rsh  ... 712                              alternate  ... 36
  77108.  RSTART                                    extended  ... 36
  77109.     awk variable  ... 328               sed
  77110.  RSTART  ... 335, 353                      - Stream editor  ... 695, 991
  77111.  RULES  ... 833                                ... 28, 47, 50, 187, 210-
  77112.                                               211, 231, 385, 553, 636,
  77113.                                               662, 695-696, 698-699, 703-
  77114.  S                                            705, 741, 804, 982, 986
  77115.                                            Addresses  ... 698
  77116.  Sample National Profile  ... 997          definition of  ... 695
  77117.  Sample _p_c_l_o_s_e() Implementation            Editing Commands  ... 699
  77118.      ... 926                               Regular Expressions  ... 698
  77119.  Sample _s_y_s_t_e_m() Implementation         {SED_PATTERN_MAX}  ... 211
  77120.      ... 922                            sendto  ... 609
  77121.  saved set-group-ID  ... 41, 162        Sequential Lists  ... 269
  77122.     definition of  ... 48               session leader
  77123.  saved set-user-ID  ... 48, 51, 162        definition of  ... 49
  77124.     definition of  ... 48               session lifetime
  77125.  saved-set-group-ID  ... 162               definition of  ... 49
  77126.  saved-set-user-ID  ... 162             session membership  ... 162
  77127.  SC22  ... 1045                         session  ... 30, 40, 48
  77128.  SC_2  ... 957-958                         definition of  ... 48
  77129.  SC2  ... 974                           session  ... 30, 40, 48-49, 54,
  77130.  _s_c_a_n_f()  ... 198, 202-203                 162, 204, 208, 258, 313
  77131.  SC_BC_BASE_MAX  ... 958                set
  77132.  SC_BC_DIM_MAX  ... 958                    - Set/unset options and
  77133.  SC_BC_SCALE_MAX  ... 958                     positional parameters
  77134.  SC_BC_STRING_MAX  ... 958                     ... 306
  77135.  SC_COLL_WEIGHTS_MAX  ... 958                  ... 228-229, 231, 251,
  77136.  SCCS  ... 518, 838-839, 981, 983,            254-255, 289, 306-310, 313,
  77137.     985, 987                                  428, 647, 706, 711
  77138.  SCCS/s.Makefile  ... 838                  definition of  ... 306
  77139.  SC_EXPR_NEST_MAX  ... 958              _s_e_t_b_u_f()  ... 386
  77140.  SC_LINE_MAX  ... 958                   _s_e_t_b_u_f_f_e_r()  ... 386
  77141.  
  77142.  
  77143.  
  77144.  
  77145.                Copyright c 1991 IEEE.  All rights reserved.
  77146.       This is an unapproved IEEE Standards Draft, subject to change.
  77147.  
  77148.  
  77149.  
  77150.  
  77151.  
  77152.  Alphabetic Topical Index                                             1139
  77153.  
  77154.  
  77155.  
  77156.  
  77157.  
  77158.  P1003.2/D11.2
  77159.  
  77160.  _s_e_t_g_i_d()  ... 34, 47-48                Shell Grammar Rules  ... 280
  77161.  set-group-ID  ... 162, 438             Shell Grammar  ... 279, 980
  77162.  set-group-ID-on-execution  ... 38,     shell script
  77163.     397, 399                               definition of  ... 49
  77164.  <setjmp.h>  ... 861                    shell
  77165.  _s_e_t_l_o_c_a_l_e()  ... 70, 152-153, 155,        definition of  ... 49
  77166.     168, 357, 958                       SHELL
  77167.  _s_e_t_p_g_i_d()  ... 48                         variable  ... 121, 124, 822,
  77168.  _s_e_t_s_i_d()  ... 48-49                          828, 921
  77169.  _s_e_t_u_i_d()  ... 35, 47-48                shell  ... 1-5, 7, 9, 11-12, 14,
  77170.  set-user-ID scripts  ... 712              28, 31, 33-34, 41, 47, 49, 51-
  77171.  set-user-ID  ... 162, 404, 438,           53, 56, 58-60, 68, 121, 124,
  77172.     600, 746                               126, 156, 170, 179, 194, 196,
  77173.  set-user-ID-on-execution  ... 38,         208, 212, 215-221, 223-226,
  77174.     397, 399                               228-234, 236, 238-240, 242-243,
  77175.  _s_e_t_v_b_u_f()  ... 386                        245-250, 252, 254-268, 270-271,
  77176.  SGML  ... 9                               273, 276-280, 283, 286, 288-
  77177.  sh - Shell                                293, 295-296, 299-309, 311-314,
  77178.     the standard command language          350, 356-357, 361, 378, 385,
  77179.        interpreter  ... 706, 991           387-388, 391, 424, 427, 487,
  77180.  sh  ... 49, 123, 169, 186-187,            491, 493-494, 502, 507-508,
  77181.     196, 215-216, 228-229, 231,            510, 518-519, 529, 531-537,
  77182.     257-258, 307-309, 350, 706-712,        553, 560, 564-565, 569, 573,
  77183.     752, 756, 828, 918, 921, 923-          576, 609, 616, 627, 640, 646-
  77184.     924, 947, 954                          648, 660, 678, 681-682, 685,
  77185.     definition of  ... 706                 691, 706-712, 726, 734-735,
  77186.  shall                                     750, 7 52-753, 755-756, 768,
  77187.     definition of  ... 27                  771, 775, 778, 790, 792-794,
  77188.  Shell Command Interface  ... 848,         803, 805
  77189.     994                                 SHELL  ... 822, 828
  77190.  Shell Command Language  ... 215,       shell  ... 828, 835, 840-841,
  77191.     979                                    847-849, 851, 917-918, 921,
  77192.  Shell Commands  ... 258, 980              923, 943, 947-950, 952-954,
  77193.  Shell Definitions  ... 217, 979           977, 979-980, 982-988, 991,
  77194.  Shell Escape Command  ... 494             994-995
  77195.  shell execution environment            shift
  77196.      ... 218, 230, 249, 259, 268           - Shift positional parameters
  77197.  Shell Execution Environment                   ... 310
  77198.      ... 289                                   ... 308
  77199.  shell execution environment               definition of  ... 310
  77200.      ... 289-290, 301, 388, 391,        should
  77201.     532, 535, 682, 685, 775, 778,          definition of  ... 27
  77202.     790                                 SIGABRT  ... 312, 561
  77203.  Shell Execution Environment            SIGALRM  ... 312, 561, 714-715
  77204.      ... 980                            SIG_BLOCK  ... 922
  77205.  Shell Grammar Lexical Conventions      SIGCHLD  ... 918-920, 922
  77206.      ... 279                            SIG_DFL  ... 919
  77207.  
  77208.  
  77209.  
  77210.  
  77211.                Copyright c 1991 IEEE.  All rights reserved.
  77212.       This is an unapproved IEEE Standards Draft, subject to change.
  77213.  
  77214.  
  77215.  
  77216.  
  77217.  
  77218.  1140                                             Alphabetic Topical Index
  77219.  
  77220.  
  77221.  
  77222.  
  77223.  
  77224.                                                              P1003.2/D11.2
  77225.  
  77226.  SIGHUP  ... 193, 312, 481, 560,        S_IXGRP  ... 397, 399
  77227.     623, 625-627, 822, 841, 925         S_IXOTH  ... 397, 399
  77228.  SIG_IGN  ... 922                       S_IXUSR  ... 397, 399
  77229.  SIGINT  ... 193, 269, 288, 312,        slash
  77230.     456, 481, 488, 560, 742-743,           definition of  ... 49
  77231.     822, 841, 918-919, 922, 925         sleep
  77232.  SIGKILL  ... 311-313, 561, 563            - Suspend execution for an
  77233.  signal                                       interval  ... 713, 991
  77234.     definition of  ... 49                      ... 713-715
  77235.  <signal.h>  ... 861                       definition of  ... 713
  77236.  Signals and Error Handling             SLR  ... 904
  77237.      ... 288, 980                       Software Development Utilities
  77238.  SIGNULL  ... 564                          Option  ... 809, 993
  77239.  SIG  ... 311-312, 560, 562, 564,       SOH  ... 63, 76, 84, 731
  77240.     793                                 sort  ... 5, 33, 211, 554-555,
  77241.  SIGQUIT  ... 193, 269, 288, 312,          716, 719, 722, 724-725, 788
  77242.     560, 627, 822, 841, 918-919,           definition of  ... 716
  77243.     922, 925                            {SORT_LINE_MAX}  ... 211
  77244.  SIG_SETMASK  ... 922                   source code
  77245.  SIGSTOP  ... 311, 313                     definition of  ... 49
  77246.  SIGTERM  ... 193, 312, 559-561,        <space>
  77247.     626-627, 822, 841                      definition of  ... 50
  77248.  SIGTTOU  ... 730                       SPEC_CHAR  ... 141-142, 145-146
  77249.  SILENT  ... 820, 823, 825-826, 841     Special Built-in Utilities
  77250.  Simple Commands  ... 259                   ... 295, 980
  77251.  SINGLE  ... 833                        special built-in  ... 31, 34, 41,
  77252.  single-quote                              52, 58, 215-216, 228-229, 255,
  77253.     definition of  ... 49                  259, 261, 263, 276-277, 289,
  77254.  Single-Quotes  ... 221                    295-296, 298, 303, 305, 307,
  77255.  S_IRGRP  ... 164, 399, 614, 756           312, 314, 424-425, 429, 499,
  77256.  S_IROTH  ... 164, 399, 614, 756           624, 627, 681, 711, 771, 801,
  77257.  S_IRUSR  ... 164, 399, 614, 623,          980
  77258.     756                                 Special Control Character
  77259.  S_IRWXG  ... 610, 649, 856, 964           Assignments  ... 730
  77260.  S_IRWXO  ... 610, 649, 856, 964        special parameter
  77261.  S_IRWXU  ... 431, 610, 649, 658,          definition of  ... 218
  77262.     856, 964                            Special Parameters  ... 229
  77263.  S_ISGID  ... 38, 399, 403, 434,        Special Patterns  ... 330
  77264.     518, 618, 652, 780                  split  ... 496, 986
  77265.  S_ISUID  ... 38, 399, 403, 434,        SQL  ... 10
  77266.     518, 618, 652, 780                  _s_s_i_z_e__t  ... 927
  77267.  S_IWGRP  ... 164, 399, 614, 756,       standard error
  77268.     779                                    definition of  ... 50
  77269.  S_IWOTH  ... 164, 399, 518, 614,       standard input
  77270.     756, 779                               definition of  ... 50
  77271.  S_IWUSR  ... 164, 399, 614, 623,       Standard Libraries  ... 861, 968
  77272.     756                                 standard output
  77273.                                            definition of  ... 50
  77274.  
  77275.  
  77276.  
  77277.                Copyright c 1991 IEEE.  All rights reserved.
  77278.       This is an unapproved IEEE Standards Draft, subject to change.
  77279.  
  77280.  
  77281.  
  77282.  
  77283.  
  77284.  Alphabetic Topical Index                                             1141
  77285.  
  77286.  
  77287.  
  77288.  
  77289.  
  77290.  P1003.2/D11.2
  77291.  
  77292.  standard utilities                     stty
  77293.     definition of  ... 50                  - Set the options for a
  77294.  START  ... 728, 730, 896-897                 terminal  ... 725, 992
  77295.  START/STOP  ... 728                           ... 9, 54, 725-727, 732-736
  77296.  _s_t_a_t  ... 756                             Circumflex Control Characters
  77297.  _s_t_a_t()  ... 36-37, 40, 161, 181,              ... 731
  77298.     654, 946                               Control Character Names
  77299.  _s_t__a_t_i_m_e  ... 39                              ... 730
  77300.  _s_t__c_t_i_m_e  ... 39                          definition of  ... 725
  77301.  STDIN_FILENO  ... 923                  _s_t__u_i_d  ... 816
  77302.  <stdio.h>  ... 861, 912                STX  ... 63, 76, 84, 731
  77303.  <stdlib.h>  ... 861                    SUB_ASSIGN  ... 339, 344-345, 349
  77304.  STDOUT_FILENO  ... 923                 SUB  ... 63, 76, 85, 731
  77305.  _s_t__g_i_d  ... 816                        SUBSCRIPT-LOWER  ... 116
  77306.  sticky bit  ... 403                    SUBSEP
  77307.  _s_t__m_o_d_e  ... 816                          awk variable  ... 328
  77308.  _s_t__m_t_i_m_e  ... 39, 816                  SUBSEP  ... 326, 353
  77309.  STOP  ... 728, 730                     subshell
  77310.  _s_t_r_c_o_l_l()  ... 93                         definition of  ... 218
  77311.  stream                                 Substitute Command  ... 491
  77312.     definition of  ... 50               SUFFIXES  ... 826, 828-829, 832
  77313.  STREAMS  ... 56                        SUFFIX  ... 833
  77314.  _s_t_r_e_r_r_o_r()  ... 935                    sum  ... 6, 412, 414
  77315.  Strictly Conforming POSIX.2            SUPERSCRIPT-LOWER  ... 116
  77316.     Application  ... 4, 7, 15, 17,      super-user  ... 439, 603, 661, 982
  77317.     26-27, 121, 126, 131, 133, 150,     supplementary group ID
  77318.     158, 194, 207                          definition of  ... 50
  77319.  String Functions  ... 335              supplementary group IDs  ... 162
  77320.  String Operand  ... 506                supplementary groups  ... 38, 41,
  77321.  <string.h>  ... 861                       50, 162, 549, 551-553
  77322.  STRING  ... 319, 329, 339, 344-        SUSP  ... 729-730
  77323.     345, 347-348, 364-365, 367-368      SVID  ... 975
  77324.  strip                                  SW_DEV  ... 212, 916, 958
  77325.     - Remove unnecessary                switch  ... 273
  77326.        information from executable      Symbolic Constants for Portability
  77327.        files  ... 844, 993                 Specifications  ... 212
  77328.         ... 844-846                     Symbolic Limits  ... 204
  77329.     definition of  ... 844              Symbolic Utility Limits  ... 206
  77330.  _s_t_r_t_o_d()  ... 677-678                  SYN  ... 63, 76, 84, 731
  77331.  _s_t_r_t_o_l()  ... 677-678                  _s_y_s_c_o_n_f()  ... 204, 207-208, 212-
  77332.  _s_t_r_t_o_u_l()  ... 677-678                    213, 526, 530, 851-852, 913-
  77333.  Structure Type _g_l_o_b__t  ... 944            916, 955-957
  77334.  Structure Type _r_e_g_e_x__t  ... 928           definition of  ... 957
  77335.  Structure Type _r_e_g_m_a_t_c_h__t  ... 928     <sys/stat.h>  ... 21
  77336.  Structure Type _w_o_r_d_e_x_p__t  ... 950      system documentation
  77337.  _s_t_r_x_f_r_m()  ... 93                         definition of  ... 27
  77338.  _s_t__s_i_z_e  ... 816                       System III  ... 474, 753
  77339.  
  77340.  
  77341.  
  77342.  
  77343.                Copyright c 1991 IEEE.  All rights reserved.
  77344.       This is an unapproved IEEE Standards Draft, subject to change.
  77345.  
  77346.  
  77347.  
  77348.  
  77349.  
  77350.  1142                                             Alphabetic Topical Index
  77351.  
  77352.  
  77353.  
  77354.  
  77355.  
  77356.                                                              P1003.2/D11.2
  77357.  
  77358.  System V  ... 5-6, 10, 56, 216,           332, 339, 362, 364, 386-387,
  77359.     223, 249, 254, 278, 295, 306,          398, 400, 404, 437, 495-497,
  77360.     308, 315, 379, 385-386, 391,           524, 564, 594, 596, 598, 603-
  77361.     394, 402-403, 408, 414, 419,           604, 617, 622-623, 625, 663,
  77362.     423, 444, 451, 461-462, 469,           665, 669, 686-687, 690, 707-
  77363.     474, 477-479, 497, 519-520,            708, 711, 725-727, 731-736,
  77364.     527, 535, 544-545, 594, 603-           746, 772-774, 807, 842, 891-
  77365.     604, 609, 613, 635, 659-661,           894, 902-903, 907, 919, 926,
  77366.     671, 678, 694-695, 704-705,            963, 982-988, 992
  77367.     723-724, 735, 740-741, 750-755,     Terminology and General
  77368.     761, 768-769, 798, 803, 815-           Requirements  ... 21, 978
  77369.     816, 834-835, 837, 839, 841-        Terminology  ... 26
  77370.     842, 865-866, 882, 884, 906,        TERM  ... 311, 313-314, 565
  77371.     975, 980, 986                       test
  77372.  system                                    - Evaluate expression  ... 745,
  77373.     definition of  ... 51                     992
  77374.  _s_y_s_t_e_m()  ... 2, 9, 11, 58, 60,               ... 166, 217, 247, 518,
  77375.     196, 215, 224, 337, 530, 708,             602, 647, 745-747, 749-750,
  77376.     824, 841, 848, 917-921, 957               752-756, 775, 983
  77377.     definition of  ... 918                 definition of  ... 745
  77378.  <sys/types.h>  ... 861                 text column
  77379.                                            definition of  ... 51
  77380.                                         text file  ... 35, 43, 51, 54,
  77381.  T                                         124-125, 159, 186, 188, 204,
  77382.                                            262-264, 320, 356, 362-363,
  77383.  <tab>                                     421, 442, 444, 463, 480, 482,
  77384.     definition of  ... 51                  497, 522, 524-525, 541, 546,
  77385.  tail                                      553, 556, 579, 590, 592, 606,
  77386.     - Copy the last part of a file         639, 641-642, 655, 668, 683,
  77387.         ... 736, 992                       695-697, 709, 716, 719, 738,
  77388.         ... 548-549, 736-741               740, 786, 798, 801, 804, 821,
  77389.     definition of  ... 736                 857, 859-860, 869-871, 887-888,
  77390.  tar  ... 75, 654, 659-664, 815            907, 960-961, 967, 991
  77391.  Target Rules  ... 825                     definition of  ... 51
  77392.  TCOS  ... 9                            then  ... 274, 298
  77393.  tee                                    Tilde Expansion  ... 235
  77394.     - Duplicate standard input          tilde
  77395.         ... 742, 992                       definition of  ... 51
  77396.         ... 742-744                     TILDE  ... 117
  77397.     definition of  ... 742              time formats  ... 102
  77398.  TERM                                   time  ... 228
  77399.     variable  ... 121                   _t_i_m_e()  ... 756
  77400.  terminal device (see terminal)         <time.h>  ... 861
  77401.  terminal                               TIME  ... 450, 731
  77402.     definition of  ... 51               _t_m__h_o_u_r  ... 48
  77403.  terminal  ... 9, 24-25, 29-30, 32,     _t_m__m_i_n  ... 48
  77404.     38, 40-41, 49, 51, 55, 68, 121,     /tmp  ... 127
  77405.     123, 126, 162, 167, 185, 190-
  77406.     191, 199, 210, 212, 224, 254,
  77407.  
  77408.  
  77409.                Copyright c 1991 IEEE.  All rights reserved.
  77410.       This is an unapproved IEEE Standards Draft, subject to change.
  77411.  
  77412.  
  77413.  
  77414.  
  77415.  
  77416.  Alphabetic Topical Index                                             1143
  77417.  
  77418.  
  77419.  
  77420.  
  77421.  
  77422.  P1003.2/D11.2
  77423.  
  77424.  TMPDIR                                 _t_t_y_n_a_m_e()  ... 772-773
  77425.     variable  ... 121, 127, 192,        TTY  ... 671, 736
  77426.        724, 860, 865, 967               Two-Character Mnemonics  ... 1046
  77427.  TMPDIR  ... 647                        TYPE  ... 896-897
  77428.  _t_m_p_n_a_m()  ... 647                      typeset  ... 277
  77429.  _t_m__s_e_c  ... 48                         Typographical Conventions  ... 22
  77430.  _t_m__y_d_a_y  ... 48                        TZ
  77431.  _t_m__y_e_a_r  ... 48                           variable  ... 121, 446, 448,
  77432.  TOC  ... 909, 913, 927                       451, 464, 598, 669, 758-759,
  77433.  Token Recognition  ... 224, 979              761
  77434.  token
  77435.     definition of  ... 219
  77436.  TOKEN  ... 279-281, 896-897            U
  77437.  tolower  ... 77, 80, 82, 320, 336,
  77438.     339, 349, 354, 455, 765, 767        UCHAR_MAX  ... 636
  77439.  TOSTOP  ... 730                        UCS  ... 974
  77440.  touch                                  UINT_MAX  ... 636
  77441.     - Change file access and            {ULONG_MAX}  ... 207
  77442.        modification times  ... 756,     ULONG_MAX  ... 636
  77443.        992                              umask
  77444.         ... 166, 181, 602, 756-762,        - Get or set the file mode
  77445.        820                                    creation mask  ... 775, 992
  77446.     definition of  ... 756                     ... 6, 58-59, 289-290,
  77447.  toupper  ... 77, 79-80, 82, 115,             775-779
  77448.     320, 336, 339, 349, 354, 455,          definition of  ... 775
  77449.     765, 767                            uname
  77450.  tr                                        - Return system name  ... 780,
  77451.     - Translate characters                    992
  77452.         ... 762, 992                           ... 780-783
  77453.         ... 68, 147, 762-764,              definition of  ... 780
  77454.        767-769                          _u_n_a_m_e()  ... 780, 784
  77455.     definition of  ... 762              undefined
  77456.  trap                                      definition of  ... 27
  77457.     - Trap signals  ... 311             undefined  ... 16-17, 27, 48, 54,
  77458.         ... 289, 312-313                   65, 69
  77459.     definition of  ... 311              UNDEFINED  ... 89-92, 111, 117
  77460.  Trojan Horse  ... 604                  undefined  ... 129-131, 134-135,
  77461.  true                                      137, 139, 149-150, 159-160,
  77462.     - Return true value  ... 770,          173, 175-176, 186, 188, 195,
  77463.        992                                 198, 200, 212, 222-223, 235-
  77464.         ... 19, 58, 60, 247, 258,          236, 243, 302, 306, 311, 319,
  77465.        770-771                             325, 327-328, 330-331, 333-334,
  77466.     definition of  ... 770                 336, 338, 347-348, 350, 357,
  77467.  tty                                       368-370, 373, 377-379, 381-382,
  77468.     - Return user's terminal name          388, 391, 416, 420, 484, 487,
  77469.         ... 772, 992                       497, 499, 513, 521, 528, 530-
  77470.         ... 772-775                        531, 539, 544, 555, 561, 589,
  77471.     definition of  ... 772                 591, 624, 685, 702, 707, 717,
  77472.                                            766, 801, 809-811, 816, 822,
  77473.  
  77474.  
  77475.                Copyright c 1991 IEEE.  All rights reserved.
  77476.       This is an unapproved IEEE Standards Draft, subject to change.
  77477.  
  77478.  
  77479.  
  77480.  
  77481.  
  77482.  1144                                             Alphabetic Topical Index
  77483.  
  77484.  
  77485.  
  77486.  
  77487.  
  77488.                                                              P1003.2/D11.2
  77489.  
  77490.     857, 872, 875, 878, 880, 884,          591-596, 605-607, 610, 621,
  77491.     891, 894, 910, 916, 923-925,           623, 629, 632, 638, 649-651,
  77492.     929-931, 947, 950, 952, 1045           653, 657, 666, 674-675, 689-
  77493.  Undo Command  ... 493                     690, 699-702, 705, 708, 718,
  77494.  unfunction  ... 314                       724-727, 732-733, 735, 737,
  77495.  UNION  ... 896-897                        741, 748, 758, 765-766, 768,
  77496.  uniq                                      775-776, 779, 785, 792-793,
  77497.     - Report or filter out repeated        799, 801, 810-811, 814, 819-
  77498.        lines in a file  ... 784,           820, 822, 826, 828, 838, 840-
  77499.        992                                 841, 844-845, 856-858, 860-862,
  77500.         ... 784, 786-789                   864, 866, 868-870, 874, 879-
  77501.     definition of  ... 784                 880, 882, 884, 886, 888, 895,
  77502.  <unistd.h>  ... 22, 861, 912,             901-902, 912, 918, 923, 931,
  77503.     915-916, 955, 957                      937, 939, 945, 947, 950, 955,
  77504.  UNIX  ... 3-11, 54, 56, 67, 71,           958, 960, 963-966, 968-972
  77505.     93, 151, 161, 179, 207, 210,        until  ... 272, 275, 296, 298, 307
  77506.     277, 295, 408, 761, 975, 977,          Loop  ... 275
  77507.     980-981                             UPE  ... 59, 124, 168, 189, 216,
  77508.  _u_n_l_i_n_k()  ... 166, 181, 432, 566,         218, 228, 232, 278, 385, 428,
  77509.     687                                    565, 707, 711-712, 736, 794,
  77510.  _u_n_p_u_t()  ... 880                          980, 984, 986
  77511.  unset                                  UPPER_CASE  ... 88
  77512.     - Unset values and attributes       UPPER-CASE  ... 116-117
  77513.        of variables and functions       UPPER  ... 117
  77514.         ... 314                         Usage
  77515.         ... 228, 304, 310, 314-315,        Examples  ... 548, 581, 608,
  77516.        428                                    740
  77517.     definition of  ... 314              USD  ... 117
  77518.  unspecified                            USENET  ... 469
  77519.     definition of  ... 27               user database
  77520.  unspecified  ... 16-17, 27, 29-30,        definition of  ... 51
  77521.     32, 35, 40, 42-43, 50, 54, 61,      user ID
  77522.     70, 72, 79, 96-97, 99-101,             definition of  ... 51
  77523.     104-106, 120-123, 133, 149,            effective  ... 34
  77524.     158, 167, 184, 186-187, 189,           real  ... 47
  77525.     191-192, 194-196, 209, 211,            saved set-  ... 48
  77526.     215, 217, 219, 223, 227-228,        user name
  77527.     233, 235-236, 238, 243, 245,           definition of  ... 51
  77528.     250, 252-253, 258-259, 261-262,     User Portability Utilities Option
  77529.     272, 280-281, 288, 292, 294,            ... 807, 993
  77530.     301, 304-305, 314, 323, 326,        user
  77531.     328, 331, 334-335, 357, 371,           definition of  ... 54
  77532.     379, 386, 399, 419-420, 431,        USER
  77533.     433-434, 436-438, 445, 449-450,        variable  ... 125
  77534.     452, 454-455, 461, 467, 474-        User-Defined Functions  ... 338
  77535.     475, 485, 489, 492, 496-497,        user-defined ordering of collating
  77536.     506, 508-509, 517, 519, 522,           elements  ... 83
  77537.     525, 530, 532 -535, 539, 554,
  77538.     560, 571, 580, 583-584, 589,
  77539.  
  77540.  
  77541.                Copyright c 1991 IEEE.  All rights reserved.
  77542.       This is an unapproved IEEE Standards Draft, subject to change.
  77543.  
  77544.  
  77545.  
  77546.  
  77547.  
  77548.  Alphabetic Topical Index                                             1145
  77549.  
  77550.  
  77551.  
  77552.  
  77553.  
  77554.  P1003.2/D11.2
  77555.  
  77556.  USHORT_MAX  ... 636                       false  ... 509
  77557.  /usr  ... 126, 659                        find  ... 511
  77558.  /usr/bin  ... 126                         fold  ... 521
  77559.  /usr/lib  ... 126                         for  ... 271
  77560.  /usr/lib/libc.a  ... 866                  fort77  ... 964
  77561.  /usr/lib/libf.a  ... 971                  getconf  ... 526
  77562.  /usr/local  ... 126                       getopts  ... 531
  77563.  /usr/local/bin  ... 181                   grep  ... 537
  77564.  /usr/man  ... 126                         head  ... 545
  77565.  /usr/tmp  ... 126                         id  ... 549
  77566.  ustar  ... 660                            if  ... 273
  77567.  UTC0  ... 446                             join  ... 554
  77568.  UTC  ... 451, 758, 761                    kill  ... 559
  77569.  utilities                                 lex  ... 868
  77570.     [  ... 745                             ln  ... 566
  77571.     ar  ... 809                            locale  ... 570
  77572.     asa  ... 960                           localedef  ... 577
  77573.     awk  ... 317                           logger  ... 583
  77574.     basename  ... 358                      logname  ... 586
  77575.     bc  ... 362                            lp  ... 589
  77576.     break  ... 296                         ls  ... 595
  77577.     c89  ... 856                           mailx  ... 605
  77578.     case  ... 272                          make  ... 818
  77579.     cat  ... 383                           mkdir  ... 610
  77580.     cd  ... 388                            mkfifo  ... 614
  77581.     chgrp  ... 392                         mv  ... 617
  77582.     chmod  ... 395                         nohup  ... 623
  77583.     chown  ... 405                         od  ... 627
  77584.     cksum  ... 409                         paste  ... 637
  77585.     cmp  ... 416                           pathchk  ... 642
  77586.     colon  ... 297                         pax  ... 648
  77587.     comm  ... 420                          pr  ... 665
  77588.     command  ... 424                       printf  ... 672
  77589.     continue  ... 298                      pwd  ... 679
  77590.     cp  ... 430                            read  ... 682
  77591.     cut  ... 440                           readonly  ... 304
  77592.     date  ... 445                          return  ... 305
  77593.     dd  ... 452                            rm  ... 686
  77594.     diff  ... 462                          rmdir  ... 692
  77595.     dirname  ... 471                       sed  ... 695
  77596.     dot  ... 299                           set  ... 306
  77597.     echo  ... 475                          sh  ... 706
  77598.     ed  ... 479                            shift  ... 310
  77599.     env  ... 498                           sleep  ... 713
  77600.     eval  ... 300                          sort  ... 716
  77601.     exec  ... 301                          strip  ... 844
  77602.     exit  ... 302                          stty  ... 725
  77603.     export  ... 303                        tail  ... 736
  77604.     expr  ... 503                          tee  ... 742
  77605.  
  77606.  
  77607.                Copyright c 1991 IEEE.  All rights reserved.
  77608.       This is an unapproved IEEE Standards Draft, subject to change.
  77609.  
  77610.  
  77611.  
  77612.  
  77613.  
  77614.  1146                                             Alphabetic Topical Index
  77615.  
  77616.  
  77617.  
  77618.  
  77619.  
  77620.                                                              P1003.2/D11.2
  77621.  
  77622.     test  ... 745                       VEOF  ... 730
  77623.     touch  ... 756                      VEOL  ... 730
  77624.     tr  ... 762                         VERASE  ... 730
  77625.     trap  ... 311                       Version 7  ... 3, 216, 277, 402,
  77626.     true  ... 770                          462, 495, 705, 753
  77627.     tty  ... 772                        VERSION  ... 204, 957-958
  77628.     umask  ... 775                      <vertical-tab>
  77629.     uname  ... 780                         definition of  ... 52
  77630.     uniq  ... 784                       vi  ... 273, 609, 934, 983
  77631.     unset  ... 314                      VIII  ... 451
  77632.     wait  ... 790                       VII  ... 451
  77633.     wc  ... 795                         VINTR  ... 730
  77634.     while  ... 274-275                  VISUAL
  77635.     xargs  ... 799                         variable  ... 125, 315
  77636.     yacc  ... 885                       VISUAL  ... 315
  77637.  Utility Argument Syntax  ... 172       VKILL  ... 730
  77638.  Utility Conventions  ... 172, 979      VM/CMS  ... 3
  77639.  Utility Description Defaults           VMS  ... 3
  77640.      ... 182, 979                       VQUIT  ... 730
  77641.  Utility Limit Minimum Values           VSTART  ... 730
  77642.      ... 205                            VSTOP  ... 730
  77643.  Utility Syntax Guidelines  ... 177     VSUSP  ... 730
  77644.  utility
  77645.     definition of  ... 51
  77646.  _u_t_i_m_b_u_f  ... 757                       W
  77647.  _u_t_i_m_e()  ... 756
  77648.  UUCP  ... 8, 987                       wait
  77649.                                            - Await process completion
  77650.                                                ... 790, 992
  77651.  V                                             ... 58-59, 288, 560,
  77652.                                               790-794
  77653.  Valid Character Class Combinations        definition of  ... 790
  77654.      ... 81                             _w_a_i_t()  ... 256, 794, 920-921,
  77655.  validfnam  ... 647                        923, 926
  77656.  variable assignment [assignment]       _w_a_i_t_p_i_d()  ... 23, 794, 918, 920-
  77657.     definition of  ... 219                 921, 923, 925-926
  77658.  variable                               wc  ... 184, 795-796, 798
  77659.     definition of  ... 219                 definition of  ... 795
  77660.  Variable-Length Character              WEXITSTATUS  ... 256
  77661.     Mnemonics  ... 1047                 WG15  ... 56
  77662.  VARIABLE  ... 314                      while  ... 261, 272, 274-275, 287,
  77663.  Variables and Special Variables           296, 298, 307, 324, 356, 510,
  77664.      ... 326                               648
  77665.  Variables  ... 231                        definition of  ... 274-275
  77666.  VAR  ... 508                              Loop  ... 274
  77667.  VAX-11  ... 975                        white space
  77668.  VAX  ... 10                               definition of  ... 52
  77669.  
  77670.  
  77671.  
  77672.  
  77673.                Copyright c 1991 IEEE.  All rights reserved.
  77674.       This is an unapproved IEEE Standards Draft, subject to change.
  77675.  
  77676.  
  77677.  
  77678.  
  77679.  
  77680.  Alphabetic Topical Index                                             1147
  77681.  
  77682.  
  77683.  
  77684.  
  77685.  
  77686.  P1003.2/D11.2
  77687.  
  77688.  Word Expansions  ... 233, 979          X/Open  ... 10-11, 94, 153-154,
  77689.  word                                      423, 975, 980
  77690.     definition of  ... 219              XPG3  ... 424, 769, 840
  77691.  _w_o_r_d_e_x_p()  ... 851, 949-954            XPG  ... 769
  77692.     definition of  ... 949
  77693.     _f_l_a_g_s Argument  ... 951
  77694.     Return Values  ... 952              Y
  77695.  <wordexp.h>  ... 950, 952
  77696.  _w_o_r_d_e_x_p__t                              yacc
  77697.     definition of  ... 950                 - Yet another compiler compiler
  77698.  _w_o_r_d_f_r_e_e()  ... 851, 949-952, 954             ... 885, 995
  77699.  WORD  ... 279-282, 284-287                    ... 24, 28, 50, 188, 840,
  77700.  working directory                            861, 866, 868, 885-895,
  77701.     definition of  ... 52                     898-906
  77702.  WRDE_APPEND  ... 950-951                  definition of  ... 885
  77703.  WRDE_BADCHAR  ... 952                     Internal Limits  ... 903
  77704.  WRDE_BADVAL  ... 952                      Library  ... 901
  77705.  WRDE_CMDSUB  ... 952                   YACC  ... 832-833
  77706.  WRDE_DOOFFS  ... 950-952               yesexpr  ... 29, 106, 118, 435,
  77707.  WRDE_NOCMD  ... 950, 952-953              516, 576, 620, 656, 688
  77708.  WRDE_NOSPACE  ... 952                  YFLAGS  ... 832-833
  77709.  WRDE  ... 911, 952                     y.output  ... 886, 906-907
  77710.  WRDE_REUSE  ... 950-951, 954           y.tab.c  ... 886, 906
  77711.  WRDE_SHOWERR  ... 950, 952-954         y.tab.h  ... 840, 886, 906
  77712.  WRDE_SYNTAX  ... 952                   YYABORT  ... 900
  77713.  WRDE_UNDEF  ... 950, 952               YYACCEPT  ... 900
  77714.  Write Command  ... 493                 YYDEBUG  ... 901-902
  77715.  write                                  _y_y_e_r_r_o_r()  ... 886, 889, 901
  77716.     definition of  ... 52               YYERROR  ... 899-900
  77717.  _w_r_i_t_e()  ... 36, 867, 971              _y_y_l_e_x()  ... 872, 874, 879-880,
  77718.                                            884, 886, 889, 895, 900-902,
  77719.                                            905
  77720.  X                                      _y_y_p_a_r_s_e()  ... 886, 888, 901
  77721.                                         YYRECOVERING  ... 899
  77722.  X/2047  ... 497                        YYSTYPE  ... 888, 892-894, 905
  77723.  X.400  ... 608                         _y_y_w_r_a_p()  ... 880
  77724.  X.400  ... 608
  77725.  xarg  ... 805
  77726.  xargs
  77727.     - Construct argument list(s)
  77728.        and invoke utility  ... 799,
  77729.        992
  77730.         ... 53, 58, 257, 428, 501,
  77731.        626, 799-805, 986
  77732.     definition of  ... 799
  77733.  xd  ... 634
  77734.  XII  ... 451
  77735.  
  77736.  
  77737.  
  77738.  
  77739.                Copyright c 1991 IEEE.  All rights reserved.
  77740.       This is an unapproved IEEE Standards Draft, subject to change.
  77741.  
  77742.  
  77743.  
  77744.  
  77745.  
  77746.  1148                                             Alphabetic Topical Index
  77747.  
  77748.  
  77749.  
  77750.  
  77751.  
  77752.                                                              P1003.2/D11.2
  77753.  
  77754.                               Acknowledgments
  77755.  
  77756.  We wish to thank the following organizations for donating significant
  77757.  computer, printing, and editing resources to the production of this
  77758.  standard:  Amdahl Corporation, AT&T, Concurrent Computer Corporation, the
  77759.  POSIX Software Group, UniSoft Corporation, and the X/Open Group.
  77760.  
  77761.  This document was also approved by ISO/IEC JTC 1/SC22/WG15 as
  77762.  ISO/IEC 9945-2:199x.  The IEEE wishes to thank the advisory groups of the
  77763.  National Bodies participating in WG15 for their contributions:  Austria,
  77764.  Belgium, Canada, Denmark, France, Germany, Japan, Netherlands, United
  77765.  Kingdom, USA, and USSR.
  77766.  
  77767.  The IEEE also wishes to thank the delegates to WG15 for their
  77768.  contributions:
  77769.  
  77770.  AUSTRIA                  Yves Delarue          UK
  77771.  Gerhard Schmitt          Eric Dumas            Nigel Bevan
  77772.  Wolfgang Schwabl         Maurice Fathi         Cornelia Boldyreff
  77773.                           Gerald Krummeck       Dave Cannon
  77774.  CANADA                   Herve Schauer         Don Chacon
  77775.  Joe Cote                 Hubert Zimmerman      Dominic Dunlop
  77776.  Patrick Dempster                               David Flint
  77777.  George Kriger            GERMANY               Don E. Folland
  77778.  Bernard Martineau        Ron Elliot            Martin Kirk
  77779.  Major Douglas J. Moore   Helmut Stiegler       Neil Martin
  77780.  Arnie Powell             Claus Unger           Brian Meek
  77781.  Paul Renaud              Rainer Zimmer         Kevin Murphy
  77782.  Richard Sniderman                              Ian Newman
  77783.                           IRELAND               Philip Rushton
  77784.  CEC                      Hans-Jurgen Kugler
  77785.  Phil Bertrand                                  USA
  77786.  Manuel Carbajo           JAPAN                 Robert Bismuth
  77787.  Michel Colin             Hiromichi Kogure      Steven L. Carter
  77788.                           Shigekatsu Nakao      Terence S. Dowling
  77789.  DENMARK                  Yasushi Nakahara      Ron Elliott
  77790.  Peter E. Cordsen         Nobuo Saito           Dale Harris
  77791.  Isak Korn                                      John Hill
  77792.  Keld Simonsen            NETHERLANDS           James D. Isaak
  77793.  Claus Tondering          J. Van Katwijk        Hal Jespersen
  77794.                           Willem Wakker         Roger J. Martin
  77795.  FINLAND                  H.J. Weegenaar        Shane McCarron
  77796.  Jikka Haikala                                  Barry Needham
  77797.                           SWEDEN                Donn S. Terry
  77798.  FRANCE                   Mat Linder            Alan Weaver
  77799.  Pascal Beyles
  77800.  Christophe Binot                               USSR
  77801.  Claude Bourstin                                V. Koukhar
  77802.  Jean-Michel Cornu                              Ostapenko Georgy Pavlovich
  77803.  
  77804.  
  77805.  
  77806.  
  77807.  
  77808.  
  77809.  
  77810.  
  77811.  
  77812.                                                                       1149
  77813.  
  77814.  
  77815.  
  77816.  
  77817.  
  77818.  P1003.2/D11.2
  77819.  
  77820.  Also we wish to thank the organizations employing the members of the
  77821.  Working Group and the Balloting Group for both covering the expenses
  77822.  related to attending and participating in meetings, and donating the time
  77823.  required both in and out of meetings for this effort.
  77824.  
  77825.  3M Company                                       Mallinckrodt Institute
  77826.  ACE Associated Computer Experts b.v.             Martin Marietta Data Systems
  77827.  Aeon Technologies, Inc.                          Masscomp
  77828.  Alis Development                                 Mercury Computer Systems
  77829.  Amdahl Corporation*                              Microsoft Corporation
  77830.  Apollo Computer Inc.                             Mindcraft, Inc.
  77831.  Apple Computer Inc.                              Mitsubishi Electric Corporation
  77832.  Ardent Computer                                  Mortice Kern Systems Inc.
  77833.  AT&T*                                            Motorola Inc.
  77834.  AT&T Bell Laboratories                           Myrias Research Corporation
  77835.  AT&T UNIX Pacific Co., Ltd.                      NAPS International
  77836.  Axon Data Information Systems                    NASA-KSC
  77837.  BBN Communications Corporation                   National Institute of Standards and Technology
  77838.  Bell Communications Research                     Naval Postgraduate School
  77839.  BNR, Inc.                                        NCR Corporation*
  77840.  Bolt Beranek & Newman                            Northern Telecom, Inc.
  77841.  BP Research International                        Novell, Inc.
  77842.  British Telecom                                  Ohio State University
  77843.  British Telecom Research Labs                    Pacific Marine Tech
  77844.  Charles River Data Systems*                      POSIX Software Group
  77845.  Chemical Abstracts Service                       PRC
  77846.  Chorus Systemes                                  Prime Computer, Inc.
  77847.  Commission of the European Communities           R&D Associates
  77848.  Computer X, Inc.                                 Rabbit Software Corporation
  77849.  Concurrent Computer Corporation*                 ROLM Mil Spec Computers
  77850.  Control Data Corporation*                        Sandia National Laboratory*
  77851.  Convergent Technologies                          Santa Cruz Operation Inc.
  77852.  Convex Computer Corporation                      Saudia National Labs
  77853.  Cray Research, Inc.*                             Sequent
  77854.  Cyber-Dyne, Inc.                                 Shia Systems Inc.
  77855.  Datapoint Corporation                            Simpact Associates, Inc.
  77856.  Data General Corporation                         SoHar
  77857.  Digital Equipment Corporation*                   Sphinx Ltd.
  77858.  Digital ETU                                      St. Lawrence College
  77859.  Douglas Aircraft Company                         Stellar Computer Inc.
  77860.  Electrospace Systems, Inc.                       Sun Microsystems, Inc.*
  77861.  Emerging Technology Group Inc.                   Syntactics
  77862.  Emory University Computing Center                Tandem Computers Inc.
  77863.  Encore Computer                                  Technical University of Vienna
  77864.  ETA Systems, Inc.                                Tektronix, Inc.*
  77865.  Federal Judicial Center                          Texas Instruments
  77866.  Ford Motor Company                               The Instruction Set Ltd.
  77867.  Free Software Foundation                         The MITRE Corp
  77868.  General Electric Corporation                     Toshiba Corporation
  77869.  Georgia Institute of Technology                  UFPb-GRC
  77870.  
  77871.  
  77872.  
  77873.  
  77874.  
  77875.  
  77876.  
  77877.  
  77878.  1150
  77879.  
  77880.  
  77881.  
  77882.  
  77883.  
  77884.                                                              P1003.2/D11.2
  77885.  
  77886.  Gilbert International Inc.                       UniForum*
  77887.  Gould CSD                                        UniSoft Corporation
  77888.  Harris Corporation                               UniSoft Ltd.
  77889.  HCR Corporation                                  Unisys Corporation*
  77890.  Hewlett-Packard Company*                         University Of California, Berkeley
  77891.  Honeywell Bull, Inc.                             University of Hong Kong
  77892.  HQ USAISC                                        University of Indonesia
  77893.  Hughes Aircraft Co.                              University of Maryland
  77894.  IBM Corporation*                                 University of Texas at Arlington
  77895.  IBM Japan                                        University of Utah
  77896.  IBM Systems Integration Division                 University of Victoria
  77897.  Icon International, Inc.                         University of Vienna
  77898.  Intel                                            USAF
  77899.  Interactive Systems Corporation                  USAISEC
  77900.  Ironwood Software                                USENIX Association*
  77901.  KAIST                                            US Army
  77902.  Lachman Associates, Inc.                         US Army Ballistic Research Lab.
  77903.  Lawrence Livermore National Lab                  US Army Computer Engineering Center
  77904.  Loral Rolm MilSpec Computers                     US West Advanced Technologies
  77905.  Lotus Development Corporation                    Videoton
  77906.  Mahavishi International University               Wang Laboratories
  77907.  Whitesmiths, Ltd.                                X/Open Company Ltd.
  77908.  Woods Hole Oceanographic Inst.                   XIOS Systems Corporation
  77909.  
  77910.  In the preceding list, the organizations marked with an asterisk (*) have
  77911.  hosted 1003 Working Group meetings since the group's inception in 1985,
  77912.  providing useful logistical support for the ongoing work of the
  77913.  committees.
  77914.  
  77915.  
  77916.  
  77917.  
  77918.  
  77919.  
  77920.  
  77921.  
  77922.  
  77923.  
  77924.  
  77925.  
  77926.  
  77927.  
  77928.  
  77929.  
  77930.  
  77931.  
  77932.  
  77933.  
  77934.  
  77935.  
  77936.  
  77937.  
  77938.  
  77939.  
  77940.  
  77941.  
  77942.  
  77943.  
  77944.                                                                       1151
  77945.  
  77946.  
  77947.  
  77948.  
  77949.  
  77950.  
  77951.  
  77952.  
  77953.  
  77954.  
  77955.  
  77956.  
  77957.  
  77958.  
  77959.  
  77960.  
  77961.  
  77962.  
  77963.  
  77964.  
  77965.  
  77966.  
  77967.  
  77968.  
  77969.  
  77970.  
  77971.  
  77972.  
  77973.  
  77974.  
  77975.  
  77976.  
  77977.  
  77978.  
  77979.  
  77980.  
  77981.  
  77982.  
  77983.  
  77984.  
  77985.  
  77986.  
  77987.  
  77988.  
  77989.  
  77990.  
  77991.  
  77992.  
  77993.  
  77994.  
  77995.  
  77996.  
  77997.  
  77998.  
  77999.  
  78000.  
  78001.  
  78002.  
  78003.  
  78004.  
  78005.  
  78006.  
  78007.  
  78008.  
  78009.  
  78010.  
  78011.  
  78012.  
  78013.